在 vCenter 上运行 Kubernetes

Posted

技术标签:

【中文标题】在 vCenter 上运行 Kubernetes【英文标题】:Running Kubernetes on vCenter 【发布时间】:2015-12-28 14:19:18 【问题描述】:

所以 Kubernetes 有一个非常新颖的网络模型,我相信这是基于它认为默认 Docker 网络的一个缺点。虽然我仍在努力理解:(1)它认为实际的缺点是什么,以及(2)Kubernetes 的一般解决方案是什么,但我现在已经到了我想实现的地步解决方案,也许这会给我带来更好的线索。

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

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

我的基本理解是:

    为您的所有 pod 创建一个 /16 子网。这会将您限制为一些 65K pod,这对于大多数普通应用程序来说应该足够了。此子网中的所有 IP 都必须是“公共”的,并且不在某些传统的私有(分类)范围内。 在某处创建cbr0 网桥并确保其持久性(但在什么机器上?) 删除/禁用 Docker 安装的 MASQUERADE 规则。 如何配置 iptables 路由(再次,在哪里?),以便 Kubernetes 启动的每个 pod 接收其中一个公共 IP。 需要进行一些其他设置才能使用负载平衡 Services 和动态 DNS。 提供 5 个虚拟机:1 个主虚拟机,4 个从属虚拟机 在所有 5 台虚拟机上安装/配置 Docker 将kubectlcontroller-managerapiserveretcd 安装/配置到主服务器,并将它们作为服务/守护进程运行 在每个 minion 上安装/配置 kubeletkube-proxy 并将它们作为服务/守护进程运行

这是我从 2 天的研究中收集到的最好的结果,它们可能是错误的(或误导的)、无序的和完全不完整的。

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

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

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

【问题讨论】:

【参考方案1】:

对于 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 作为示例。我猜混淆来自一些将“公共”称为“节点外可见”的 kubernetes 文本,但它们并不意味着“互联网公共 IP 地址范围”。

【讨论】:

感谢@Stefan Vailant (+1),感谢链接和解释。但是,我认为您错过了我的问题的主要焦点,即上面的 粗体 句子以“我应该为 Kubernetes 设置多少虚拟机...”开头。这个问题(和赏金!)的主要焦点是汇总一组在 vCenter 上设置 Kubernetes 的具体步骤。有什么想法吗? 嗨,smeeb,我同意你的评论。抱歉,我这边没有任何想法,我主要是想开始讨论,因为您的问题已经 2 天没有答案了。【参考方案2】:

对于任何有兴趣这样做的人,这是我目前的计划。

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

它在 master 上安装 etcd、apiserver、控制器管理器和调度程序。它在 minions 上安装 kubelet 和 kube-proxy。它还为 minions 创建了一个自动扩展组(很好),并在 AWS 上为您创建了一系列以安全和网络为中心的东西。 如果您运行该脚本但创建 AWS S3 存储桶失败,请手动创建一个完全相同名称的存储桶,然后重新运行该脚本。

脚本完成后,您将启动并运行 Kubernetes,并准备好进行近乎生产的使用(我一直说“近”和“生产-ish”,因为我对 Kubernetes 太陌生,不知道什么是真正的交易生产化集群)。您将需要安装 AWS CLI 并使用对您的 AWS 账户具有完全管理员访问权限的用户进行配置(它会继续并创建 IAM 角色等)。

我的游戏计划是:

    在 AWS 上轻松使用 Kubernetes 继续在Slack 上联系 Kubernetes 团队,帮助我了解 Kubernetes 的工作原理 对 kube-up.sh 脚本进行逆向工程,以便让 Kubernetes 在本地 (vCenter) 上运行 关于此过程的博客 使用该博客的链接更新此答案。

给我一​​些时间,我会跟进的。

【讨论】:

以上是关于在 vCenter 上运行 Kubernetes的主要内容,如果未能解决你的问题,请参考以下文章

vmware vcenter server heartbeat终止更新 管理员怎么破

在Win2008R2上安装vCenter6.7出现“系统上未安装通用C运行时。您可以从Microsoft网站上下载并安装”错误的解决办法

安装Vcenter

vcenter 主机摘要报警“在主机上找到已弃用的VMFS卷。请考虑升级到最新的版本”

vcenter 主机摘要报警“在主机上找到已弃用的VMFS卷。请考虑升级到最新的版本”

kubernetesk8s简介及其集群安装部署