Node 查看 Node 资源使用情况 $ kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% 172.16.192.36 1961m 12% 16885Mi 61% 172.16.193.199 839m 5% 8046Mi 27% 172.16.193.75 1915m 12% 10597Mi 38% 获取指定 Node 上的 pod 列表 $ kubectl get po -A -o wide --field-selector spec.nodeName=172.16.192.36 NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system kube-proxy-6gbzq 1/1 Running 0 13d 172.16.192.36 172.16.192.36 <none> <none> kube-system node-local-dns-tqpkz 1/1 Running 0 2d7h 172.16.192.36 172.16.192.36 <none> <none> kube-system kube-proxy-6gbzq 1/1 Running 0 13d 172.16.192.36 172.16.192.36 <none> <none> 获取节点总可用资源 $ kubectl get node -o=custom-columns="NODE:.metadata.name,ALLOCATABLE CPU:.status.allocatable.cpu,ALLOCATABLE MEMORY:.status.allocatable.memory" NODE ALLOCATABLE CPU ALLOCATABLE MEMORY 172.16.192.36 15600m 28262728Ki 172.16.193.199 15890m 30121540Ki 172.16.193.75 15600m 28262728Ki 节点更新维护 # 1. 标记节点不可被调度 $ kubectl cordon 172.16.192.36 # 2.驱逐节点上的所有 pod(除 daemonset),并删除临时盘 $ kubectl drain 172.16.192.36 --ignore-daemonsets --delete-emptydir-data # 3. 重新标记节点为可调度 $ kubectl uncordon 172.16.192.36 Pod 设置 Pod 调度策略 硬亲和(requiredDuringSchedulingIngoredExecution): affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: foo operator: In values: - bar 软亲和(preferredDuringSchedulingIgnoredExecution): nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: foo operator: In values: - "" weight: 100