首页 > 解决方案 > 在同一台服务器上运行 Kubernetes 主节点和节点(在 Kubernetes 主节点上调度 pod)

问题描述

如果你在 Kubernetes master 上运行 taint 命令:

kubectl taint nodes --all node-role.kubernetes.io/master-

它允许您安排 pod。所以它充当节点和主节点。

我试图运行 3 个服务器集群,其中所有节点都有两个角色。从第一眼看,我没有注意到任何问题。

您认为现在这个解决方案可以用于运行小型集群以进行生产服务吗?如果没有,真正的缺点是什么?与标准设置相比,此设置在哪些情况下失败?

假设 etcd 在所有三台服务器上运行。

谢谢

标签: kubernetes

解决方案


运行单独的主节点和工作节点的标准原因是防止繁忙的工作负载干扰集群。

假设您有提议的三个节点。一个结束运行数据库;一个运行 Web 服务器;第三个运行异步工作 pod。突然,你的系统收到了一大堆流量,Rails 应用程序正在使用 100% 的 CPU,Sidekiq 工作程序正在以 100% 的 CPU 运行,MySQL 数据库正在尝试处理一些复杂的连接,并且 CPU 很高而且正在使用所有可用的磁盘带宽。您运行kubectl get pods:哪个节点实际上能够为这些请求提供服务?如果您的应用程序触发了 Linux 内存不足杀手,您能否保证它不会杀死etcdkubelet,这两者都对集群工作至关重要?

如果这是在云环境中运行,您通常可以使用更小(更便宜)的节点成为主节点。(Kubernetes 本身不需要大量的处理能力,但它确实需要它是可靠的。)


推荐阅读