Kubernetes中Pod资源控制
1、何为资源控制
Kubenetes中为Pod提供了资源请求和资源限制,当一个Pod被调度到某个k8s节点的中资源请求能够让该Pod至少拥有设定的资源,而资源限制是让该Pod占用资源不能超过其设定的值。通过resources
对象进行资源控制
如果k8s某台节点的资源不满足Pod的资源请求设置的值,则Pod无法被调度
2、Resources实现
resources 对象进行资源限制,具体:requests 要分分配的资源,limits为最高请求的资源值。可以简单理解为初始值和最大值。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
metadata:
labels:
app: nginx-hpa
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
name: http
protocol: TCP
resources:
requests:
cpu: 50m
memory: 100Mi
limits:
cpu: 100m
memory: 200Mi
单位后缀m
表示千分之一核,也就是说 1 Core = 1000m。因此该资源对象指定容器进程需要 50/1000 核(5%)才能被调度,并且允许最多使用 100/1000 核(10%)。同样,2000m 表示两个完整的 CPU 核心,你也可以写成 2 或者 2.0。
也可以这样写
resources:
requests:
cpu: 2
memory: 1Gi
limits:
cpu: 4
memory: 2Gi
还可以这样写
resources:
requests:
cpu: 0.5
memory: 150mi
limits:
cpu: 2.5
memory: 1Gi