kubernetes - Kubernetes Autoscaling 使用 VPA - 关闭或自动更新模式?
问题描述
为了一个项目的需要,我在 GKE 上创建了 2 个 Kubernetes 集群。
集群 1 :一个 Pod中的 10 个容器
集群2:10 个不同 Pod中的 10 个容器
所有的容器都是相互连接的,构成一个应用程序。
我想做的是产生一些负载并观察vpa将如何自动缩放容器..
到目前为止,使用“自动”模式,我注意到 VPA 仅在开始时更改值一次,而不是在我生成负载时,而且上限太高,所以不需要任何更改!
你会建议我:
1)使用自动或推荐模式?
和
2)创建我的应用程序的 1 或 2 个副本?
另外我想说 10 个容器中有 2 个是mysql和mongoDB。所以如果我必须创建 2 个副本,我应该使用statefulsets 或 operator,对吗?
非常感谢你!!
解决方案
不确定你说这个的时候是不是真的
集群 1:一个 Pod 中的 10 个容器
集群 2:不同 Pod 中的 10 个容器
一开始您没有遵循最佳实践,理想情况下,您应该将单个容器保存在单个 POD 中
在一个 pod 中运行 10 个容器太多了,如果存在相互依赖关系,您的代码应该使用 K8s 服务名称来相互连接。
为我的应用程序创建 1 个或 2 个副本?
是的,运行应用程序的多个副本总是更好,所以如果由于任何原因甚至节点出现故障,您在另一个节点上的 POD 也会运行。
另外我想说 10 个容器中有 2 个是 mysql 和 mongoDB 。所以如果我必须创建 2 个副本,我应该使用 statefulsets 或操作符,对吗?
您可以在其中使用运算符和有状态集,这可能是运算符理想地创建有状态集。
除非您有良好的 DBA 经验并且您知道,否则手动实现跨副本复制 MySQL 将很困难。
与操作员一起,您将获得自动备份、复制自动管理和其他类似功能的好处。
操作员间接创建有状态集或部署,但您不必管理太多,也不必担心复制和故障转移计划以及数据库策略。
推荐阅读
- c++ - 可以使用不可复制的成员作为使对象不可复制的替代方法吗?
- javascript - 使用javascript对数组问题进行排序
- android - 音频流和获取幅度以同时绘制波形
- javascript - 为什么 Math.log(0) 在 JavaScript 中返回 -Infinity?
- android - 每次按时都无法下载 httpclient.jar 再试一次
- c++ - 复制构造函数和传递类
- python - Django过滤任何日期范围包含的日期
- docker - Kubernetes Pod 卡在 CrashLoopBackOff
- python - 芹菜商店在什么时候产生结果?
- docker - 有没有办法找到 Kitematic 在与 docker 交互时使用的等效命令行调用?