在 Kubernetes 上运行 Apache Cassandra:StatefulSets 详解
1. Cassandra 与 Kubernetes 的映射基础
Cassandra 通过哈希生成一个介于 -2^63 和 2^63 - 1 之间的令牌(token),并为每个节点分配一个或多个令牌范围。在分配令牌范围时会考虑物理拓扑,以确保数据副本分布在不同的机架和数据中心。
在将 Cassandra 映射到 Kubernetes 时,需要考虑 Cassandra 架构的两个重要特性:
- 有状态性(Statefulness) :每个 Cassandra 节点都有自己需要维护的状态。虽然可以配置节点使用本地临时存储,但更常见的是使用持久存储。无论哪种方式,每个节点都需要有自己唯一的持久卷声明(PersistentVolumeClaim)。
- 身份标识(Identity) :在完全对等的架构中,虽然每个 Cassandra 节点的代码、配置和功能相同,但它们的实际角色不同。每个节点在数据中心和机架的拓扑结构中有自己的身份,以及分配的令牌范围。
这些对身份标识和特定持久卷声明的要求,给 Kubernetes 的 Deployment 和 ReplicaSet 带来了挑战,因为它们并非为此设计。因此,Kubernetes 引入了 StatefulSet 来管理有状态的工作负载。
2. StatefulSets 概述
Kubernetes 从 1.3 版本的 PetSet 阿尔法版本开始提供管理有状态工作负载的资源,现在称为 StatefulSet。
超级会员免费看
订阅专栏 解锁全文
8748

被折叠的 条评论
为什么被折叠?



