Ubuntu 上 Kubernetes 资源调度的落地做法

一 基础与容量规划
二 Pod 资源配置与请求
apiVersion: v1kind: Podmetadata:name: demospec:containers:- name: appimage: nginx:1.25resources:requests:cpu: "500m"memory: "1Gi"limits:cpu: "1"memory: "2Gi"三 常用调度策略与示例
spec:nodeSelector:disktype: ssdspec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: beta.kubernetes.io/archoperator: Invalues: [amd64]preferredDuringSchedulingIgnoredDuringExecution:- weight: 1preference:matchExpressions:- key: disk-typeoperator: Invalues: [ssd]spec:affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues: [web]topologyKey: kubernetes.io/hostname# 给节点打污点kubectl taint nodes gpu-node-1 hardware=gpu:NoSchedule# Pod 容忍spec:tolerations:- key: "hardware"operator: "Equal"value: "gpu"effect: "NoSchedule"spec:topologySpreadConstraints:- maxSkew: 1topologyKey: topology.kubernetes.io/zonewhenUnsatisfiable: DoNotSchedulelabelSelector:matchLabels:app: my-appapiVersion: scheduling.k8s.io/v1kind: PriorityClassmetadata:name: high-priorityvalue: 1000000globalDefault: false---spec:priorityClassName: high-prioritykubectl cordon <node-name> # 不可调度kubectl uncordon <node-name> # 恢复调度spec:nodeName: node-frontend-1以上策略可组合使用,实现“定向—隔离—分布—保序”的完整调度闭环。
四 调度器配置与扩展
五 运维与排障要点
kubectl describe node <node> | egrep 'Capacity|Allocatable'kubectl describe pod <pod> | grep -A 10 Eventskubectl get events --sort-by=.metadata.creationTimestampkubectl cordon <node># 先屏蔽,避免新 Pod 进入# 排查/维护完成后kubectl uncordon <node>