常见问题
谁可以更改我的服务,以及何时更改?
在托管模式下,ClickHouse Cloud 只会更改你交由它管理的服务。任何能访问 executor 主机或 pod (容器组) 的人也可以通过本地clicklink clctl instances 命令来操作这些服务;参见服务生命周期。ClickHouse Cloud 通过 executor 的出站通道下发生命周期命令:
- 创建,依据你提交的定义
- 扩缩容,调整为 ClickHouse Cloud 设定的固定副本数 (上限由 ClickHouse Cloud 设置控制,默认配置为 20)
- 停止、启动和重启
- Backup以及删除Backup
- 删除
clicklink clctl executor prepare 和 clicklink clctl instances create,因为只有你才能创建桶和 IAM role。集群中平台组件的更新同样要等你操作。executor 会暂存每个待批的支持包;你执行 clicklink clctl platform approve 予以批准,并签发一个有效期 2 小时的标记。参见平台更新。
executor 的所有操作都通过 Kubernetes API 完成。admission 策略将其写入限制在带服务前缀 (默认为 ns-) 的命名空间内。它还允许在 executor 自身命名空间中进行三项写入:续订标记、服务 registry ConfigMap,以及在 Kubernetes 上存放于 clicklink-mtls Secret 中的已续订客户端证书。而它对同类资源的读取则是集群级的。已批准的平台更新以独立的 pcm-platform 身份运行,仅限于平台命名空间。你自行运维的集群绝不会被更改:scraper 和 故障排查工具均为只读。确切的作用域参见特权模型页面。
哪些数据会离开我的环境?
共有三个出口会向外发送数据,且全部通过连接器自行建立的出站连接:抓取路径、executor,以及你启用的 支持会话。 抓取器会发送一组固定系统表的查询结果:默认包括metric_log、asynchronous_metric_log、tables、warnings 和 server_settings。它还会发送健康与状态心跳、服务 与 Backup 状态,以及连接器自身的 metrics。默认抓取集合不包含 system.query_log。除非你主动添加该表,否则原始 SQL 文本及其中的任何 literals 或个人数据都不会经由抓取路径外发。在 session 期间,默认的表 允许列表 包含 system.processes,它会显示正在执行的查询文本;如果这些内容必须保密,请将其从 允许列表 中移除。
executor 会发送它执行的每条命令的结果,以及每个 managed 服务 的 state 和副本数量。其心跳会报告命令通道是否已连接。它还会携带平台 组件 versions、最后应用的 支持包 摘要,以及最近一次平台更新的结果。在 VM 安装方式下,心跳还会报告其 Kubernetes 访问 支持包 处于 ok、expiring、expired 还是缺失状态。当你创建 服务 时,clicklink clctl instances create 会发送你的环境 ID、云与区域、服务 name,以及其存储桶名称和 IAM role ARN。它会发送 default user 密码的两个哈希值;密码本身绝不会外发。
在 支持会话 处于活跃状态时,故障排查工具 还会返回命令输出。该输出仅限于 允许列表 中的 ClickHouse 表和 只读 Kubernetes 视图,其中包括 pod (容器组) logs。输出在发送前会先经过 redaction (内置的 IP、凭证、令牌和密钥 patterns,以及你自定义的规则) 。你的表数据、Backups 和 query history (system.query_log、system.text_log) 始终保留在你的环境中。确实会外发的有三类:
- 允许列表 中的 metric-history 表 (
system.metric_log、system.asynchronous_metric_log) 的行,会随每次抓取一同发送 - 在 session 中,正在执行的查询文本可通过
system.processes看到,除非你将其从 允许列表 中移除 - 在 Kubernetes 支持会话 期间读取的 pod (容器组) logs,会在 redaction 后外发
如何阻止 ClickHouse 更改我的集群?
以非托管模式运行。安装时向clicklink clctl init 传入 --no-managed,或在出现提示时选择否。这样只会部署抓取器和故障排查工具,ClickHouse 便无法创建、更改或删除 服务。连接器仍会预置只读 ClickHouse 用户和 ServiceAccount;参见特权模型。
对于已完成的安装,请停止 executor 并撤销其集群管理员权限。要停止它,可在 Helm values 中设置 executor.enabled: false 并运行 helm upgrade,或在 VM 上运行 systemctl disable --now clicklink-executor。随后撤销该授权。最后一条命令会删除 ServiceAccount 本身;VM 安装对应的命名空间为 clicklink-system,Kubernetes 安装则为连接器所在的命名空间:
连接器离线时会发生什么?
您的 ClickHouse 服务不受影响:连接器不处于任何数据路径上,托管服务在没有 executor 的情况下也会持续运行。真正的影响是失去可观测性与控制能力。ClickHouse Cloud 将停止接收遥测数据,并且在连接器恢复之前无法使用支持会话。在托管模式下,若 5 分钟内未收到心跳,ClickHouse Cloud 会将您的环境显示为离线;收到下一次心跳后即恢复为就绪状态。 在没有 executor 连接期间,生命周期命令会有两种表现。ClickHouse Cloud 已经接受的 create、delete 或平台同步会被保留并重试:create 自最后一次进度上报起最多重试 30 分钟,delete 最多重试 2 小时,平台同步最多重试 10 次;超出后该命令会被报告为失败。这两个时间上限分别由executor.create_retry_horizon 和 executor.delete_retry_horizon 配置项控制。其他所有命令 (scale、stop、start、restart、backup、backup 删除) ,以及在没有 executor 连接时提交的任何 create 或 delete,都会在提交时直接被拒绝,而不会排队等待。executor 未能上报的结果会在其下一次建立连接时发送。参见连接器离线时。
在 VM 上,只要您的连接器端点不可达,抓取器就会将抓取到的数据暂存到 /var/lib/clicklink/buffer (默认最多保留 168 小时或 1024 MB) 。重新连接后会将暂存数据投递出去,因此端点故障不会造成遥测数据丢失。daemon 崩溃后,在 VM 上由 systemd 重启,在 Kubernetes 上由 kubelet 节点代理重启。executor 会将命令状态保存在磁盘上,因此重启后会继续执行此前处于进行中的命令。
诊断时,请检查各组件的 /livez 端点 (判断依据是 JSON 中的 status 字段,而非 HTTP 状态码) ,并运行 clicklink clctl preflight (在 VM 主机上需加 sudo) 。预检会一次性检查配置、连通性、ClickHouse 可达性、访问权限和磁盘。参见运维;如果连接器持续处于不健康状态,请联系 ClickHouse 支持团队。
删除某个 服务 时会删除哪些内容?
executor 会停止该 服务、移除其 Kubernetes 资源,并删除其命名空间。命名空间被删除后,executor 即报告该 服务 已终止。Kubernetes 之外的一切都会保留:数据桶、Backup桶以及该 服务 的 IAM role。executor 不持有你的桶或 IAM 的任何 凭证,因此无法改动它们。 其余部分需要你使用自己的 凭证 运行clicklink clctl executor teardown 来清除。默认情况下,该命令会移除 IAM role,但保留数据和Backup;如需删除它们,必须显式指定相应 flags。参见 delete a service。
我的 default 用户密码在哪里?
clicklink clctl executor prepare 会在本地生成该密码,并且仅打印一次。如果你不使用 --from-prepare,而是通过各个单独的 flag 提交,则 clicklink clctl instances create 会从 --default-user-password-file 读取密码,或者生成并打印一个新密码。提交到 ClickHouse Cloud 的只有密码的哈希,因此连接器和 ClickHouse 都无法再次向你显示该密码。请在密码显示时及时保存。
如何撤销 ClickHouse 的访问权限?
按措施强度递增的顺序:- 终止交互式访问。 禁用会话:在 VM 主机上运行
sudo clicklink clctl troubleshoot session disable,或在 Kubernetes 中通过端口转发运行同一命令并添加--gateway-url(具体命令请参阅支持会话页面) 。没有活动会话时,即使仍处于连接状态,故障排查工具 也会拒绝执行所有命令。 - 停止托管模式。 按照如何阻止 ClickHouse 更改我的集群?中的说明停止 executor 并撤销其 授权。平台更新本身就需要你的批准,因此不予批准即可使其停止。
- 阻止后续会话。 清空 操作员 允许列表 (空允许列表会关闭 网关) ,或禁用 网关;在 VM 上,主机的 root 用户仍可进行本地会话管理。请参阅配置指南。
- 切断与 ClickHouse Cloud 的连接。 在网络层阻止到连接器端点的出站流量,或在实施网络策略的 CNI 中清空
networkPolicy.allowEgressCIDRs。连接器仅发起出站连接,因此 ClickHouse Cloud 没有可用于恢复连接的入站路径。对 ClickHouse 的本地读取仍会继续,直到停止或卸载工作负载;这才是彻底停止。 - 撤销凭据。 删除
pcm_scraper和pcm_troubleshooter这两个 ClickHouse 用户,并删除连接器的 Secrets (Kubernetes) 或/etc/clicklink下的文件 (VM) 。 - 完全移除连接器。 请参阅操作。
能否在隔离网络中运行,或通过自有私有镜像运行?
可以。所有安装阶段所需的制品都可以来自你的边界内部:- 将命令行客户端压缩包和容器镜像从
releases.clicklink.clickhouse.com及公共 registry 同步到私有镜像,然后将image.repository指向你的私有镜像。 - 通过
--chart传入oci://引用、URL 或本地归档文件。--chart-version默认使用命令行客户端自身的版本。 - 如果你的连接器端点部署在边界内部,并由 private CA 签发证书,则
--api-private-ca(Kubernetes) 或api.tls.ca_file(VM) 会将 enrollment bundle 的 CA 证书链追加到系统信任根中。 - 在无法直连的情况下完成 enrollment 时,
init --handoff会读取通过带外方式获取的 bundle,--no-auto-sign配合init --signed-cert则可在带外完成证书签发。 - 在托管模式下,你的 services 和平台组件所用的 ClickHouse 镜像可在导入自有 registry 后从该 registry 获取;ClickHouse 会为你的环境注册该 registry。
- 平台 bundle 可通过带外方式移交,并以文件形式传递给
clicklink clctl platform approve --bundle。
如何审计支持会话?
会话期间执行的每条命令,无论获准还是被阻止,都会以以换行分隔的 JSON 格式追加写入/var/log/clicklink/troubleshoot-audit.log。每条记录都会记录 submitted_by (命令通道上的 Organization ID) 、命令文本、目标 instance、执行结果,以及被拒绝命令的 blocked_by。网关调用 (包括被拒绝的调用) 会以结构化的 clctl.gateway 行记录在 故障排查工具 自身的日志中。它们归属于由标记验证的操作员邮箱地址,绝不采用自行申报的姓名。VM 上的本地会话变更会将发起调用的主机用户记录为 /var/lib/clicklink/session.json 中的 enabled_by。
会话设有时限 (默认 4 小时,最长 24 小时) 。每次启用都会记录启用者、到期时间及可选原因,clicklink clctl troubleshoot session status 会显示这些信息。
使用 clicklink clctl troubleshoot audit tail 读取审计日志。在 Kubernetes 上,该命令是受支持的读取方式 (运行时镜像不包含 shell) 。在默认设置 persistence.enabled: true 下,日志存储在 故障排查工具 的持久卷中,因此即使 pod (容器组) 被重新调度,审计记录仍会保留。禁用持久化后,审计日志和会话状态的生命周期将与 pod (容器组) 一致,chart 将此配置标记为仅适用于本地开发。默认情况下,日志轮转会保留 5 个文件,每个文件最大 128 MB,保留 168 小时;如需调整,请参阅配置参考;有关完整的信任模型,请参阅支持会话。