2015-09-30 30 views
8

因此Kubernetes拥有一个非常新颖的网络模型,我相信它基于它认为是缺省Docker网络的一个缺点。虽然我还在努力去理解:(1)它认为实际的缺点是什么,(2)Kubernetes的一般解决方案是什么,现在我已经达到了一个我只想实施这个解决方案也许会让我更好一点。在vCenter上运行Kubernetes

尽管Kubernetes文档的其余部分非常成熟并且编写良好,但配置网络的说明很少,基本不一致,并且跨越许多不同的文章,而不是位于一个特定的地方。

我希望在(从头开始)之前设置Kubernetes集群的人可以帮助我完成基本程序。我对运行GCE或AWS不感兴趣,现在我不想使用任何类型的覆盖网络,例如flannel

基本的理解是:

  1. 能开出/16子网所有的豆荚。这将限制您的65K豆荚,这对大多数正常应用来说应该足够了。该子网中的所有IP都必须是“公共”的,并且不在某些传统私有(有类别)范围内。
  2. 创建cbr0桥的地方,并确保其持续性(但什么机器?
  3. 删除/禁用由泊坞窗安装MASQUERADE规则。
  4. 一些如何配置iptables路由(再次,其中?),以便Kubernetes启动的每个吊舱接收其中一个公共IP。
  5. 使用负载均衡Services和动态DNS需要一些其他设置。
  6. 提供5个虚拟机:1个主站,4个爪牙在所有5个虚拟机
  7. 安装/配置kubectlcontroller-managerapiserveretcd到主,并运行它们作为服务/守护进程
  8. 安装/配置泊坞
  9. 安装/配置每个马仔kubeletkube-proxy并运行它们作为服务/守护进程

这是我可以从2个研究整天收集最好的,他们可能是错误的(或misdir被排除),并且完全不完整。

我有无限制的访问权限来在本地vCenter群集中创建虚拟机。如果需要对VLAN /交换机/等进行更改。我可以参与基础设施。

我应该为Kubernetes设置多少个虚拟机(适用于中小型群集),为什么?我需要对上面的模糊说明做出什么确切的更正,以便完全配置网络?

我很好的安装/配置所有的二进制文件。只是完全窒息了设置的网络端。

回答

3

对于kubernetes网络的一般介绍,我发现http://www.slideshare.net/enakai/architecture-overview-kubernetes-with-red-hat-enterprise-linux-71相当有帮助。

在您的项目(1)和(2):恕我直言,他们很好地描述在https://github.com/kubernetes/kubernetes/blob/master/docs/admin/networking.md#docker-model。 从我的经验来看:Docker NAT类型的方法有什么问题?有时您需要配置到软件的所有节点的所有端点(172.168.10.1:8080,172.168.10.2:8080等)。在kubernetes中,您可以简单地将pod的IP配置到其他pod中,Docker使用NAT间接寻址将其复杂化。 另请参阅Setting up the network for Kubernetes一个很好的答案。

您的其他点建议:1。

所有IP地址在该子网必须是“公众”,而不是内部的一些传统的私有的(有类)的范围。

kubernetes的“内部网络”通常使用私有IP,参见上面的幻灯片,以10.x.x.x为例。我猜混淆来自一些引用“public”的kubernetes文本为“在节点外可见”,但它们并不意味着“Internet公共IP地址范围”。

+0

谢谢@Stefan Vailant(+1),我欣赏链接和解释。不过,我认为你错过了我的问题的主要焦点,这是上面开始的**粗体**句子“*我应该为Kubernetes设置多少VM ...... *”。问题(和赏金!)的主要焦点是为了在vCenter上设置Kubernetes而制定一系列具体步骤。有什么想法吗? – smeeb

+0

嗨smeeb,我同意你的评论。对不起,我的想法没有,我主要想开始讨论,因为你的问题没有回答2天。 –

0

对于有兴趣做同样事情的人,这里是我目前的计划。

我找到了kube-up.sh脚本,该脚本在您的AWS账户上安装了一个生产质量良好的Kubernetes集群。本质上它会创建1个Kubernetes主EC2实例和4个minion实例。

在主设备上安装etcd,apiserver,控制器管理器和调度程序。在它的奴才上安装kubelet和kube-proxy。它还为小伙伴创建了一个自动扩展组(好),并在AWS上为您创建了大量以安全和网络为中心的事物。 如果您运行该脚本并且创建AWS S3存储桶失败,请手动创建一个具有相同确切名称的存储桶,然后重新运行该脚本。

脚本完成后,您将使Kubernetes启动并运行并准备好接近生产使用(我一直在说“接近”和“生产”,因为我对Kubernetes太陌生,无法知道实际构成一个真正的交易生产集群)。您将需要安装AWS CLI,并配置一个拥有对您的AWS账户的完全管理访问权的用户(它会继续并创建IAM角色等)。

我的比赛计划将是:

  1. 获取舒服Kubernetes在AWS上工作
  2. 保持在追捕的Kubernetes队Slack帮助我理解Kubernetes如何运作引擎盖下
  3. 逆向工程kube-up.sh脚本,这样我就可以在本地运行Kubernetes(vCenter)
  4. 有关此过程的博客
  5. 更新此答复指向所述博客的链接。

给我一些时间,我会继续。

相关问题