本文学习k8s参考内容:http://docs.kubernetes.org.cn/126.html,学习过程中遇到一些坑,记录如下:
----------------------------------------------------------------------------------
  k8s目前最好是用linux进行部署,windows跟mac现在虽然有k8s的版本但用起来会有一些问题。最近在自己本地mbp上部署k8s的时候绕了一些弯路,特此记录。
mac上比较方便的一点是docker for mac上集成了k8s,所以直接利用docker for mac安装k8s即可,安装完成后启动,会自动启动一个只有1个节点的k8s集群。好处是不用配了,可以直接使用kubectl命令进行相关操作,坏处是无法自己配多节点集群(mac上的k8s功能是不全的)。
  另一种使用方式是minikube,这个借助于virtualBox或者VMware可以使用多节点伪集群,遗憾的是,经过测试发现minikube在mac上存在bug。
minikube介绍:
  minikube的github官方介绍:
  Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes or develop with it day-to-day.(Minikube是一种工具,可以在本地轻松运行Kubernetes。Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户使用。)
  启动minikube,从控制台也可以看到,启动的时候下载了一个ISO镜像文件,具体运行使用的vm技术由--vm-driver指定。
minikube试过的坑:
  中文官方教程的minikube是在osx系统进行的,但实际按照教程,并不能完整走完整个流程。
第一个错误在minikube启动的时候,所给的命令是minikube start --vm-driver=xhyve,bhyve是FreeBSD下的虚拟技术,xhyve是在基于bhyve的osx版本,体积非常小,只有230k,可以当做virtualBox,VMware Function之外的虚拟机使用。这个命令是设置k8s集群使用虚拟技术为xhybe,它的值包括virtualbox、xhyve、vmwarefusion,默认是virtualbox。该命令最终不能正常
  1、网络不通
  官方原版minikube,本地蓝灯代理,会报错:minikube start --vm-driver=xhyve --docker-env HTTP_PROXY=http://代理ip:端口号 --docker-env HTTPS_PROXY=http://代理ip:端口号

  有一个warning,大意是说xhyve已经被废弃了,后续版本将删除,建议使用hyperkit。报错内容是下载kubelet失败,莫非我代理设置的不对?
  2、国内版本,按照社区的介绍进行启动,会报错
  采用阿里云版本:启动minikube,会停留在starting cluster components......很长时间,最终报异常:

  这个看上去是k8s的代理不能正常启动导致的。没找到解决办法。
  3、正常启动的,无法获取对外网络ip地址
  既然上边有warning提示,那就按照提示用hyperkit吧。安装docker-machine-driver-hyperkit后,minikube start --vm-driver=hyperkit启动,可以启动,但对外暴露的ip是无法获取的:

  minikube start --bootstrapper localkube也是可以启动minikube的,只是要安装virtualBox,最后对外暴露端口问题一样无法解决。
  如果不在外部访问应用,这个倒是也没啥影响,而且教程中所给示例也是这样的。有文章说显示为pending的时候,等一分钟就好,试过了等了好几分钟,仍然这样。
使用docker自带的k8s:
  为啥使用minikube呢,因为当时选的学习教程用的minikube,由于是官方教程,没有丝毫怀疑,结果撞的头破血流。使用minikube不就是为了一个集群环境么,docker for mac已经自带了k8s,而且启动自带一个单节点集群,直接使用岂不美哉?
  因为教程中先把执行环境设置为了minikube,需要先把环境切换为k8s,docker for mac 上右键即可:

  可以看到地址正常了:

  资源删除:
  kubectl delete service hello-node
  kubectl delete deployment hello-node

 
 
 
 

mac上k8s学习踩坑的更多相关文章

  1. 使用Windows下的git工具往github上传代码 踩坑记录

    使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...

  2. iOS自动化打包上传的踩坑记

    http://www.cocoachina.com/ios/20160624/16811.html 很久以前就看了很多关于iOS自动打包ipa的文章, 看着感觉很简单, 但是因为一直没有AppleDe ...

  3. react学习 | 踩坑指南

    react样式模块化的"omit -loader"坑 众所周知 react样式的模块化(css modules) 是自己模块中写自己的css,与其他模块互补影响,解决了命名冲突和全 ...

  4. appium mac 下 安装及踩坑

    Appium Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver的json ...

  5. 在React中使用WebUploader实现大文件分片上传的踩坑日记!

    前段时间公司项目有个大文件分片上传的需求,项目是用React写的,大文件分片上传这个功能使用了WebUploader这个组件. 具体交互是: 1. 点击上传文件button后出现弹窗,弹窗内有选择文件 ...

  6. SpringBoot + SpringCloud学习踩坑实记

     踩的坑: 1).springcloud框架中,依赖一直报错,很可能是没有添加springcloud的依赖,或者是依赖的版本号过低.并且springboot也有一个父依赖. 2.springcloud ...

  7. 关于在Mac上安装模拟器的坑比~~~~~

    没有人比我更坑了~~就安装一个简单的模拟器花了我一天时间~~我去~~~ 但是最后还是安装好了~~真的是活久见~~好吧~~ 废话不多说先上安装好的图~炫耀一下~ ~ ok!要实现这样的效果~你需要下载虚 ...

  8. ROS机器人系统学习——踩坑之路

    推荐学习教程:深蓝学院 机器人操作系统ROS理论与实践学习 在学习到第2讲ROS基础的分布式通信时,一直卡在这里,主机开启小海龟后,从机虽然可以通过 rostopic list 列出当前的所有topi ...

  9. Mac上的学习神器:Marginnote

    https://marginnote.com/?lang=zh-hans 技巧1:合并 多选编辑 - 按顺序选择多个块 - 左下角菜单 - 合并 技巧2:管理顺序 双击图片并且按住不放,即可拖拽顺序 ...

随机推荐

  1. HackOne

    使用 weight 属性实现视图的居中显示 一.在开发中有时候会遇到将一个控件在父控件居中显示.但是如果你直接用margin_*来进行限制的话就可能造成对于不同的型号的手机又不同显示的格式. 所以就可 ...

  2. C#三层架构搭建

    一.简介 主要分为:界面层(User Interface layer),业务逻辑层(Business Logic Layer),数据访问层(Data access layer) 1.作用 界面层(UI ...

  3. javascript中var that=this

    在JavaScript中,this代表的是当前对象. $(‘#conten').click(function(){ //this是被点击的#conten var that = this; $(‘.co ...

  4. [SinGuLaRiTy] 复习模板-数据结构

    [SinGuLaRiTy-1040] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 二维线段树 2D_Segment_Tree //示例:单 ...

  5. kali linux之本地提权

    已实现本地低权限帐号登录,希望获取更高权限,实现对目标进一步控制 系统帐号之间权限隔离(操作系统安全的基础,用户空间,内核空间) 系统帐号(用户帐号登录时获取权限令牌,服务帐号无需用户登录已在后台启动 ...

  6. 修改stl::set相关源码,提供有序属性值的查找接口

    普通的stl::set,查找时只能传入key_type. 不能使用属性值查找. 例如: /* an employee record holds its ID, name and age */ clas ...

  7. Unity---动画系统学习(1)---在状态机中简单控制物体运动

    1. 介绍 新建一个GameObject-Cube,在Window下添加Animation(快捷键ctrl+6).会添加用于播放动画的三个东西.物体上的Animator组件.Animator Cont ...

  8. sql 表字段模糊连接

    select AreauserCode,RtuName from TB_AreaUser as tau right join TB_MaintenanceInfo inf on inf.RtuName ...

  9. Chrome浏览器如何完美实现滚动截图技巧

    一.前言 我们平时在浏览网页时,想把碰到好的网页内容或者文章截屏保存,但是网页的长度常常会超出屏幕高度,一般的截屏功能只能截取显示在屏幕上的内容,那我们该如何方便快捷截取全部内容?今天就分享一个如何利 ...

  10. R语言结果输出方法

    输出函数:cat,sink,writeLines,write.table 根据输出的方向分为输出到屏幕和输出到文件. 1.cat函数即能输出到屏幕,也能输出到文件. 使用方式:cat(... , fi ...