求助:打算让业务 Pod 在 K8s 的 master 节点上运行,有哪些点需要注意?

2023-06-21 15:22:18 +08:00
 zhoudaiyu
我们的 1.24.4 的生产 K8s 集群机器是 13 台 ARM 架构物理机搭建的,计算资源配置是 64C 、384G ,其中有 3 台是 master 节点,目前只跑了 master 的组件,如 api-server 、scheduler 、controller-manager 、kubelet 、etcd 等,因为现在计算资源紧张,而且如此高性能的 master 节点只跑这些组件缺失感觉有些浪费。因此打算把 master 也加入业务容器可调度的节点方位内。目前有两种方案,第一种:我们人工选择部分业务并配置容忍 master 不可调度的污点(修改应用的 Deployment )来实现他们在 master 节点的运行,由于我们有一些应用的资源使用的统计数据,因此对 master 节点的影响较为可控(比较担心影响 etcd ,虽然 IO 层面 master 节点的 etcd 的目录在单独的磁盘上,但是还是怕计算资源不够用);还有一种方式是直接把 master 的污点给去掉,让 Pod 可以随便调度到 master 节点上,这样比较省事,不用我们筛选应用,但是非常担心 master 的组件受到的应用影响,从而集群失控。请问大家对这 2 套方案有啥建议呢?十分感谢!
1256 次点击
所在节点    Kubernetes
6 条回复
defunct9
2023-06-21 15:24:06 +08:00
当然第一种
defunct9
2023-06-21 15:25:50 +08:00
理由是我们 ingress 很闲置,就被随便调度 pod 上去了,然后一个节点就宏机了,瞬间山河一片红,pod 大批量迁移。
所以打了污点禁止调度到 ingress 。你这个情况要调度也只能调度你知根知底的 pod 上去,放开随便调度就是找死。
asilin
2023-06-21 16:01:08 +08:00
k8s 内建支持这种特性,将污点的值改为 PreferNoSchedule 即可,表示 Pod 不到万不得已不会调度到 master 节点
wandehul
2023-06-21 16:05:27 +08:00
还是不建议调度到 master 上去, 完全是给自己找事情
CheckMySoul
2023-06-21 16:16:30 +08:00
选第一种,调度来的应用严格配置 CPU 内存临时磁盘限制。或者你找下,把 ingress 之类的资源从计算挪到控制节点,腾出计算资源。
xinmans
2023-06-22 16:26:32 +08:00
master 机器用 kvm 做个虚拟化,搞成几台 VM ,master 放其中一台 VM (绑定物理 core ,避免争抢),其他 VM 拿出来调度 pod 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/950663

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX