请问 k8s 如何将 pod 均匀调度到每个 node 上? 目前遇到问题,node 负载不均?
1
lixia625 2020-08-20 10:08:09 +08:00
pod affinity?
|
2
whileFalse 2020-08-20 10:22:29 +08:00
首先,你的 deployment 给 pod 设置了资源需求 /资源限制吗?
|
3
SkyYu822 2020-08-20 10:41:46 +08:00
做个软性的 pod anti affinity
|
4
StarUDream 2020-08-20 10:53:28 +08:00
|
5
ropon OP |
6
pwli 2020-08-20 12:59:18 +08:00
自己反自己可以不 :)
|
7
napsterwu 2020-08-20 13:12:37 +08:00 via iPhone
如果每个 node 有且仅有一个 pod,用 daemonset 。如果只是要均匀分布,就用 anti affinity 。讲真不一定有很大意义,而且可能干扰到 rollingUpdate
|
8
hwdef 2020-08-20 14:29:14 +08:00
6 楼的想法比较正确,pod 打个 label,如果 node 上有这个 label 的 pod 了,就反亲和
|
9
ManjusakaL 2020-08-20 14:45:35 +08:00 1
1. 确保资源能够满足需求
2. 给节点打上 Label,可以做亲和性调度 3. Pod 带 Label,用反亲和来做 Pod 打散 4. 亲和和反亲和中具体是用 **requiredDuringSchedulingIgnoredDuringExecution** 还是 **preferredDuringSchedulingIgnoredDuringExecution** 看你自己场景 |
10
594duck 2020-08-20 17:21:07 +08:00 1
你是几台机器做的 K8s 呀。亲和和反亲和是有上限的,这不是解决问题的良药。
良药是什么呢,你现在是 30 台物理服务器跑的 Docker 你把 30 台扩充成 60 台,你会发现问题就解决多了。 那所谓的云原生优势在哪里呢,大佬们会告诉你,你不应该自己安装 K8s,你应该用我们的 K8s 服务,我们有 2000 台服务器帮你做调度。 所以我们选择不搞 K8s,就一个萝卜一个坑蛮好的。萝卜不够了,就临时开机器 加坑。一个月不会比 K8s 反复折腾贵的 |
11
dreamusername 2020-08-27 08:58:42 +08:00
楼主的问题是,发现 node 节点的资源利用率不均,这个问题一般用两种方法去尝试解决:
- 亲和性与反亲和性,每个 node 上只存在一个 deploy/sts 的 pod - 严格的 resources,每个 deploy/sts 均设置 limits 与 requests 但是这两种都上线了以后,还会发现 node 资源利用率不均。 只能换个角度看待这个问题,scheduler 是自带的,如果你已经设置完以上两步,是已经可以满足服务的稳定性了,这时候的问题是成本问题,而不是服务的稳定性问题了。 |
12
yuzhiquan 2020-09-16 10:19:27 +08:00
`topologySpreadConstraints`
|