这一小节讲述 如何对容器分配CPU资源和对CPU资源使用做限制。 一个容器被保证有足够的CPU资源可以被调用,但是也不允许使用超过CPU资源的限制。

创建一个命名空间

kubectl create namespace cpu-example

定义一个CPU资源请求和CPU资源限制

资源请求 resources:requests

资源限制 resources:limits

在这个练习中,你创建了一个POD拥有 0.5cpu和1cpu的限制 apiVersion: v1 kind: Pod metadata: name: cpu-demo namespace: cpu-example spec: containers:

  • name: cpu-demo-ctr image: vish/stress resources: limits: cpu: "1" requests: cpu: "0.5" args:
    • -cpus
    • "2"

args 设置了分配2个CPU

创建POD

kubectl create -f https://k8s.io/examples/pods/resource/cpu-request-limit.yaml --namespace=cpu-example

验证POD是否在运行

kubectl get pod cpu-demo --namespace=cpu-example

查看POD的详细信息

kubectl get pod cpu-demo --output=yaml --namespace=cpu-example

显示POD的资源分配为 500 milliCPU 和 1 CPU的限制

resources: limits: cpu: "1" requests: cpu: 500m

可以使用以下命令来获取容器的指标

kubectl top pod cpu-demo --namespace=cpu-example

以下为显示的内存分配指标 NAME CPU(cores) MEMORY(bytes) cpu-demo 974m <something>

可以看到,虽然CPU设置了请求分配是2,但是限制是1,所以多于的资源请求会被砍掉。

CPU 单元

CPU资源使用CPU单元来衡量。 在k8s里面,一个CPU相当于: