单节点kubernetes集群上的HPA实施

时间:2019-09-17 07:28:53

标签: docker elasticsearch kubernetes google-cloud-platform google-kubernetes-engine

我正在GKE上运行Kubernetes集群。运行整体应用程序,现在迁移到微服务,因此两者都在集群上并行运行。

整体应用程序是简单的python应用程序,占用了200Mb的内存。

K8s集群是具有15Gb memory and 4vCPU的简单单节点集群GKE。

现在,我正在考虑将HPA应用于我的微服务和整体应用程序。

在单节点上,我还安装了Graylog堆栈,其中包括(elasticsearch, mongoDb, Graylog pod)。由命名空间Devops分隔。

在另一个名称空间监视中,正在运行Grafana, Prometheus, Alert manager

还有ingress controller and cert-manager正在运行。

现在在默认名称空间中,还有另外Elasticsearch个供应用程序使用,正在运行Redis, Rabbitmq。这些都是单个Pod,类型为statefulsetsdeployment,带有音量。

现在,我正在考虑将HPA应用于微服务和应用程序。

有人可以建议如何在GKE上添加节点池并自动缩放。当我在池中添加节点并从GCP控制台中删除旧节点时,整个集群将重新启动,并且服务会停顿一会儿。

另外,我正在考虑使用affinity/anti-affinity,因此有人可以建议使用基础架构并实施HPA。

1 个答案:

答案 0 :(得分:1)

从您的问题措辞中,我怀疑您想移动当前工作负载到新池中而不会受到干扰。

由于此操作表示自愿中断,因此您可以先将PodDisruptionBudget定义为control the number of pods that can be evicted in this voluntary disruption operation

  

PDB限制了由于自愿中断而同时下降的复制应用程序的pod数量。

PDB中的设置取决于您的应用程序和业务需求,有关要应用的值的参考,您可以选中this

在此之后,您可以drain安排应用程序的节点,因为它将受到预算的“保护” ,并且drain使用{{3} },而不是直接删除吊舱,这样可以使驱逐变得顺畅。

关于Affinity,我不确定它是否适合您要实现的上述目标。但是,有一个关于Eviction API的特殊问题的答案。