我正在尝试了解使用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"
答案 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请求。