配置Kubernetes至少有一个pod

时间:2015-12-08 08:58:09

标签: kubernetes google-kubernetes-engine

我们有一个有3个节点的GKE集群。

在这些节点上,一个ReplicationController被设置为运行3个类型为A的pod,另一个ReplicationController被设置为运行4个类型为B的pod。

我们设置了一个实例组管理器来自动调整CPU上的节点。

由于群集上没有负载,因此缩小为1个节点。 现在该节点只运行了2个类型为B的pod和0个类型为A的pod。

我有点期待它在缩小之后至少有1个A和1个B,但这并没有发生。 有没有办法配置Kubernetes(或GKE)始终至少有1个pod?

2 个答案:

答案 0 :(得分:1)

群集自动缩放器通常根据target utilization level of your VMs设置节点数。它对VM上运行的内容(pod或其他)一无所知,只关注利用率。

Google容器引擎/ Kubernetes调度程序查看每个容器的资源请求,并找到运行该容器的可用节点。如果没有可用空间,则pod将保持Pending状态而不是开始运行。

听起来您遇到的情况是正在运行的pod没有使用足够的CPU来使自动扩展器向您的群集添加新节点,但是现有节点没有足够的容量来容纳您想要安排。

配置VM自动缩放器时,您可以根据希望始终在群集中运行的最小pod足迹来设置最小VM数(请参阅https://cloud.google.com/compute/docs/reference/latest/autoscalers#resource)。然后,自动缩放器不会删除所有pod运行所必需的VM。

您还可以查看Kubernetes 1.1中的Horizontal Pod Autoscaler,根据观察到的CPU使用情况,增加复制控制器中的pod副本数量。

答案 1 :(得分:0)

是的,有。使用Replication Controller并设置replicas: 1