(如何)在GKE中自动升级节点池?

时间:2019-02-26 09:15:53

标签: kubernetes google-kubernetes-engine

我们在GKE上部署了相当大的kubernetes,我们希望通过启用自动升级使我们的生活更轻松一些。 documentation on the topic告诉您如何启用它,但不告诉您如何工作

我们在测试群集上启用了该功能,但是从未升级任何节点(尽管UI一直困扰我们“升级可用”)。

文档称它将更新为“最新稳定”版本,并且“由GKE团队酌情定期进行”-两者都没有很大帮助。

用户界面始终显示:“下一次自动升级:未安排”

有人在生产中使用了此功能,可以阐明它的实际作用吗?

我做了什么:

  • 我在 nodepools 上启用了此功能(不是集群本身)
  • 我设置了一个维护窗口
  • 集群版本为1.11.7-gke.3
  • 节点池的版本为1.11.5-gke.X
  • 可用的最新版本是1.11.7-gke.6

我所期望的:

  • 节点池将更新为1.11.7-gke.3(默认群集版本)或1.11.7-gke.6(最新版本)
  • 更新将在下一个维护窗口中发生
  • 否则,该更新将像“手动”更新一样工作

实际发生的事情:

  • 没事
  • 节点池在1.11.5-gke.X上停留了一周以上

我的问题

  • nodepool版本是否应该更新?
  • 如果是,什么时候?
  • 如果是的话,是什么版本?

3 个答案:

答案 0 :(得分:0)

此功能将运行“旧” Kubernetes版本的节点池中的虚拟机(Kubernetes节点)替换为运行“新”版本的VM。

节点池的“升级”操作是以滚动方式完成的:不同于GKE删除所有VM并同时重新创建它们(除非集群中只有1个节点)。默认情况下,这些节点将被更新的节点一对一替换(尽管这可能会更改)。

GKE内部主要使用managed instance groups的功能来管理节点池上的操作。

您可以通过指定某些“维护窗口”在how to schedule node upgrades上找到文档,以使您受到的影响最小。 (本文还提供了有关升级如何发生的更多见解。)

也就是说,您可以禁用自动升级手动升级集群(尽管不建议这样做)。一些GKE用户拥有数千个节点,因此对于他们来说,一次升级VM是不可行的。

为此,GKE提供了一个选项,可让您选择“一次升级多少个节点”:

gcloud container clusters upgrade \
    --concurrent-node-count=CONCURRENT_NODE_COUNT

此标志的文档说:

  

要同时升级的节点数。有效值为[1,20]。建议的最佳做法是将此值设置为不超过群集大小的3%。'

答案 1 :(得分:0)

我最终会自己回答。自动升级可以起作用,尽管升级该版本花了几天到一周的时间。

除版本更新外,没有任何计划升级日期的指示。

它将升级到群集的当前主版本。

答案 2 :(得分:0)

关于节点池为何无法自动升级或不计划升级的原因,我想分享另外两种可能性。

我们的一个项目也遇到了类似的问题,即主版本已自动升级到 > traceback() 7: FUN(X[[i]], ...) 6: lapply(p, function(x) as.character(x)[1]) 5: `xgb.parameters<-`(`*tmp*`, value = params) 4: xgb.Booster.handle(params, list(dtrain, dtest)) 3: FUN(X[[i]], ...) 2: lapply(seq_along(folds), function(k) { dtest <- slice(dall, folds[[k]]) dtrain <- slice(dall, unlist(folds[-k])) handle <- xgb.Booster.handle(params, list(dtrain, dtest)) list(dtrain = dtrain, bst = handle, watchlist = list(train = dtrain, test = dtest), index = folds[[k]]) }) 1: xgb.cv(data = train, folds = folds, params = params, nrounds = 2000) ,但是我们的节点池在1.14.10-gke.27上停留了一个多月。

达到节点配额

由于节点配额,节点池升级可能会失败(尽管我不确定Web控制台会说1.14.10-gke.24)。通过node upgrades documentation,它建议我们可以运行以下命令查看所有失败的升级操作:

Next auto-upgrade: Not scheduled

自动节点升级仅适用于次要版本

在完成了故障排除步骤后,我与GCP支持小组联系,并为所有在Google工作的人打开了一个案例(gcloud container operations list --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/[PROJECT_ID]/zones/[ZONE]/clusters/[CLUSTER_NAME]" )。他们告诉我以下内容:

自动节点升级: 让我解释一下,节点版本不需要自动升级,一个节点中存在三个升级:次要版本(1.X),修补程序版本(1.XY)和安全更新和错误修复(1.XY-gke.N) ,请查看此文档[2]。自动节点升级可以从次要版本开始进行,并且在您的情况下,升级是无法自动升级的安全更新。

我回复了,他们确认自动节点升级只会在次要版本及更高版本上进行。我已要求他们提交request to update their documentation,因为(在此回复之时)他们的node auto-upgrade documentation中没有任何地方