容器资源配额
容器中的程序要运行,肯定是要占用一定的资源的,比如cpu和内存等,如果不对某个容器的资源做限制,那么它肯定要消耗大量资源,导致其它容器无法运行。针对这种情况,kubernetes提供了对内存和cpu的资源进行配额的机制,这种机制主要通过resources选项实现,他有两个子选项
limits: 用于限制运行时容器的最大占用资源,当容器占用资源超过limits时会被终止,并运行重启
requests: 用于设置容器需要的最小资源,如果环境资源不够,容器将无法启动
可以通过上面两个选项设置资源的上下限。
编写一个测试案例,创建pod-resources.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-resources
namespace: dev
spec:
containers:
- name: nginx
image: nginx:1.17.1
resources: 资源配额
limits: 资源上限
cpu: "2" cpu限制,单位是core数
memory: "512Mi" 内存限制
requests: 请求资源下限
cpu: "1" cpu限制,单位core数
memory: "16Mi" 内存限制
创建pod,并查看
kubectl create -f pod-resources.yaml
我们把内存调整为16G,看是否可以启动
很显然实际内存不够,不能够启动。
cpu和memory的单位
- cpu: core数,可以为整数或者小数
- memory:内存大小,可以使用Gi、Mi、G、M等