【无标题】

一、Kubernetes调度概述

Kubernetes调度器负责将Pod分配到合适的节点:

调度流程:

  1. 过滤不满足条件的节点
  2. 对合格节点打分
  3. 选择最高分节点

二、调度策略

1. 节点亲和性

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: with-node-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: disktype
                operator: In
                values:
                  - ssd
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 1
          preference:
            matchExpressions:
              - key: zone
                operator: In
                values:
                  - us-east-1a

2. Pod亲和性

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchLabels:
              app: redis
          topologyKey: kubernetes.io/hostname
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 100
          podAffinityTerm:
            labelSelector:
              matchLabels:
                app: web
            topologyKey: topology.kubernetes.io/zone

3. 污点和容忍

bash 复制代码
# 添加污点
kubectl taint nodes node1 key=value:NoSchedule

# 添加容忍
apiVersion: v1
kind: Pod
metadata:
  name: tolerating
spec:
  tolerations:
    - key: "key"
      operator: "Equal"
      value: "value"
      effect: "NoSchedule"

三、资源管理

1. 资源请求和限制

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: resources
spec:
  containers:
    - name: app
      image: nginx
      resources:
        requests:
          memory: "128Mi"
          cpu: "250m"
        limits:
          memory: "256Mi"
          cpu: "500m"

2. LimitRange

yaml 复制代码
apiVersion: v1
kind: LimitRange
metadata:
  name: limits
spec:
  limits:
    - default:
        cpu: "500m"
        memory: "256Mi"
      defaultRequest:
        cpu: "200m"
        memory: "128Mi"
      type: Container

3. ResourceQuota

yaml 复制代码
apiVersion: v1
kind: ResourceQuota
metadata:
  name: quota
spec:
  hard:
    requests.cpu: "4"
    requests.memory: "8Gi"
    limits.cpu: "8"
    limits.memory: "16Gi"
    pods: "20"

四、调度策略配置

1. 自定义调度器

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: custom-scheduler
spec:
  schedulerName: my-custom-scheduler
  containers:
    - name: nginx
      image: nginx

2. 优先级和抢占

yaml 复制代码
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false
description: "高优先级"

五、总结

Kubernetes调度核心要点:

  • 节点亲和性:控制Pod调度到特定节点
  • Pod亲和性:控制Pod共置或分散
  • 污点容忍:特殊节点管理
  • 资源管理:请求和限制

六、调度器配置

1. 自定义调度器

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: custom-scheduler-pod
spec:
  schedulerName: my-custom-scheduler
  containers:
    - name: nginx
      image: nginx

2. 优先级和抢占机制

yaml 复制代码
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false
description: "高优先级任务"
---
apiVersion: v1
kind: Pod
metadata:
  name: high-priority-pod
spec:
  priorityClassName: high-priority
  containers:
    - name: app
      image: myapp

七、资源配额管理

1. 命名空间配额

yaml 复制代码
apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
spec:
  hard:
    requests.cpu: "10"
    requests.memory: "20Gi"
    limits.cpu: "20"
    limits.memory: "40Gi"
    pods: "50"
    services: "10"
    secrets: "20"
    configmaps: "20"

2. 限制范围

yaml 复制代码
apiVersion: v1
kind: LimitRange
metadata:
  name: default-limits
spec:
  limits:
    - default:
        cpu: "500m"
        memory: "256Mi"
      defaultRequest:
        cpu: "200m"
        memory: "128Mi"
      max:
        cpu: "4"
        memory: "8Gi"
      min:
        cpu: "50m"
        memory: "64Mi"
      type: Container

八、总结

Kubernetes调度与资源管理核心要点:

  • 节点亲和性:控制Pod调度到特定节点,满足特殊硬件需求
  • Pod亲和性:控制Pod共置或分散,优化通信或隔离
  • 污点容忍:特殊节点管理,如GPU节点、专用硬件
  • 资源管理:请求/限制确保服务质量,配额防止资源滥用

最佳实践:

  1. 生产环境务必设置资源请求和限制
  2. 使用LimitRange为命名空间设置默认值
  3. 使用ResourceQuota控制命名空间资源总量
  4. 合理使用优先级和抢占,确保关键业务运行

个人观点,仅供参考

相关推荐
数安3000天2 小时前
数据安全产品的演进与金融行业的平台化趋势
网络·金融
我不听你讲话2 小时前
Redis 配置与优化核心内容总结
数据库·redis·缓存
another heaven2 小时前
【软考 对称加密与非对称加密】
服务器·网络
Wy_编程3 小时前
redis 客户端编程
数据库·redis·缓存
傻啦嘿哟3 小时前
Python多进程编程:用multiprocessing突破GIL限制
服务器·网络·数据库
xu_wenming3 小时前
手写数字识别项目教程
网络·算法
@insist1233 小时前
网络工程师-网络规划与设计(三):数据中心机房设计规范全解析
服务器·网络·数据库·网络工程师·软考·软件水平考试
Mintopia3 小时前
高并发没那么神秘:用人话讲清系统是怎么被打爆的
架构
实在智能RPA3 小时前
Agent 如何处理流程中的异常情况?——2026企业级智能体稳定性架构深度拆解
开发语言·人工智能·ai·架构·php