在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和节点的资源使用。