我们使用 RKE 设置集群,该集群包含 4 个主节点(VM、8 核 CPU、当前来源、staging、ahorriblea 工作节点和 16G 内存)和 5 个工作节点(裸机、HPE G10、88 核 CPU、256G 内存)
-Kubernetes版本:1.15
-主机操作系统:coreos
并将每个节点的最大 pod 数量增加到 250,目前我们总共有大约 500-600 个 pod。我们的大部分堆栈都是 php-fpm。
昨天,我们在生产环境中使用来自多个来源的自动炮进行了负载测试(暂存命名空间:|),是的,我知道这很糟糕,但我们认为集群没问题,并且由于我们的监控背景历史,我们可以容忍它。
我想知道您是否建议我们使用许多工人(VM)而不是少数工人(裸机)?
答案1
一如既往:这取决于您的需求。
让我们深入研究一下:第一步是比较两种不同的部署模式(少数大型工作者和许多小型工作者),它们具有相同的类型:两者都是虚拟机或两者都是裸机,以简化比较。鉴于我们有:
少数较大节点的好处
- 更少的节点管理:你必须安装、修补和升级更少数量的 Coreos
- 主节点上的开销较少
许多较小节点的好处
- 冗余和高可用性:如果一个节点发生故障,其资源可以轻松地在幸存的节点上重新安排
- 减少 kubelet 开销:每个工作进程的 pod 越少,kubelet 需要执行的操作(例如每个节点的活跃度和就绪度)就越少
- 节点越小,意味着您越接近实际的资源需求:如果您需要 60 个 CPU,而您有 2 个节点,每个节点有 50 个 CPU,那么您将为 40 个未使用的 CPU 付费。如果您有 3 个节点,每个节点有 20 个 CPU,那么您的成本就会得到优化。
我不知道您的需求,但通常我更喜欢高可用性解决方案。
现在回到虚拟机与裸机的比较。您必须将虚拟化层开销添加到许多较小节点的缺点中。较小的节点解决方案仍然值得吗?同样,这取决于您的需求
附言:为什么主节点数量是偶数?Kubernetes 需要奇数个 etcd 节点