Kubernetes在创建一个Pod时,调度器将会为Pod选择一个运行的Node。对于每一个Node来说,其都存在一个最大的资源能力(CPU和内存)。调度器在调度时,要确保Node上CPU和内存能够满足所有Pod对于计算资源的要求。

Pod中的容器启动时,request和limit会作为参数传递给容器运行时。当docker作为容器运行时:

  • spec.containers[].resources.requests.cpu:值会被转换为core,然后乘以1024,再将结果通过–cpu-shares参数的值传递给docker run命令。
  • spec.containers[].resources.limits.cpu:值会被转化为millicore,然后乘以100。结果值是作为容器在100微秒内能够使用的CPU总量时间。默认的配额周期是100ms,最小的CPU配额是1ms。
  • spec.containers[].resources.limits.memory:值会被转化为整数,在docker run命令中作为–memory字段的值。

如果容器在运行过程中使用的内存超过了内存的limit,它将会被终止。同时如果此容器是可重启的,则kubelet会在后续会重新启动它。如果容器在运行过程中使用的内存超过了内存的request,则当Node内存不足时,它所在的Pod会被删除,但容器运行过程中如果使用了超过要求CPU,容器并不会被杀死。

1.创建模板

vi nginxdeploymentresource.yml

内容如下

2.使用模板创建deployment

kubectl apply -f nginxdeploymentresource.yml

3.查看创建的pod

kubectl get pods

kubectl describe pod