不合理的CPU不足以进行部署扩展

时间:2019-06-25 18:00:12

标签: kubernetes google-kubernetes-engine

我正在尝试了解使用Load Balancer进行部署扩展。我在Google Cloud上创建了Kubernetes集群,该集群具有6个节点:每个2个核心和13Gb RAM(n1-highmem-2),并启动5个Pod和1个Load Balancer服务。每个Pod的限制为5.1Gb和1cpu。当我尝试将部署扩展到10个Pod时,出现一个错误,我的CPU数量太少。怎么样?我的集群总共有12个核心,内存为78Gb。这是我的yaml文件:

apiVersion: v1
kind: Namespace
metadata:
   name: production
   labels:
      name: production
---
apiVersion: v1
kind: Service
metadata:
   name: my-service
   namespace: production
   labels:
      run: mypod
spec:
   type: LoadBalancer
   ports:
      - port: 8050
        targetPort: 8050
        protocol: TCP
        name: http
   selector:
      run: mypod
---
apiVersion: apps/v1
kind: Deployment
metadata:
   name: test
   namespace: production
spec:
   selector:
      matchLabels:
         run: mypod
   replicas: 5
   template:
      metadata:
         namespace: production
         labels:
            run: mypod
      spec:
         containers:
            - name: test
              image: my-hello-world
              ports:
              - containerPort: 8050
              resources:
                 limits:
                    cpu: "1"
                    memory: "5.1Gi"
                 requests:
                    cpu: "1"
                    memory: "500Mi"

1 个答案:

答案 0 :(得分:2)

其他容器可能正在从您的集群请求CPU(包括kube-system个容器)。

您要为每个test容器副本请求1个CPU,但是请记住,每个容器必须在一个节点中进行调度(因为每个节点只有2个可用CPU)。这意味着:如果节点只有一个kube-system容器正在请求任何数量的CPU,则该节点不能负担一个以上的test容器。例如:

  

节点1:

     
      
  • calico-node-rqcw7-250m
  •   
  • test-83h1d-1000m
  •   
  • test-kd93h-1000m#<-----由于该节点已在使用1250m,因此无法安排该时间
  •   

使用kubectl describe nodes命令,您应该弄清楚正在哪个节点中调度了哪些容器,包括它们的CPU请求。