一旦使用JMeter客户端增加了负载,而我的部署服务被中断,则在GCP / GKE控制台上显示-
Upgrading cluster master
The values shown below are going to change soon.
我的kubectl客户端在升级过程中抛出此错误-
Unable to connect to the server: dial tcp 35.236.238.66:443: connectex: No connection could be made because the target machine actively refused it.
如何停止升级或防止服务中断?如果服务中断,那么这种自动扩展将没有任何好处。我是GKE的新手,如果我在这里缺少任何配置或参数,请告诉我。 我正在使用此命令来创建我的集群-
gcloud container clusters create ajeet-gke --zone us-east4-b --node-locations us-east4-b --machine-type n1-standard-8 --num-nodes 1 --enable-autoscaling --min-nodes 4 --max-nodes 16
它不是升级的k8s版本。因为它可以在较小的负载下正常工作,但是随着负载的增加,群集开始升级主服务器。因此,看起来主服务器正在调整自身大小以容纳更多节点。升级后,我可以在GCP控制台上看到更多节点。 https://github.com/terraform-providers/terraform-provider-google/issues/3385
下面的命令说实例组上没有启用自动缩放。
> gcloud compute instance-groups managed list
NAME AUTOSCALED LOCATION SCOPE ---
ajeet-gke-cluster- no us-east4-b zone ---
default-pool-4***0
解决方法
对不起,忘记在此处进行更新,我找到了解决该问题的方法-将群集创建命令分为两个步骤后,群集无需自动重新启动主节点即可自动扩展:
gcloud container clusters create ajeet-ggs --zone us-east4-b --node-locations us-east4-b --machine-type n1-standard-8 --num-nodes 1
gcloud container clusters update ajeet-ggs --enable-autoscaling --min-nodes 1 --max-nodes 10 --zone us-east4-b --node-pool default-pool
答案 0 :(得分:1)
为防止这种情况,您应该始终使用硬编码的群集版本创建群集,直到可用的最新版本。
请参阅文档:https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture#master
这意味着Goolge正在管理母版,这意味着如果您的母版不是最新的,它将被更新为最新版本,并允许Google限制当前管理的版本数。 https://cloud.google.com/kubernetes-engine/docs/concepts/regional-clusters
现在,为什么在更新期间会中断服务:由于您处于只有一个主服务器的分区模式,因此,为防止这种情况,您应该进入具有多个主服务器的区域集群模式,以便进行清晰的滚动更新。 / p>
答案 1 :(得分:0)
除非节点中启用了autoscaling feature,否则主节点不会调整其大小。
如以上答案中所述,这是node-pool级别的功能。通过查看问题的描述,似乎在节点池上启用了“自动缩放”功能,最终GKE的集群自动缩放器会根据您要运行的工作负载的需求自动调整集群的大小(即,当有Pod由于诸如 CPU 之类的资源短缺而无法安排时间。
此外,Kubernetes群集自动缩放不使用托管实例组自动缩放器。它在Kubernetes主服务器上运行一个集群自动缩放器控制器,该控制器使用Kubernetes特定的信号来扩展您的节点。
因此,强烈建议不要在Kubernetes Engine创建的实例组上使用(或依赖于MIG显示的自动缩放状态)Compute Engine的自动缩放功能。