如果在Kubernetes master上运行taint命令:
kubectl taint nodes --all node-role.kubernetes.io/master-
它允许您安排豆荚。 因此它充当节点和主节点。
我尝试运行3个服务器群集,其中所有节点都具有两个角色。初看时我没有发现任何问题。
您认为当今该解决方案可用于运行小型集群以进行生产服务吗?如果没有,真正的缺点是什么?在哪种情况下,该设置与标准设置相比无法实现?
假设etcd在所有三台服务器上都运行。
谢谢
答案 0 :(得分:2)
分别运行主节点和工作节点的标准原因是为了避免繁忙的工作负载干扰集群。
假设您有三个建议的节点。一个人开始运行数据库。一个运行Web服务器;第三个运行异步工作容器。突然,您的系统进入大量通信,Rails应用程序正在使用100%CPU,Sidekiq工作程序正在使用100%CPU,MySQL数据库正在尝试处理一些复杂的联接,并且既是高CPU又在使用所有可用磁盘带宽。您运行kubectl get pods
:实际上哪个节点可以处理这些请求?如果您的应用程序触发了Linux内存不足杀手,那么您能否保证它不会杀死etcd
或kubelet
,这两者对于集群的运行至关重要?
如果它在云环境中运行,通常可以使较小(便宜)的节点成为主节点。 (Kubernetes本身不需要大量的处理能力,但确实需要可靠的可用性。)