在Ubuntu 16.04上运行Kubernetes

5

我正在测试和学习kubernetes。我正在使用Ubuntu 16.04,并一直在寻找简单明了的安装指南,但一直未能找到...有什么建议吗?我的目标是能够在一个Ubuntu 16.04笔记本电脑上作为主节点运行kubernetes,并稍后轻松地设置第二个Ubuntu 16.04笔记本电脑加入集群。我想知道是否可以使用当前版本的kubernetes和Ubuntu 16.04版本来实现这一点...如果有任何指向指南或有用资源的指针,将不胜感激...最好的问候。


你想学习如何使用 Kubernetes 集群还是如何部署集群?这些是非常不同的任务。 - svenwltr
1
我正在学习如何安装所有需要的软件以建立一个kubernetes集群,并在其上运行docker应用程序。我想首先尝试使用两个节点(在我的情况下,是两个Ubuntu 16.04笔记本电脑…这可行吗?然后我将尝试看看是否可以在Digital Ocean上使用我拥有的两个droplets创建kubernetes集群...或者如何使这两个运行Ubuntu 16.04的droplets加入以形成kubernetes集群并运行docker应用程序... - user3669547
5个回答

1
你可以查看 cluster/get-kube-local.sh,了解如何通过hyperkube创建单节点集群。
如果想深入了解细节,另一种方法是查看hack/local-up-cluster.sh的内容。这会分别启动每个组件,例如:
- kube-apiserver - kube-proxy - kube-dns - kube-controller-manager 你可以使用相同的步骤来创建一个两个节点的集群,就像你在问题中所述。

cluster/get-kube-local.sh无法完成...它在以下任务上卡住了:检测到现有的kubectl二进制文件。跳过下载。 创建本地集群: 启动kubelet...成功 等待主组件启动...........................................................................................................................................................................................^ - user3669547
不确定为什么集群没有被创建。我正在Ubuntu 16.04上运行脚本...我想知道在脚本中定义的localhost:8080是否被分配了特定的端口...我检查过,没有其他容器使用相同的端口... - user3669547
@user3669547 你可能想要检查 kubectl version。如果返回了服务器版本字符串,则服务器已经启动。有可能它已经开始运行了。有时候会出现这样的情况,即它声称正在等待组件启动,但实际上已经启动了。您可以通过运行 docker ps 来检查它是否已经启动了正确的容器。 - Anirudh Ramanathan
使用docker ps命令...只有主要的Kubernetes容器正在运行...所有其他容器都会被创建并立即退出...执行docker ps -qa命令会显示越来越多的已退出容器...其中一些被命名为master、proxy,不确定是什么导致了这种情况。 - user3669547
运行 kubectl version 命令会返回以下输出:sudo kubectl version 客户端版本:version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"5cb86ee022267586db386f62781338b0483733b3", GitTreeState:"clean"} 与服务器 localhost:8080 的连接被拒绝 - 您是否指定了正确的主机或端口?... 我怀疑 api 服务器无法访问。它应该是 localhost:8080。 - user3669547
我明白了。看起来它没有起作用。可能值得一些调查。你可以尝试使用Kubernetes的Slack频道,那里的人应该能够帮助你解决问题。 - Anirudh Ramanathan

0

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

除此之外:设置多节点集群并不是一项简单的任务,因为您需要设置覆盖网络,并且Kubernetes由许多组件组成。


使用Flannel和Etcd可以解决网络和服务发现问题吗?我看过CoreOS和其他主要云提供商的教程,但没有Ubuntu 16.04的教程... - user3669547
我目前正在阅读这个指南:http://kubernetes.io/docs/getting-started-guides/docker-multinode/ - user3669547

0

3
指南显示在ubuntu 14.0上已经测试过,但无法在使用systemd的ubuntu 15.00上工作。我了解到ubuntu 16.04也使用systemd而不是upstart。这就是为什么我没有尝试遵循kubernetes文档中提供的指南的原因...除非有人告诉我如何适应systemd的说明...在哪里以及需要更改什么...这对我来说还不清楚。感谢您的建议。 - user3669547

0

-1

请尝试使用https://github.com/nitinmidha/kube-cluster,它已经通过kube v1.4.6和Ubuntu 16.04的测试。

这些是Bash脚本,旨在提供“基于Ubuntu 16.04的Kubernetes HA(多主节点与etcd集群,多从节点)安全客户端证书(etcd和kube-api-server)集群”

限制

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

  2. kube-apiserver在主节点上为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. 节点可以是仅主节点、仅工作节点或主-工作模式。仅主节点没有flannel / kubelet和kube-proxy,因此无法到达pod。同时,命令'kubelet get nodes'将不显示此节点。
  6. 连接到具有TLS的现有ETCD集群的选项。

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