使用vagrant和virtualbox在mac上安装Kubernetes

时间:2015-07-17 22:53:08

标签: macos vagrant virtualbox 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

这创建了一个主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

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

4 个答案:

答案 0 :(得分:1)

如果您只是想用Kubernetes踢轮胎,我建议您安装boot2docker,然后按照Running kubernetes locally via Docker入门指南进行操作。一旦您愿意与Kubernetes API交互并想要更复杂的本地设置,您就可以继续安装Vagrant。

如果Vagrant说明不起作用,您还应该随意在github存储库中提交错误。

答案 1 :(得分:1)

我还不知道修复但我知道出了什么问题,因为它也发生在我身上:

  • OS X 10.10.3
  • Vagrant 1.7.4
  • VirtualBox 4.3.30
  • Kubernetes 1.0.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个网络并对配置进行一些调整:

Kubernetes inside VirtualBox Network Overview

  • VirtualBox HOST ONLY网络将是用于从Mac或PC访问Kubernetes主节点和节点的网络。
  • 用于从Internet下载软件包的NAT Network
  • Kubernetes 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上运行。