【无标题】

一、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. 合理使用优先级和抢占,确保关键业务运行

个人观点,仅供参考

相关推荐
OnlineProxy4 小时前
企业级代理服务器架构:合规性、NDA 诚信与灰色 P2P 网络风险防范
网络·架构·p2p
weixin_3077791311 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
灯澜忆梦11 小时前
【minio】#1 | 简介与安装
docker·对象存储·minio
FPGA小徐12 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络
无名猿13 小时前
unique_ptr 完全指南:独占所有权与零开销
c++·性能优化·内存管理·标准库·现代c++
写后端的胖头鱼14 小时前
一文详解Cache Aside(旁路缓存模式)
redis·缓存·延迟双删·缓存一致
code_slave(码畜)14 小时前
微服务架构落地:基础服务 —— 报表服务(中篇:元数据、查询引擎、缓存与权限落地)
spring boot·spring cloud·缓存·微服务·架构
豆豆15 小时前
2026 年建站架构选型实录:从 SC-081v3 证书新政与备案新规倒推 CMS 选型口径
架构·https·cms·geo·acme·web架构·pageadmin
海宇大数据15 小时前
零信任架构实战:基于海宇活体识别V步骤1构建自动化远程公证会话初始化网关
运维·人工智能·架构·自动化
邵奈一15 小时前
Codex 重连卡半天,一行配置搞定
架构