【问题标题】:Installing Kubernetes on mac with vagrant and virtualbox使用 vagrant 和 virtualbox 在 mac 上安装 Kubernetes
【发布时间】:2015-10-07 18:23:42
【问题描述】:

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

这创建了一个 master 虚拟机和一个 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

Vagrant 是 1.7.3 版本。 VirtualBox 是 4.3.30 版

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

【问题讨论】:

  • 我也遇到了同样的问题。一个区别:我使用的是旧的 VirtualBox 版本,4.3.28,正如说明中所推荐的那样。我的 vagrant 是 1.7.4,在 Mac OS 10.10.5 上。

标签: macos vagrant virtualbox kubernetes


【解决方案1】:

如果您只是想尝试使用 Kubernetes,我建议您安装 boot2docker,然后按照 Running kubernetes locally via Docker 入门指南进行操作。一旦您熟悉了与 Kubernetes API 的交互并想要更复杂的本地设置,您就可以开始安装 Vagrant。

如果 Vagrant 指令不起作用,您也应该随时在 github 存储库中提交错误。

【讨论】:

    【解决方案2】:

    Robert 指出的教程非常容易运行。只需将版本更改为 0.21.2(也许 0.21.3 也可以)。

    否则,如果您更喜欢 vagrant 解决方案,请尝试在 vagrant 上使用 pires cluster。它几乎无需更改即可运行。

    【讨论】:

      【解决方案3】:

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

      • OS X 10.10.3
      • 流浪者 1.7.4
      • VirtualBox 4.3.30
      • Kubernetes 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
      

      所以基本上没有分配静态 IP 地址,因为 eth1 在系统首次启动时尚未准备好,Salt 正在等待分配。

      我可以在启动后使用“vagrant ssh”连接到盒子并运行命令来解决这个问题:

      sudo /etc/init.d/network restart
      

      在每个主机上。

      这通过分配静态 IP 地址来“修复”eth1,然后 Salt 开始执行它的工作,安装 Docker,启动各种容器等等。

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

      【讨论】:

        【解决方案4】:

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

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

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

        查看完整示例并在Building a Kubernetes Cluster with Vagrant and Ansible (without Minikube) 下载代码,它已经在 Ubuntu 中进行了测试,但也可以在 MAC 上运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-13
          • 2023-01-27
          • 2017-10-22
          • 1970-01-01
          • 2011-12-24
          • 1970-01-01
          • 1970-01-01
          • 2018-10-17
          相关资源
          最近更新 更多