centos

centos k8s怎样限制资源

小樊
110
2025-02-14 14:33:32
栏目: 智能运维

在CentOS上使用Kubernetes(k8s)限制资源主要涉及到两个方面:Pod级别的资源限制和节点级别的资源限制。以下是具体的操作步骤:

Pod级别的资源限制

  1. CPU限制

    • 使用cpu字段来限制Pod可以使用的CPU资源。
    • 可以使用cpu的单位为millicpu(毫核)或者cpu(核心)。
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: nginx
        resources:
          limits:
            cpu: "500m"  # 限制为500毫核
          requests:
            cpu: "200m"  # 请求200毫核
    
  2. 内存限制

    • 使用memory字段来限制Pod可以使用的最大内存。
    • 可以使用Mi(兆字节)、Gi(吉字节)等单位。
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: nginx
        resources:
          limits:
            memory: "512Mi"  # 限制为512兆字节
          requests:
            memory: "256Mi"  # 请求256兆字节
    
  3. GPU限制(如果使用GPU)

    • 需要确保你的Kubernetes集群支持GPU,并且节点上安装了相应的GPU驱动和Kubernetes设备插件。
    • 使用nvidia.com/gpu来指定GPU资源。
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: nvidia/cuda:11.0-base
        resources:
          limits:
            nvidia.com/gpu: 1  # 限制为1个GPU
    

节点级别的资源限制

  1. 节点亲和性

    • 使用节点亲和性来确保Pod只调度到满足特定资源要求的节点上。
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/e2e-az-name
                operator: In
                values:
                - e2e-az1
                - e2e-az2
      containers:
      - name: my-container
        image: nginx
        resources:
          limits:
            cpu: "500m"
            memory: "512Mi"
    
  2. Taints和Tolerations

    • 使用节点污点(Taints)和Pod容忍度(Tolerations)来控制哪些Pod可以被调度到特定的节点上。
    # 在节点上设置污点
    kubectl taint nodes <node-name> key=value:effect
    
    # 在Pod上设置容忍度
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: nginx
        tolerations:
        - key: "key"
          operator: "Equal"
          value: "value"
          effect: "NoSchedule"
    

验证资源限制

你可以使用以下命令来验证Pod的资源限制是否生效:

kubectl describe pod <pod-name>

这将显示Pod的详细信息,包括资源请求和限制。

通过以上步骤,你可以在CentOS上使用Kubernetes有效地限制Pod和节点的资源使用。

0
看了该问题的人还看了