首页 > 解决方案 > Kubernetes Autoscaling 使用 VPA - 关闭或自动更新模式?

问题描述

为了一个项目的需要,我在 GKE 上创建了 2 个 Kubernetes 集群。

集群 1 :一个 Pod中的 10 个容器

集群2:10 个不同 Pod中的 10 个容器

所有的容器都是相互连接的,构成一个应用程序。

我想做的是产生一些负载并观察vpa将如何自动缩放容器..

到目前为止,使用“自动”模式,我注意到 VPA 仅在开始时更改值一次,而不是在我生成负载时,而且上限太高,所以不需要任何更改!

你会建议我:

1)使用自动或推荐模式?

2)创建我的应用程序的 1 或 2 个副本?

另外我想说 10 个容器中有 2 个是mysqlmongoDB。所以如果我必须创建 2 个副本,我应该使用statefulsets 或 operator,对吗?

非常感谢你!!

标签: kubernetesgoogle-kubernetes-enginecluster-computingrecommendation-engine

解决方案


不确定你说这个的时候是不是真的

集群 1:一个 Pod 中的 10 个容器

集群 2:不同 Pod 中的 10 个容器

一开始您没有遵循最佳实践,理想情况下,您应该将单个容器保存在单个 POD 中

在一个 pod 中运行 10 个容器太多了,如果存在相互依赖关系,您的代码应该使用 K8s 服务名称来相互连接。

为我的应用程序创建 1 个或 2 个副本?

是的,运行应用程序的多个副本总是更好,所以如果由于任何原因甚至节点出现故障,您在另一个节点上的 POD 也会运行。

另外我想说 10 个容器中有 2 个是 mysql 和 mongoDB 。所以如果我必须创建 2 个副本,我应该使用 statefulsets 或操作符,对吗?

您可以在其中使用运算符和有状态集,这可能是运算符理想地创建有状态集。

除非您有良好的 DBA 经验并且您知道,否则手动实现跨副本复制 MySQL 将很困难。

与操作员一起,您将获得自动备份、复制自动管理和其他类似功能的好处。

操作员间接创建有状态集或部署,但您不必管理太多,也不必担心复制和故障转移计划以及数据库策略。


推荐阅读