我正在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,类型为statefulsets
或deployment
,带有音量。
现在,我正在考虑将HPA应用于微服务和应用程序。
有人可以建议如何在GKE上添加节点池并自动缩放。当我在池中添加节点并从GCP控制台中删除旧节点时,整个集群将重新启动,并且服务会停顿一会儿。
另外,我正在考虑使用affinity/anti-affinity
,因此有人可以建议使用基础架构并实施HPA。
答案 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的特殊问题的答案。