温馨提示×

在Debian上如何管理Kubernetes资源

小樊
44
2025-12-30 18:43:10
栏目: 智能运维

在 Debian 上管理 Kubernetes 资源的实用指南

一 基础准备与常用命令

  • Debian 上管理集群资源,核心工具是 kubectl。可通过官方 APT 仓库安装:sudo apt update && sudo apt install -y kubelet kubeadm kubectl,完成后用 kubectl cluster-info、kubectl get nodes 验证连通性与节点状态。kubectl 支持创建、应用、查看、删除、日志与进入容器等日常操作,是资源查看与变更的统一入口。

二 资源配置与请求限制

  • 为工作负载设置合理的 requests/limits,避免资源争用与 OOM。示例:
    apiVersion: v1
    kind: Pod
    metadata:
      name: app
    spec:
      containers:
      - name: app
        image: nginx:1.25
        resources:
          requests:
            cpu: "500m"
            memory: "512Mi"
          limits:
            cpu: "1"
            memory: "1Gi"
    
  • Debian 节点上,确保已 禁用 Swap(kubelet 要求),并为容器运行时(如 containerd)与 kubelet 配置合适的系统资源与参数,减少抖动与驱逐。

三 命名空间级配额与默认限制

  • 使用 ResourceQuota 限制命名空间总量(如 CPU、内存、Pod 数量),防止团队或项目超额使用:
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: ns-quota
      namespace: team-a
    spec:
      hard:
        requests.cpu: "4"
        requests.memory: "8Gi"
        limits.cpu: "8"
        limits.memory: "16Gi"
        pods: "20"
    
  • 使用 LimitRange 为容器设置默认请求/限制与取值范围,避免单个容器滥用:
    apiVersion: v1
    kind: LimitRange
    metadata:
      name: default-limits
      namespace: team-a
    spec:
      limits:
      - default:
          cpu: "200m"
          memory: "256Mi"
        defaultRequest:
          cpu: "100m"
          memory: "128Mi"
        type: Container
    
  • 二者配合可实现“总量可控 + 单容器合规”的治理目标。

四 调度与节点资源管理

  • 通过 节点亲和性/反亲和性 将负载调度到具备特定能力的节点(如 GPU、本地 SSD):
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
            - key: accelerator
              operator: In
              values:
              - nvidia-t4
    
  • 结合 污点与容忍度(Taints/Tolerations) 为专用节点(如 GPU、高性能存储)保留资源,避免普通负载误调度。
  • GPU 等专用硬件,确保节点正确打标签、驱动与设备插件就绪,并在 Pod 中声明资源请求,实现按需调度与隔离。

五 弹性伸缩与监控

  • 基于指标自动扩缩容:
    • HPA(CPU/内存)
      apiVersion: autoscaling/v2
      kind: HorizontalPodAutoscaler
      metadata:
        name: app-hpa
      spec:
        scaleTargetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: app
        minReplicas: 2
        maxReplicas: 10
        metrics:
        - type: Resource
          resource:
            name: cpu
            target:
              type: Utilization
              averageUtilization: 70
      
    • 如集群安装了 Metrics Server,可进一步使用 VPA 做垂直伸缩(谨慎在生产使用)。
  • 建议部署 Prometheus + Grafana 监控节点与 Pod 的 CPU/内存/网络/存储 使用,结合告警规则与面板进行容量规划与异常定位。

0