我有一个关于在多个物理服务器上设置带有虚拟机的 Kubernetes 集群的最佳实践的问题。我们能够成功地在单个物理服务器上的多个虚拟机实例之间设置集群。其中一个虚拟机实例是主节点。虚拟机实例没有自己的唯一公共 IP,只有内部 IP。
最终,这台单服务器将耗尽资源。我们的想法是,再设置一台服务器上的多个 VM 实例,并将这些新的 VM 实例作为新节点加入现有集群。
- 这样的事情有用吗?
- 所有虚拟机实例都必须位于同一网络中吗?
- 这能与 VPN 配合使用吗?
- 这是否需要为每个物理服务器添加另一个主节点?
谢谢您的任何指点和建议!
答案1
将此答案发布为社区维基,因为问题描述的范围可能很广,而且无法得到明确的答案。
请随意扩展它。
至于:
这样的事情有用吗?
是的。实际上,有多种方法可以配置集群。我鼓励您访问以下网站以了解 Kubernetes 组件和架构的概述:
您可以使用以下链接(附带指南)来设置一个集群,该集群将使用至少 3 个主节点和 3 个工作节点来实现高可用性设置:
一些技巧!
- 对于生产环境,您需要一个专用的 HAProxy 负载均衡器节点(物理、虚拟)
- 虽然主组件可以在任何机器上运行,但最佳做法是为主组件使用单独的服务器,并且不在此机器上运行任何用户容器。
- 在生产环境中以多主节点方式运行集群是最佳实践,以确保主节点组件本身的高可用性和弹性。这意味着您将需要至少 3 个主节点(奇数,以确保法定人数
至于法定人数
etcd
!请记住,这
etcd
需要法定人数才能运作。您可以通过以下链接了解更多信息:
所有虚拟机实例都必须位于同一网络中吗?
这取决于您设置的网络架构。最简单的解决方案是创建一个私有网络,该网络将横跨您打算部署 Kubernetes 的多台物理机器(使节点位于同一网络中)。
解释一下刚才所说的内容:
VM #1
可以Physical server #1
轻松与 进行VM #2
沟通Physical server #2
这能与 VPN 配合使用吗?
请具体说明 VPN 连接的具体含义:
- 它是您网络中节点之间的连接吗?
- 它是从异地位置将节点相互连接起来的连接吗?
- 这是开发人员/系统管理员访问 Kubernetes 集群的连接吗?
至于附注,你可以查看 Wireguard(带有内置加密的网络插件):
这是否需要为每个物理服务器添加另一个主节点?
简而言之,没有但。总有一个但是:
- 你能创建一个集群,其中将有一个主节点和多个物理机器上的多个工作节点。此设置可以工作,但它不是高可用性解决方案。
- 你能创建一个集群,其中将有多个主节点分布在多个物理服务器上。这在很大程度上取决于您的具体需求。
我考虑过这个问题,这可能是一个遥远的猜测,但如果你认为每台物理机器上的主节点和工作节点在任何情况下都是耦合的,那么它们就不是耦合的。每个工作节点都应该能够与每个主节点通信,反之亦然。
它们也必须在同一个私有网络中吗?还是您只是在每台服务器上创建一个主节点,然后仅将主节点连接在一起?
您需要$ kubeadm init
在单个主节点上运行以初始化集群。然后,您需要 $ kubeadm join
在每个节点(主节点/工作节点)上运行。它们(主节点/工作节点)之间的区别在于参数:
--control-plane
#<- 此参数将指示主节点(仅在主节点上使用它)。
我还鼓励你查看其他资源: