创建实例
Alauda Data Services Analytical Database E1 的一个实例是一个 ClickHouseInstallation (CHI) 资源。operator 会将其转换为 StatefulSets、Services、ConfigMaps 和 PersistentVolumeClaims。
前提条件
- operator 已安装并正在运行。它以 OLM bundle 的形式提供,其 package name 为
clickhouse-operator,随附的安装 manifest 会将其放置在operatorsnamespace 中。 - 如果需要持久化数据,则需要 StorageClass。如果没有 volume claim template,数据目录会位于 pod 的可写层中,并会在重启时丢失。
- 正在运行的 ZooKeeper-compatible quorum,仅在需要 replication 或
ON CLUSTERDDL 时需要。请参阅配置复制集群。
请勿应用 operator repository 中的 kustomize-config/samples/sample.yaml。它硬编码了 namespace,固定使用 2021 operand image,并设置了 log volume claim template,却没有匹配的 container security context,因此在启用了 Pod Security Admission restricted 的 namespace 中会被拒绝。请使用本页面上的 manifest。
最小实例
一个 shard、一个 replica 和一个 20 GiB 数据卷:
将其应用到要运行数据库的 namespace 中:
请注意该 manifest 中没有的内容:其中没有 container image。请将其省略。当 pod template 未指定 image 时,operator 会使用安装时配置的 operand image;该 image 从 CK_SERVER_IMAGE 环境变量中读取,并在前面加上 HARBOR 中的 registry。若 CK_SERVER_IMAGE 为空,operator 将拒绝启动,并明确指出该变量名称。
对于由 ACP 提供的安装,请保持 HARBOR 值与 package 设置的值完全一致。平台会在 admission 时将 operand image 引用重写为其自身的 registry,并且仅适用于它所期望的确切格式;更改 registry 会导致 image 拉取失败,包括在 air-gapped 环境中。
operator 创建的内容
对于上述 manifest,在 namespace <namespace> 中:
“主机”是一个 shard-从节点对。shardsCount × replicasCount 给出主机数量,每个主机都有自己的 StatefulSet,并且恰好包含一个 pod——CRD 明确说明:“每个 replica 都是一个独立的 StatefulSet,其中仅包含一个 Pod”。扩容通过添加主机完成,而不是提高 StatefulSet 的 replica 数量。
多 shard 实例
三个 shard,不进行复制,因此不需要 ZooKeeper:
pod template 中的容器必须命名为 clickhouse,才能被视为服务器容器。uid/gid 101 与构建服务器 image 时使用的用户一致。
请为服务器设置一个经过规划的内存限制。限制过小会产生 OOMKilled,随后产生 CrashLoopBackOff——operator repository 提供了该确切故障的示例,其内存限制为 32 MiB。
顶层 spec 中的实用字段
验证
检查 Pod 和 StatefulSet,而不仅仅是资源状态:
当每个 StatefulSet 报告的 ReadyReplicas 等于其所需的副本数时,实例即为健康状态——这正是 operator 自身使用的就绪检查。有关较旧版本中仅状态字段不足以判断实例健康状况的原因,请参阅实例报告为 Completed,但 Pod 不健康。
ClickHouse 是 ClickHouse, Inc. 的注册商标。https://clickhouse.com
Alauda 是独立供应商。本产品与 ClickHouse, Inc. 没有关联,也未获得其认可或赞助。所有商标均归其各自所有者所有,本文仅出于标识目的使用。