1. 资源配额
  2. label 和 selector
  3. readinessProbe 和 livenessProbe
resources

可以对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