一、概述
当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
[root@master hpa-demo]# kubectl describe nodes node1 #查看资源限制信息
kubectl describe pod resourcelimit-demo