centos

Kubernetes在CentOS上的资源调度策略如何

小樊
36
2025-12-17 19:22:11
栏目: 智能运维

Kubernetes 在 CentOS 上的资源调度策略概览

CentOS 上,Kubernetes 的调度行为与操作系统无关,核心由 kube-scheduler 完成:监听未绑定 NodeName 的 Pod,经过预选(过滤)—优选(打分)—绑定三个阶段选出最优节点;常见扩展包括节点亲和性/反亲和性、污点与容忍、拓扑分布约束、优先级与抢占、多调度器等,用于满足业务对性能、容错与资源效率的诉求。

核心调度策略与机制

CentOS 场景下的落地配置要点

调度优化与弹性扩缩

示例配置片段

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: disktype
          operator: In
          values: ["ssd"]
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchExpressions:
        - key: app
          operator: In
          values: ["web"]
      topologyKey: kubernetes.io/hostname
# 节点打污点
kubectl taint nodes node-gpu1 accelerator=nvidia:NoSchedule

# Pod 容忍
tolerations:
- key: "accelerator"
  operator: "Equal"
  value: "nvidia"
  effect: "NoSchedule"
resources:
  requests:
    memory: "256Mi"
    cpu: "500m"
  limits:
    memory: "512Mi"
    cpu: "1"
topologySpreadConstraints:
- maxSkew: 1
  topologyKey: kubernetes.io/hostname
  whenUnsatisfiable: DoNotSchedule
  labelSelector:
    matchLabels:
      app: web
# ResourceQuota
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-quota
  namespace: prod
spec:
  hard:
    requests.cpu: "10"
    requests.memory: "20Gi"
    limits.cpu: "20"
    limits.memory: "40Gi"

# LimitRange
apiVersion: v1
kind: LimitRange
metadata:
  name: default-limit
  namespace: prod
spec:
  limits:
  - default:
      memory: "512Mi"
      cpu: "500m"
    defaultRequest:
      memory: "256Mi"
      cpu: "250m"
    type: Container

上述策略与示例可直接用于 CentOS 节点,关键在于:为节点与业务合理打标签、为容器设置合适的 requests/limits、用 亲和/反亲和与拓扑分布 控制布局、以 配额与默认限额 做治理,并配合 HPA/CA 实现弹性。

0
看了该问题的人还看了