我想用 hpa 扩展我的 mysql 和 mongo 数据库!
我想知道我是否应该使用 Statefulsets、Operators 或两者都使用。
我也无法理解 StatefulSet 和 Operators 之间的区别。
有人可以帮助我吗?
非常感谢!!
Statefulsets 和 Operators 并不那么相似。
Statefulset 是一种 Kubernetes 资源,用于处理需要保持状态的 pod。通常情况下,如果 pod 被 Kubernetes 杀死并重新生成,它会获得一个新名称,但如果它由 Statefulset 管理,它会以相同的名称重新生成。如果您希望应用程序具有一定的持久性,您通常会使用 Statefulset。
另一方面,运算符是 Kubernetes 中使用的一种模式,通过添加由给定运算符处理的自定义资源定义 (CRD) 来扩展正常功能。
我认为如果你想实现自己的解决方案,你会使用 Statefulsets;如果你想使用现有的解决方案,你会使用 Operator。
那里存在多个 MongoDB Kubernetes Operator。但是您可以查看 MongoDB 社区 Kubernetes Operator
假设您有 5 个副本部署为有状态集,并附加了持久卷声明 (PVC) 的存储。当您想要缩小或放大规模时,问题就开始了。如果删除 2 个副本,这些卷和数据会发生什么?
在删除它们之前,您需要迁移数据,而不是丢失数据。另一个例子是灾难恢复。对于 postgres、mysql、redis、elasticsearch 等每种技术,这些操作都会有所不同,并且需要人工干预。 Kubernetes 中的操作员将用自动化取代人工操作员。因此,对于每种技术或特定用例,您可以使用可以处理这些操作的运算符,例如 postgres 运算符、redis 运算符等。
您可以查看社区运营商:https://operatorhub.io/
还可以阅读以下文章来了解有状态设置广告运算符之间的区别:
https://developer.redis.com/operate/orchestration/kubernetes-operator/
https://vmblog.com/archive/2020/10/29/going-beyond-statefulsets-with-kubernetes-operators.aspx