本文学习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. DPF.Android.Native.Components.v2.8.1 for delphi xe6 使用DPFJAlertDialog遇到的问题

    使用DPFJAlertDialog控件时发现DPFJAlertDialog1Click不能捕获到对话框到底按了那个按键,上网搜索后找到了解决方法: 打开DPF.Android.JAlertDialog ...

  2. Android Hander、Looper、Message三者之间的联系

    1.首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象:因为Looper.prepare()在一个线程中只能调用一次,所以Mess ...

  3. spring的一些配置和重要的接口和类

    spring的配置文件 通常是applicationContext.xml(具体的bean配置会在后面内容中详解) setter方法注入: <property name=“” value=“ja ...

  4. C# DataGridView控件动态添加新行

    C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...

  5. 在iis7.5上部署asp.net mvc5

    部署mvc5跟部署mvc4是一样的,唯一不同的是需要修改一下web.config的配置 在web.config中加入一下节点即可 <system.webServer> <module ...

  6. C#ADO.NET基础一

    简介 使用SQLite进行讲解 1.基础类: SQLiteConnection 连接数据库 SQLiteCommand 执行命令(增,删,改,查),或存储过程 SQLiteDataReader 读取查 ...

  7. kubernetes dashboard 安装

    环境:CentOS Linux release 7.3.1611 (Core)IP:192.168.0.103 [1]组件安装yum install device-mapperyum install ...

  8. Duration Assertion(持续时间)

    Duration Assertion用来测试每一个响应的时间是否小于给定的值,任何超过给定毫秒数的响应都会标记为失败. Duration in milliseconds:响应的持续时间是否在给定的值范 ...

  9. 洛谷P2762 太空飞行计划问题(最小割)

    传送门 我们可以把实验放在左边,仪器放在右边,点有点权,然后连对应的有向边,就是求一个最大权闭合图,可以转化为最小割来做(关于这具体是个啥……可以百度胡伯涛<最小割模型在信息学竞赛中的应用> ...

  10. 【spring】@Qualifier注解

    近期在捯饬spring的注解,现将遇到的问题记录下来,以供遇到同样问题的童鞋解决~ 先说明下场景,代码如下: 有如下接口: public interface EmployeeService { pub ...