同时自动缩放卷和 Pod (Kubernetes)

Posted

技术标签:

【中文标题】同时自动缩放卷和 Pod (Kubernetes)【英文标题】:Autoscale volume and pods simultaneously (Kubernetes) 【发布时间】:2017-05-20 16:01:54 【问题描述】:

我正在使用具有持久卷的 Kubernetes 部署来运行我的应用程序,例如这个示例; https://github.com/kubernetes/kubernetes/tree/master/examples/mysql-wordpress-pd ,但是当我尝试添加更多副本或自动缩放时,所有新 pod 都会尝试连接到同一个卷。 如何同时为每个新 pod 自动创建新卷,就像 statefulsets(petsets) 一样。

【问题讨论】:

PetSets(或 Kubernetes 1.5 中的 StatefulSets)就是为了解决这个问题而设计的……为什么不用它们呢? 我只是想知道是否可以使用“部署”来完成它并使用“volumeClaimTemplates”之类的东西来自动生成 PetSets/StatefulSets 正在使用的新卷 @monatich,你不能用部署做到这一点。部署管理用于无状态应用程序的副本集,这些应用程序通常不需要访问自己的特定存储。正确的解决方案是一个 StatefulSet,或者多个连接到自己存储的 ReplicaSet。 谢谢,我要使用 StatefulSets 【参考方案1】:

我对 K8S 1.6 得出的结论是你不能。但是,您可以使用 NFS。如果像 CrateDB 一样,您的集群可以为卷挂载下的每个节点创建一个文件夹,那么您可以自动扩展。因此,我使用此配置将 CrateDB 自动扩展为部署:

https://github.com/erik777/kubernetes-cratedb

它依赖于一个 nfs 服务器,我将它部署为一个带有 PVC/PV 的 RC:

SAME_BASE/kubernetes-nfs-server

它在我的 TODO 列表中,用于探索分布式文件系统,例如 GluterFS。对于 K8S 部署,您选择的文件系统就是您的补救措施。

您还可以参与 K8S 社区中的可扩展性和存储 SIG 来帮助确定此用例的优先级。向 K8S 添加功能消除了集群解决方案在共享卷中处理节点分离的要求,并防止在集群应用程序和 PV 之间引入额外的故障点。

GITHUB kubernetes/社区

希望我们能在 2.0 之前看到 K8S OTB 解决方案。

(注意:必须更改 2 个 GITHUB 链接,因为我没有“10 信誉”)

【讨论】:

感谢您的所有观点,提供信息,非常感谢您的帮助

以上是关于同时自动缩放卷和 Pod (Kubernetes)的主要内容,如果未能解决你的问题,请参考以下文章

AWS 中的 Kubernetes 自动缩放

无法获取 pod 指标 -Kubernetes

在 Kubernetes 中,如何根据队列的大小进行自动缩放?

[kubernetes] HPA实现自动水平伸缩POD

Pub Sub 数据关联与 Pod 自动缩放

如何在 GKE 自动驾驶仪中基于自定义指标实现水平自动缩放