22

我们的一些容器在内存高于当前部署在我们的容器引擎集群中的实例类型时运行得更好。是否有推荐的做法是在创建容器引擎集群后为更大的实例重建容器引擎模板?

例如,从 GCE 实例 n1-standard-2 到 n1-highmem-8 以运行具有 8GB 以上 RAM 的容器?

4

5 回答 5

21

Container Engine 目前没有用于执行此操作的 API,但由于它为集群中的节点使用Compute Engine 实例组,因此您实际上可以在不需要 GKE 帮助的情况下对其进行更新。在 Developers Console 中,复制类似于“gke--”的实例模板并修改其中的机器类型,然后编辑名称相似的实例组以使用新模板。您可以分别在Compute > Compute Engine > Instance templates和下找到这些选项。Compute > Compute Engine > Instance groups

于 2015-07-08T20:35:04.860 回答
15

另一种方法是:

(1) 使用垂直扩展的机器类型为 GKE 集群创建一个新的节点池......

$ gcloud container node-pools create pool-n1std2 --zone europe-west1-d --cluster prod-cluster-1 --machine-type  n1-standard-2  --image-type gci --disk-size=250 --num-nodes 3

(2) 然后,将工作负载从旧节点迁移...

$ kubectl drain gke-prod-cluster-1-default-pool-f1eabad5-9ml5 --delete-local-data --force

(3) 最后,删除旧的节点池

$ gcloud container node-pools delete default-pool --cluster=prod-cluster-1

笔记:

  • 警告:第 2 步会删除节点本地卷,例如emptyDir!!!
  • 需要对池中的每个节点重复第 2 步
  • nodeSelector可以配置适当的方式将 Pod 调度到新池中,而不是耗尽节点。要匹配的标签将是cloud.google.com/gke-nodepool: pool-n1std2
于 2017-02-17T12:40:47.680 回答
4
于 2016-07-08T13:21:02.633 回答
3

有一个官方的 GKE 教程:

将工作负载迁移到不同的机器类型
本教程演示了如何将 GKE 集群上运行的工作负载迁移到同一集群内的一组新节点,而不会导致应用程序停机。如果您想将工作负载迁移到具有不同机器类型的节点。

https://cloud.google.com/kubernetes-engine/docs/tutorials/migrating-node-pool

于 2019-02-16T16:42:40.107 回答
2

从 GCE 实例 n1-standard-2 到 n1-highmem-8 以运行具有 8GB 以上 RAM 的容器?

Kubernetes 1.12(2018 年 9 月)应该通过Kubernetes 问题 21 “Pods 的垂直缩放”(或“ VPA ”:Vertical Pod Autoscaler)提供一种官方方式来管理您现有的资源。

正如博客上宣布的那样:

Pod 的垂直扩展现在处于测试阶段,这使得在其生命周期内改变 Pod 的资源限制成为可能。特别是,这对宠物很有价值(即销毁和重建成本非常高的豆荚)。

警告

这是在 1.12 左右登陆,但它是一个独立插件的发布。它不包含在 1.12 Kubernetes 版本中。
Sig-Architecture 在此周期开始时决定将 VPA API 保留为 CRD,因此不将其绑定到任何特定的 K8S 版本。

查看更多:

https://banzaicloud.com/img/blog/cluster-autoscaler/vertical-pod-autoscaler.png

BanzaiCloud 的最后一篇文章有​​点过时(一些链接不再有效),但它仍然说明了如何管理 pod 资源。

于 2018-09-29T06:46:35.157 回答