【问题标题】:kubernetes on ubuntu 16.04ubuntu 16.04 上的 Kubernetes
【发布时间】:2016-11-26 11:51:34
【问题描述】:

我正在测试和学习 Kubernetes。我正在使用 ubuntu 16.04 并且一直在寻找简单明了的安装指南,但没有找到...有什么建议吗?我的目标是能够在一台 ubuntu 16.04 笔记本电脑上以 master 身份运行 kubernetes,然后设置第二台 ubuntu 16.04 笔记本电脑轻松加入集群。我想知道这是否可以通过当前版本的 kubernetes 和 16.04 版本的 ubuntu 来实现......任何指向指南或有用资源的指针将不胜感激......最好的问候。

【问题讨论】:

  • 您想学习如何使用 Kubernetes 集群或如何部署一个集群?这些是非常不同的任务。
  • 我正在学习如何安装所有部件,以便拥有一个 kubernetes 集群并在 kubernetes 集群上运行一个 docker 应用程序。我想先用两个节点设置它(在我的情况下,两台 ubuntu 16.04 笔记本电脑......这可能吗?然后我会尝试看看是否可以用我的两个水滴在数字海洋上设置一个 kubernetes 集群... 或者如何让运行 ubuntu 16.04 的两个 Droplet 加入以形成 kubernetes 集群并运行 docker 应用程序...

标签: docker kubernetes systemd ubuntu-16.04


【解决方案1】:

我偶然发现了一篇在 Ubuntu 16.04 中安装 Kubernetes 的文章。 https://www.techrepublic.com/article/how-to-quickly-install-kubernetes-on-ubuntu/

我建议您安装最新的 Kubernetes 版本,因为新版本支持一些扩展,例如部署、副本集(类似于复制控制器)。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 指南说它在 ubuntu 14.0 上测试正常,但不能在使用 systemd 的 ubuntu 15.00 上工作。我知道 ubuntu 16.04 也使用 systemd(而不是暴发户)。这就是为什么我没有尝试遵循 kubernetes 文档中提供的指南的原因......除非有人告诉我如何将指令调整到 systemd......在哪里以及改变什么......这对我来说并不清楚在这个阶段。感谢您的建议。
    【解决方案3】:

    请尝试https://github.com/nitinmidha/kube-cluster 已在 kube v1.4.6 和 Ubuntu 16.04 上测试

    这些是编写的 bash 脚本,用于提供“Kubernetes HA(带有 etcd 集群的多主机,多 minion)安全(etcd 和 kube-api-server 上的客户端认证)Ubuntu 16.04 上的集群”

    限制

    1. https://master_ip/ui 将不起作用,因为 master 无法访问容器。仪表板作为单独的内部服务托管在端口 9090 上的 minion 节点上,使用仪表板服务 IP 地址。如果需要,它可以通过任何反向代理服务器(如 NGINX)进行代理。或者Service可以暴露NodePort,可以在集群外使用

    2. kube-apiserver 为 master 上的 127.0.0.1 接口公开端口 8080。一旦https://github.com/kubernetes/kubernetes/issues/13598 被修复并可用,--insecure-port 将被设置为 0。

    3. Flannel 不保护数据包。有一个 PR (https://github.com/coreos/flannel/pull/290) 可以添加 ipsec 后端来加密数据包。一旦此功能可用,将配置设置以保护它。

    4. kubelet 和 kube-proxy 不支持多个 kube-apiserver 地址。所以我们仍然存在单点故障,因为只能配置一个 IP 地址。作为解决方法,我们可以在外部负载均衡器下公开所有主节点,然后指向该地址。问题已在 Kubernetes 中记录和处理。 https://github.com/kubernetes/kubernetes/issues/19152

    特点

    1. 带有 ETCD 集群的多主集群。
    2. ETCD 客户端和对等通信之间的 TLS 通信和客户端证书身份验证。
    3. 所有 kube 组件之间的 TLS 通信和客户端证书身份验证
    4. Flannel 用于联网。 Flannel 尚不支持 TLS。
    5. 节点可以是Master Only、Worker Only和Master-Worker模式。 Master Only 节点没有 flannel/kubelet 和 kube-proxy,因此无法访问 pod。 'kubelet get nodes' 命令也不会显示该节点。
    6. 使用 TLS 连接到现有 ETCD 集群的选项。

    【讨论】:

      【解决方案4】:

      您可以查看通过cluster/get-kube-local.sh 启动单节点集群的方法。它向您展示了如何使用 hyperkube 来启动集群。

      如果你想深入了解底层细节,另一种方法是查看hack/local-up-cluster.sh的内容。这会分别调出每个组件,例如:

      • kube-apiserver
      • kube 代理
      • kube-dns
      • kube-controller-manager

      您可能会使用与您在问题中所述相同的步骤来创建一个双节点集群。

      【讨论】:

      • cluster/get-kube-local.sh 未完成...它卡在以下任务上:检测到现有的 kubectl 二进制文件。跳过下载。创建本地集群:正在启动 kubelet...SUCCESS 等待主组件启动 .................................... ..................................................... ..................................................... ..................................................... ....^
      • 不确定为什么没有创建集群。我在 ubuntu 16.04 上运行脚本...我想知道脚本中定义的 localhost:8080 是否被分配了该特定端口...我检查了没有其他容器使用相同的端口...
      • @user3669547 您可能需要检查kubectl version。如果返回服务器版本字符串,则服务器已启动。它可能已经开始运行。有时它会声明它正在等待组件启动,而它已经启动了它们。您可以通过运行 docker ps 来检查它是否启动了正确的容器。
      • 使用 docker ps...只有主 kubernetes 容器正在运行...所有其他容器都被创建并立即退出...执行 docker ps -qa 显示越来越多的容器退出...一些其中被命名为master,proxy,不知道这是做什么的。
      • 运行 kubectl version 返回以下输出: sudo kubectl version Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"5cb86ee022267586db386f62781338b0483733b3 ", GitTreeState:"clean"} 与服务器 localhost:8080 的连接被拒绝 - 您是否指定了正确的主机或端口?...我怀疑无法访问 api 服务器。它应该是 localhost:8080。
      【解决方案5】:

      不确定这是否符合您的需求,但 Minikube 是 IMO 在本地运行 Kubernetes 集群的最快方式:https://github.com/kubernetes/minikube

      除此之外:设置多节点集群并不是一件简单的事情,因为你必须设置覆盖网络,而 Kubernetes 由许多组件组成。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2018-02-02
      • 2016-11-08
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多