这是我第一次尝试安装和使用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似乎未能在主服务器上启动。在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
Vagrant是版本1.7.3。 VirtualBox是版本4.3.30
我犯了一个明显的愚蠢错误吗?
答案 0 :(得分:1)
如果您只是想用Kubernetes踢轮胎,我建议您安装boot2docker,然后按照Running kubernetes locally via Docker入门指南进行操作。一旦您愿意与Kubernetes API交互并想要更复杂的本地设置,您就可以继续安装Vagrant。
如果Vagrant说明不起作用,您还应该随意在github存储库中提交错误。
答案 1 :(得分:1)
我还不知道修复但我知道出了什么问题,因为它也发生在我身上:
当我运行默认配置(创建一个" master"以及一个" minion" VM)时,我看到静态IP地址没有分配给&# 34; 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" sshing到盒子来修复此问题。并运行命令:
sudo /etc/init.d/network restart
在每个主机上。
这"修复" eth1通过分配静态IP地址,然后Salt开始做它的事情,安装Docker,引导各种容器等等。
我不知道如何在没有人工干预的情况下每次都能完成这项工作。它似乎是Vagrant和VirtualBox之间的某种竞争条件。
答案 2 :(得分:0)
罗伯特指出的教程很容易运行。只需将版本更改为0.21.2(也可能是0.21.3)。
否则,如果您更喜欢流浪汉的解决方案,请尝试使用流浪者上的pires群集。它几乎没有任何改变。
答案 3 :(得分:0)
在VirtualBox中运行 Kubernetes 需要4个网络并对配置进行一些调整:
HOST ONLY
网络将是用于从Mac或PC访问Kubernetes主节点和节点的网络。NAT Network
。PODs
之间的内部连接使用隧道网络TUN
Kubernetes Cluster IP Network
是集群内部使用的专用IP范围,用于为每个Kubernetes服务提供专用IP Vagrantfile需要将节点的公共IP传递给Ansible角色,该角色将Kubernetes配置为使用每个节点的公共IP设置KUBELET_EXTRA_ARGS
环境变量(使用kubectl读取日志是必需的)。
NodePort
用于发布在Kubernetes集群中运行的应用程序,因为VirtualBox中没有负载均衡器。
查看完整示例,并在Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube)下载代码,该代码已在Ubuntu中进行了测试,但也可以在MAC上运行。