一、概述

        当kubernetes调度创建Pod后,Pod是否有足够的资源来运行容器,是非常重要的。资源分为两种类型——容器请求的资源和容器被限制的资源。

请求和限制是kubernetes控制集群cpu和内存等资源的重要方式,他们是两种不同的机制

  • 容器请求的资源:容器向Kubernetes集群请求的资源
  • 容器被限制的资源:kubernetes集群限制容器运行时使用的最多资源

资源的参数名称

描述

limits.cpu

Pod中所有非终止状态容器可以使用CPU总量的阈值(k8s提供的最大值,最多只能提供这么多)

limits.memory

Pod中所有非终止状态容器可以使用内存总量的阈值(k8s提供的最大值,最多只能提供这么多)

requests.cpu

Pod中所有非终止状态容器可以使用CPU的最小值(需要k8s提供的最小值)

requests.cpu

Pod中所有非终止状态容器可以使用内存总量小值(需要k8s提供的最小值)

二、使用

2.1 编写资源清单

[root@master hpa-demo]# cat resourcelimit.yaml 
apiVersion: v1
kind: Pod
metadata: 
  name: resourcelimit-demo
spec:
  containers:
  - name: db
    image: mysql
    imagePullPolicy: IfNotPresent
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        # 设置请求内存为64M
        memory: "64Mi"
        # 设置请求的CPU资源为0.25核
        # 数字1表示1核CPU,1.5表示1.5核CPU
        cpu: "250m"
      limits:
        # 设置请求的内存为128m
        memory: "128Mi"
        # 请求的cpu资源为0.5核
        cpu: "500m"

  - name: wp
    image: wordpress
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
 

2.2 应用资源

[root@master hpa-demo]# kubectl apply -f resourcelimit.yaml 

3.3 查看

[root@master hpa-demo]# kubectl get pod  -o wide

kubernetes中Pod资源的使用限制_kubernetes

[root@master hpa-demo]# kubectl describe nodes node1 #查看资源限制信息

kubernetes中Pod资源的使用限制_kubernetes_02

kubectl describe pod resourcelimit-demo

kubernetes中Pod资源的使用限制_kubernetes_03