kubernetes - 在同一台服务器上运行 Kubernetes 主节点和节点(在 Kubernetes 主节点上调度 pod)
问题描述
如果你在 Kubernetes master 上运行 taint 命令:
kubectl taint nodes --all node-role.kubernetes.io/master-
它允许您安排 pod。所以它充当节点和主节点。
我试图运行 3 个服务器集群,其中所有节点都有两个角色。从第一眼看,我没有注意到任何问题。
您认为现在这个解决方案可以用于运行小型集群以进行生产服务吗?如果没有,真正的缺点是什么?与标准设置相比,此设置在哪些情况下失败?
假设 etcd 在所有三台服务器上运行。
谢谢
解决方案
运行单独的主节点和工作节点的标准原因是防止繁忙的工作负载干扰集群。
假设您有提议的三个节点。一个结束运行数据库;一个运行 Web 服务器;第三个运行异步工作 pod。突然,你的系统收到了一大堆流量,Rails 应用程序正在使用 100% 的 CPU,Sidekiq 工作程序正在以 100% 的 CPU 运行,MySQL 数据库正在尝试处理一些复杂的连接,并且 CPU 很高而且正在使用所有可用的磁盘带宽。您运行kubectl get pods
:哪个节点实际上能够为这些请求提供服务?如果您的应用程序触发了 Linux 内存不足杀手,您能否保证它不会杀死etcd
或kubelet
,这两者都对集群工作至关重要?
如果这是在云环境中运行,您通常可以使用更小(更便宜)的节点成为主节点。(Kubernetes 本身不需要大量的处理能力,但它确实需要它是可靠的。)
推荐阅读
- ffmpeg - Ffmpeg 无法对 mp2.mxf 进行编码“无法在 BodySID 1 中找到 xxxxxx 的绝对偏移量 - 部分文件?”
- c# - 如何使用 WPF 应用程序将 id 添加到列表框条目以删除条目以及在列表中记录
- outlook-redemption - 使用 Redemption Safe* 对象对附件进行的修改不会反映在检查器中
- hyperion - Hyperion 交互式报告和 JDEdwards
- node.js - 节点守护进程不会以 process.stdin.setRawMode(true) 开头
- r - Appveyor问题-无法安装R包stringi
- c# - 使用反射获取泛型类的实例
- javascript - 使用 Reactjs 未定义 componentDidMount 中的变量
- .net - Visual Studio 安装程序项目版本为 beta
- docker - 无法在 swarm 中运行 Apache nifi docker 容器。空响应