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
posted @ 2020-03-26 17:13  jasonminghao  阅读(343)  评论(0编辑  收藏  举报