可以对container的 cpu memory gpu 进行资源管理。防止因单个容器过多使用资源
pod.spec.containers.resources
# 内存单位 Mi Gi,cpu单位m
resources:
requests:
cpu: 100m # 1000m=1核cpu
memory: 1000Mi #memory: 10Gi
limits:
cpu: 100m
memory: 1000Mi
nvidia.com/gpu: 1
LimiteRange
从命名空间的角度对容器进行资源限制,是对resources 的默认值,最大值,最小值的限制。
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-min-max-demo-lr
namespace: study
spec:
limits:
- max:
cpu: "1000m" # 最大值
memory: 1Gi
min:
cpu: "100m" # 最小值
memory: 256Mi
default:
cpu: 1 # 当容器没有指定 resouces.limits.cpu时指定为1核
memory: 512Mi # 当容器没有指定 resouces.limits.memory时指定为512Mi
defaultRequest:
cpu: 0.5 # 当容器没有指定 resouces.requests.cpu时指定为0.5
memory: 256Mi # 当容器没有指定 resouces.requests.memory时指定为256Mi
maxLimitRequestRatio:
cpu: 2 # 指定limit / request 的最大比值
memory: 2 # 指定 limit / request 的最大比值
type: Container # 指定作用范围, 在 kubectl get limits cpu-min-max-demo-lr -o yaml 中type为pvc
resourceQuota
对名称空间资源的限制,包括cpu memory pod configmap secrete services等
apiVersion: v1
kind: ResourceQuota
metadata:
name: cpu-mem-pod-max
namespace: study
spec:
hard:
# comput-quota
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
# resouces-quota
configmaps: "10"
persistentvolumeclaims: "4"
pods: "4"
replicationcontrollers: "20"
secrets: "10"
services: "10"
services.loadbalancers: "2"
kubectl apply -f http://47.113.100.31:9000/test/resourcequota.yaml
kubectl describe quota -n study
查询容器的资源使用状态
docker stats -a
docker stats 容器ID
查询名称空间的资源限额
kubectl describe limits -n study
查看名称空间资源配额
kubectl describe quota -n study