首页主机资讯CentOS环境下Kubernetes的资源管理

CentOS环境下Kubernetes的资源管理

时间2025-11-24 11:57:04发布访客分类主机资讯浏览364
导读:CentOS 环境下 Kubernetes 资源管理实战指南 一 核心概念与单位 请求 Requests:容器启动时所需的最小资源,调度器据此选择节点;kubelet会为容器预留相应资源。 限制 Limits:容器可使用的最大资源,由 k...

CentOS 环境下 Kubernetes 资源管理实战指南

一 核心概念与单位

  • 请求 Requests:容器启动时所需的最小资源,调度器据此选择节点;kubelet会为容器预留相应资源。
  • 限制 Limits:容器可使用的最大资源,由 kubelet/内核强制执行。
    • CPU 限制通过内核的 CPU 节流机制强制执行。
    • 内存限制通过 OOM Killer 在内存压力时终止容器。
  • 资源类型:常见为 CPU内存;CPU 单位为核或毫核(1000m = 1 核),内存单位为字节(如 Mi/Gi)。
  • Pod 级资源:自 v1.32 起可在 Pod 级别声明资源请求/限制(Alpha,默认关闭),便于统一预算与容器间资源共享。

二 命名空间配额与准入控制

  • ResourceQuota:在命名空间层面限制资源总量与对象数量,例如限制 CPU/Memory 请求与上限、以及 Pods、Services、PVCs、ConfigMaps 等对象数量。
  • 启用配额后的约束:一旦命名空间设置了 CPU 或内存配额,创建负载时必须显式设置 requests/limits,否则将被拒绝;若配额值为 0 表示不限制该资源。
  • 默认与兜底:为避免用户遗漏,可配合 LimitRanger 准入控制器为未设置资源的 Pod 填充默认值。
  • 系统命名空间:如 kube-system、kube-public 通常不支持设置资源配额。

三 常用资源配置示例

    1. Pod/容器级资源请求与限制
apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
  - name: app
    image: nginx:1.25
    resources:
      requests:
        memory: "128Mi"
        cpu: "250m"
      limits:
        memory: "256Mi"
        cpu: "500m"
    1. 命名空间级配额(计算资源 + 对象数量)
apiVersion: v1
kind: ResourceQuota
metadata:
  name: ns-quota
  namespace: team-a
spec:
  hard:
    requests.cpu: "2"
    requests.memory: "4Gi"
    limits.cpu: "4"
    limits.memory: "8Gi"
    pods: "10"
    services: "5"
    persistentvolumeclaims: "5"
    1. HPA 自动扩缩容(基于 CPU 利用率)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: demo-hpa
  namespace: team-a
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: demo
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 60
    1. GPU 资源(NVIDIA)
apiVersion: v1
kind: Pod
metadata:
  name: gpu-demo
spec:
  containers:
  - name: cuda
    image: nvidia/cuda:12.2-base
    resources:
      limits:
        nvidia.com/gpu: 1

前提:节点已安装 NVIDIA 驱动Device Plugin(如通过 DaemonSet 部署)。

四 调度与节点维度管理

  • 节点亲和性与反亲和性:将 Pod 调度到满足特定标签的节点,或避免同组 Pod 挤在同一节点,提升可用性与资源利用。
  • 污点与容忍度:通过 Taints/Tolerations 为专用节点(如 GPU/高内存)建立“准入门槛”,仅允许具备相应容忍的 Pod 调度。
  • 拓扑分布约束:结合 topologySpreadConstraints 将副本分散到不同节点/可用区,增强容错与资源分布均衡。

五 监控 验证与优化建议

  • 观测与排障
    • 查看节点资源与可分配量:kubectl describe node < node>
    • 查看命名空间配额使用:kubectl describe quota -n < ns>
    • 查看 Pod 事件与状态:kubectl describe pod < pod>
  • 容量规划与弹性
    • 为关键命名空间设置 ResourceQuotaLimitRange,避免“吵闹邻居”。
    • 结合 HPACluster Autoscaler 实现按需扩缩,提升资源利用率与稳定性。
  • 运行时与网络
    • 容器运行时优先选择 containerd/CRI-O;CNI 可选 Calico/Flannel 等高性能方案,并配合网络策略减少无效流量。
  • GPU 管理要点
    • 使用 nvidia.com/gpu 资源请求;节点需预装驱动与 NVIDIA Device Plugin,否则 Pod 将处于 Pending 状态。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS环境下Kubernetes的资源管理
本文地址: https://pptw.com/jishu/754308.html
如何在CentOS上配置Kubernetes的网络插件 如何利用CentOS提升Kubernetes效率

游客 回复需填写必要信息