gpt4 book ai didi

kubernetes - 在专用节点池上调度 kube-dns

转载 作者:行者123 更新时间:2023-12-04 20:29:01 28 4
gpt4 key购买 nike

我有一个在 GCP 上运行的集群,该集群目前完全由抢占式节点组成。我们遇到了 kube-dns 不可用的问题(可能是因为某个节点已被抢占)。我们想通过移动 kube-dns 来提高 DNS 的弹性pods 到更稳定的节点。

是否可以调度系统集群关键 Pod,如 kube-dns (或 kube-system 命名空间中的所有 Pod)在仅包含不可抢占节点的节点池上?我对使用亲和性或反亲和性或污点持谨慎态度,因为这些 pod 是在集群引导时自动创建的,并且所做的任何更改都可能被 Kubernetes 版本升级所破坏。有没有办法做到这一点,在升级过程中持续存在?

最佳答案

解决方案是将污点和容忍度与节点亲和性结合使用。我们创建了第二个节点池,并向可抢占池添加了污点。

地形配置:

resource "google_container_node_pool" "preemptible_worker_pool" {
node_config {
...
preemptible = true

labels {
preemptible = "true"
dedicated = "preemptible-worker-pool"
}

taint {
key = "dedicated"
value = "preemptible-worker-pool"
effect = "NO_SCHEDULE"
}
}
}

然后我们使用了 tolerationnodeAffinity允许我们现有的工作负载在受污染的节点池上运行,有效地迫使集群关键 pod 在未受污染(不可抢占)的节点池上运行。

Kubernetes 配置:
spec:
template:
spec:
# The affinity + tolerations sections together allow and enforce that the workers are
# run on dedicated nodes tainted with "dedicated=preemptible-worker-pool:NoSchedule".
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: dedicated
operator: In
values:
- preemptible-worker-pool
tolerations:
- key: dedicated
operator: "Equal"
value: preemptible-worker-pool
effect: "NoSchedule"

关于kubernetes - 在专用节点池上调度 kube-dns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50934637/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com