在Mac上使用Vagrant和VirtualBox安装Kubernetes

6
这是我第一次安装和使用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

这创建了一个主VM和一个Minion,但是Kubernetes似乎无法在主节点上启动。在主节点上,/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

我翻译的结果如下:

Vagrant版本为1.7.3。VirtualBox版本为4.3.30。

我犯了一个显而易见的愚蠢错误吗?


我也遇到了完全相同的问题。唯一的区别是:我正在使用旧版VirtualBox 4.3.28,正如指示建议的那样。我的vagrant版本是1.7.4,在Mac OS 10.10.5上运行。 - robinbb
4个回答

1
如果您只是想试用Kubernetes,我建议安装boot2docker,然后按照Running kubernetes locally via Docker入门指南进行操作。一旦您熟悉了与Kubernetes API的交互,并且想要更复杂的本地设置,您可以开始安装Vagrant。
如果Vagrant说明无法正常工作,您也可以随时在github存储库中提交错误报告。

1
我还不知道如何修复,但我知道出了什么问题,因为我也遇到了同样的问题:
  • OS X 10.10.3
  • Vagrant 1.7.4
  • VirtualBox 4.3.30
  • Kubernetes 1.0.1

当我运行此默认配置(创建一个"master"和一个"minion"虚拟机)时,我发现静态IP地址未分配给"eth1"接口,并且我还看到Salt API服务器正处于似乎是无限重试循环中,因为它正在尝试侦听该IP地址。

此外,在启动过程中发生了以下消息:

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

基本上,静态IP地址没有被分配,是因为在系统首次启动时eth1还没有准备好,Salt正在等待它被分配。
我可以通过使用“vagrant ssh”对框进行ssh连接,并运行以下命令来在启动后解决此问题:
sudo /etc/init.d/network restart

在每个主机上。

通过分配静态IP地址,"修复"了eth1,然后Salt开始执行操作,安装Docker,启动各种容器等等。

我不知道如何使此功能每次都能自动运行而无需手动干预。这似乎是Vagrant和VirtualBox之间的某种竞争条件。


0
Robert指出的教程非常容易操作。只需将版本更改为0.21.2(也许0.21.3也可以)。
另外,如果您喜欢使用vagrant解决方案,请尝试使用pires在vagrant上运行的集群。它几乎不需要更改任何内容。

0

在VirtualBox中运行Kubernetes需要4个网络和一些配置调整:

Kubernetes inside VirtualBox Network Overview

  • VirtualBox的HOST ONLY网络将用于从Mac或PC访问Kubernetes主节点和节点。
  • NAT Network用于从互联网下载软件包。
  • Kubernetes PODs之间的内部连接使用隧道网络TUN
  • Kubernetes Cluster IP Network是集群内部使用的私有IP范围,用于为每个Kubernetes服务分配专用IP地址
  • Vagrantfile需要将节点公共IP传递给配置Kubernetes的Ansible角色,以设置KUBELET_EXTRA_ARGS环境变量,其中包含每个节点的公共IP(用于使用kubectl读取日志)。

  • NodePort需要用于发布在Kubernetes集群中运行的应用程序,因为VirtualBox中不支持负载均衡器。

请查看完整示例并下载代码Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube),已在Ubuntu上进行了测试,但也应该适用于MAC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接