在CentOS上使用Kubernetes(k8s)限制资源主要涉及到两个方面:Pod级别的资源限制和节点级别的资源限制。以下是具体的操作步骤:
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毫核 内存限制
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兆字节 GPU限制(如果使用GPU)
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 节点亲和性
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" Taints和Tolerations
# 在节点上设置污点 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和节点的资源使用。