使用vagrant和virtualbox在mac上安装Kubernetes

Mar*_*lly 6 macos virtualbox vagrant kubernetes

这是我第一次尝试安装和使用Kubernetes.我正在尝试在Mac上安装一个环境来开发我自己的应用程序并将它们部署在Kubernetes本地进行测试.我熟悉使用Vagrant,VirtualBox和Docker用于同样的目的.当我看到这个页面时https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/getting-started-guides/vagrant.md我认为这将是微不足道的.我执行了这些行:

export KUBERNETES_PROVIDER=vagrant
curl -sS https://get.k8s.io | bash
Run Code Online (Sandbox Code Playgroud)

这创建了一个主VM和一个Minion,但是Kubernetes似乎未能在master上启动.在master/var/log/salt/master上有很多python Traceback错误,如下所示:

2015-07-17 22:14:42,629 [cherrypy.error   ][INFO    ][3252] [17/Jul/2015:22:14:42] ENGINE Started monitor thread '_TimeoutMonitor'.
2015-07-17 22:14:42,736 [cherrypy.error   ][ERROR   ][3252] [17/Jul/2015:22:14:42] ENGINE Error in HTTP server: shutting down
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/cherrypy/process/servers.py", line 187, in _start_http_thread
self.httpserver.start()
  File "/usr/lib/python2.7/site-packages/cherrypy/wsgiserver/wsgiserver2.py", line 1824, in start
    raise socket.error(msg)
error: No socket could be created
Run Code Online (Sandbox Code Playgroud)

Vagrant是版本1.7.3.VirtualBox是版本4.3.30

我犯了一个明显的愚蠢错误吗?

小智 1

我还不知道解决办法,但我知道出了什么问题,因为它也发生在我身上:

  • 操作系统 X 10.10.3
  • 流浪者1.7.4
  • 虚拟盒 4.3.30
  • 库伯内特斯 1.0.1

当我运行它的默认配置(创建一个“master”和一个“minion”VM)时,我看到静态 IP 地址没有分配给“eth1”接口,而且我还看到 Salt API 服务器是似乎处于无限重试循环中,因为它正在尝试侦听该 IP 地址。

此外,在启动过程中出现以下消息:

[vagrant@kubernetes-master ~]$ dmesg | grep eth1
[    9.321496] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
Run Code Online (Sandbox Code Playgroud)

所以基本上,静态 IP 地址没有被分配,因为系统第一次启动时 eth1 还没有准备好,而 Salt 正在等待它被分配。

我可以在启动后通过使用“vagrant ssh”连接到盒子并运行以下命令来修复此问题:

sudo /etc/init.d/network restart
Run Code Online (Sandbox Code Playgroud)

在每个主机上。

这通过分配静态IP地址来“修复”eth1,之后Salt开始做它的事情,安装Docker,启动各种容器,等等。

我不知道的是如何在没有人工干预的情况下每次都能完成这项工作。这似乎是 Vagrant 和 VirtualBox 之间的某种竞争条件。