Kubernetes node.kubernetes.io/内存压力:NoSchedule

Wal*_*nza 1 kubernetes azure-aks

下午好

我有两个 Pod 由于以下错误而无法提升:

prometheus-k8s-0 0/3 Pending 0 56s
prometheus-k8s-1 2/3 Running 0 69s
Run Code Online (Sandbox Code Playgroud)

Warning FailedScheduling <unknown> default-scheduler 0/4 nodes are available: 1 node (s) had taint {node.kubernetes.io/memory-pressure:}, that the pod didn't tolerate, 3 node (s) had volume node affinity conflict

kubectl describe nodes aks-bbagentpool-39730754-vmss000000 | grep -i taint
Taints: node.kubernetes.io/memory-pressure:NoSchedule
Run Code Online (Sandbox Code Playgroud)

我没有看到任何节点的高消耗:

kubectl top nodes

NAME CPU (cores) CPU% MEMORY (bytes) MEMORY%

aks-bbagentpool-39730754-vmss000000 153m 8% 920Mi 17%
aks-bbagentpool-39730754-vmss000001 1854m 97% 5357Mi 99%
aks-bbinfra-39730754-vmss000000 211m 5% 2038Mi 16%
aks-bbinfra-39730754-vmss000001 111m 2% 1706Mi 13%
Run Code Online (Sandbox Code Playgroud)

prometheus 解决方案来自 Coreos,我看到 daemonset 可以运行

kubectl get daemonsets.apps -n monitoring

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE

node-exporter 4 4 4 4 4 kubernetes.io/os=linux 3d13h
Run Code Online (Sandbox Code Playgroud)

我想知道此故障的原因以及如何解决节点的状态。

Kir*_*uba 5

当没有足够的内存来调度任何新的 pod 时,节点控制器将自动添加污点node.kubernetes.io/memory-压 力。

在您的情况下,特定节点可能会在某个时刻遇到内存问题,并且节点控制器已添加此污点,以防止该节点吸引任何新的 pod 调度,并且在适当的时候内存将被释放并恢复正常。控制器可以根据满足某些条件自动应用污点,但不会自动删除。

您有两种选择来解决此问题。

  1. 从节点中删除污点kubectl taint nodes aks-bbagentpool-39730754-vmss000000 node.kubernetes.io/memory-pressure:NoSchedule-
  2. 或者为你的 pod 添加容忍度(我个人不喜欢)

您可以在文档博客上获取更多详细信息