初始化 Cluster 槽位分配
默认情况下,Operator 会将全部 16,384 个 Cluster 哈希槽分配到已配置的各个 shard 中。对于新的 Cluster,spec.replicas.shardsConfig 可以提供显式的初始槽位方案。
在 2.0.0 实现中,该字段仅在创建时生效。控制器仅在子 Cluster 尚未初始化 shard 状态时才会使用它。在现有实例上更改 shardsConfig 不是受支持的重新分配操作;请使用 shard scaling 进行由 Operator 管理的重新平衡。
约束
- 仅在
spec.arch: cluster时使用此字段。 shardsConfig条目的数量必须等于spec.replicas.shards。- 至少需要三个条目。
- 槽位值必须是 0 到 16383 之间的整数,并以单个值或用逗号分隔的包含范围表示。
- 所有条目的并集必须恰好覆盖每个槽位一次。缺口和重叠会被 validating webhook 拒绝。
spec.replicas.replicasOfShard仍然是每个 shard 的成员总数。
使用显式方案创建 Cluster
以下清单将槽位空间分配给三个 shard:
当资源已存在时,server-side dry-run 会测试更新行为,而不是仅限创建的槽位方案验证。请在命名空间中首次创建且名称不存在时先验证该清单:
验证分配
等待进入 Ready,然后将高层节点状态与 server 视图进行比较:
不要编辑 Operator 所拥有的子 Cluster.status.shards 来修复方案。对于被拒绝的创建,请修正清单并重新应用。对于已经初始化但业务布局不正确的 Cluster,请规划一个受支持的 shard scaling 操作,或者创建替代实例并迁移数据。
CLUSTER SHARDS 是这些受支持的 server 版本线的首选拓扑视图。请参阅其 official command reference 和 Valkey Cluster 规范。