实例详情

本页面介绍如何读取运行中的实例:拓扑如何映射到 Kubernetes 对象、状态字段的含义,以及有哪些端点。

拓扑

kubectl -n <namespace> get chi e1-demo -o yaml

拓扑在 spec.configuration.clusters[].layout 下声明,并按以下方式派生:

  • shardsCount × replicasCount = 主机数量。
  • 每个主机对应一个 StatefulSet,其中包含 replicas: 1,并持有一个 pod。
  • 两个计数的默认值均为 1;如果你明确列举的分片或副本数量超过了计数值,系统会自动提高相应计数。

因此,一个 shardsCount: 3replicasCount: 2 集群包含 6 个 StatefulSet、6 个 pod 和 6 组 PVC,而不是包含 3 个 StatefulSet、每个 StatefulSet 包含 2 个 pod。

Pod 管理设置为 OrderedReady,更新策略为 RollingUpdate

对象名称

对象模式
实例 Serviceclickhouse-{chi}
集群 Servicecluster-{chi}-{cluster}
分片 Serviceshard-{chi}-{cluster}-{shard}
StatefulSet / 主机 Servicechi-{chi}-{cluster}-{shard}-{replica}
Podchi-{chi}-{cluster}-{shard}-{replica}-0
公共配置 ConfigMapchi-{chi}-common-configd
公共用户 ConfigMapchi-{chi}-common-usersd
主机配置 ConfigMapchi-{chi}-deploy-confd-{cluster}-{shard}-{replica}
NOTE

集群和分片 Service 的名称遵循上述模式,但默认不会创建。除非你设置 clusterServiceTemplateshardServiceTemplate,否则 operator 不会为其中任何一个返回对象。开箱即用时,你会获得恰好两种 Service:每个实例一个,以及每个主机一个。

端点

端口名称用途
8123httpHTTP 接口,也是 operator 自身用于查询的接口。
9000tcpNative 协议,由 clickhouse-client 使用。
9009interserver副本之间的流量。不供客户端使用。

status.endpoint 提供实例范围的地址,status.fqdns 列出每个主机的地址。有关如何访问这些地址以及默认的 Service 类型,请参阅访问实例

状态字段

kubectl -n <namespace> get chi e1-demo -o jsonpath='{.status}' | jq
字段含义
statusInProgressCompletedTerminating
clustersshardsreplicashosts已协调拓扑的计数。
podspod-ipsfqdns每个主机的 Pod 名称、Pod IP 和主机名。
endpoint实例范围 Service 的地址。
actionactions最近一次协调操作及有限的历史记录。
errorerrors最近一次错误及有限的历史记录。
taskIDtaskIDsStartedtaskIDsCompleted更新跟踪,与 spec.taskID 匹配。
updatedaddeddeleteddelete上次协调操作涉及的对象。
chop-versionchop-commitchop-datechop-ip对此实例执行协调操作的 operator 构建版本和 Pod。
normalizednormalizedCompleted应用默认值并合并模板后的 spec — 可用于查看 operator 实际执行操作所依据的内容。

当某项设置似乎未生效时,status.normalized 是最有用的字段:它显示了你的 spec、所使用的任何模板以及 operator 默认值的合并结果。

健康

status.status: Completed 表示 operator 已完成其协调过程。在 4.4 版本中,只有每个主机的 StatefulSet 都已就绪后,该过程才会完成;如果之后某个主机的状态降级,状态会恢复为 InProgress

请根据工作负载本身确认运行状况:

kubectl -n <namespace> get statefulset -l clickhouse.altinity.com/chi=e1-demo \
  -o custom-columns=NAME:.metadata.name,DESIRED:.spec.replicas,READY:.status.readyReplicas

每一行都必须显示 READY 等于 DESIRED。这是 operator 对主机就绪状态的定义。