
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像旨在通过Kubernetes的StatefulSets(有状态集)部署Apache ZooKeeper,提供可靠的分布式协调服务。基于Kubernetes ZooKeeper K8SZK项目启发,适用于需要在Kubernetes环境中构建ZooKeeper集群的场景。
zookeeper)运行ZooKeeper进程/opt/zookeeper,配置文件链接至/usr/etc/zookeeper/,可执行文件链接至/usr/bin,数据目录位于/var/lib/zookeeperzkGenConfig.sh脚本根据环境变量生成zoo.cfg、log4j.properties和jvm.env配置文件zkOk.sh脚本用于存活和就绪探针zkMetrics.sh脚本输出ZooKeeper运行指标Headless Service(无头服务)
ZooKeeper有状态集需要无头服务控制网络域,示例配置如下:
yamlapiVersion: v1 kind: Service metadata: name: zk-svc labels: app: zk-svc spec: ports: - port: 2888 name: server - port: 3888 name: leader-election clusterIP: None selector: app: zk-svc
Stateful Set(有状态集)
有状态集配置需与无头服务匹配,并指定副本数。示例配置创建3节点ZooKeeper集群:
注意:由于不支持加权仲裁,必须选择奇数个副本(推荐1、3、5或7个),较大副本数会影响写性能,需谨慎选择。
yamlapiVersion: apps/v1beta1 kind: StatefulSet metadata: name: zk spec: serviceName: zk-svc replicas: 3
容器配置
容器通过环境变量注入配置,zkGenConfig.sh脚本会生成相应配置文件。基础配置示例:
yamlcontainers: - name: k8szk imagePullPolicy: Always image: ***-gcr.xuanyuan.run/google_samples/k8szk:v3 ports: - containerPort: 2181 name: client - containerPort: 2888 name: server - containerPort: 3888 name: leader-election env: - name: ZK_REPLICAS value: "3" - name: ZK_CLIENT_PORT value: "2181" - name: ZK_SERVER_PORT value: "2888" - name: ZK_ELECTION_PORT value: "3888"
副本配置
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| ZK_REPLICAS | string | N/A | 集群副本数(必填,用于配置集群成员,主机名需为zk-0、zk-1等格式) |
网络配置
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| ZK_CLIENT_PORT | integer | 2181 | 客户端请求端口 |
| ZK_SERVER_PORT | integer | 2888 | leader向follower发送事件的端口 |
| ZK_ELECTION_PORT | integer | 3888 | leader选举端口 |
| ZK_MAX_CLIENT_CNXNS | integer | 60 | 服务器允许的最大并发客户端连接数 |
注意:网络配置端口需与容器端口及无头服务配置一致,使用默认值时可省略环境变量。
ZooKeeper时间配置
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| ZK_TICK_TIME | integer | 2000 | 集群内部时间单位(毫秒) |
| ZK_INIT_LIMIT | integer | 5 | 成员进行leader选举的最大tick数 |
| ZK_SYNC_LIMIT | integer | 10 | follower允许落后leader的最大tick数 |
ZooKeeper会话配置
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| ZK_MIN_SESSION_TIMEOUT | integer | 2 * ZK_TICK_TIME | 客户端最小会话超时时间 |
| ZK_MAX_SESSION_TIMEOUT | integer | 20 * ZK_TICK_TIME | 客户端最大会话超时时间 |
数据保留配置
注意:ZooKeeper默认不清理旧事务日志和快照,可能导致磁盘占满。可通过以下变量配置自动清理策略。
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| ZK_SNAP_RETAIN_COUNT | integer | 3 | 启用自动清理时保留的快照数(需ZK_PURGE_INTERVAL>0) |
| ZK_PURGE_INTERVAL | integer | 0 | 日志和快照清理间隔(小时,0表示禁用自动清理) |
JVM配置
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| ZK_HEAP_SIZE | integer | 2 | JVM堆大小(GiB),需避免进程swap |
日志级别配置
| 变量 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| ZK_LOG_LEVEL | enum(TRACE,DEBUG,INFO,WARN,ERROR,FATAL) | INFO | 日志级别 |
健康检查
使用zkOk.sh脚本配置存活和就绪探针:
yamlreadinessProbe: exec: command: - sh - -c - "zkOk.sh" initialDelaySeconds: 15 timeoutSeconds: 5 livenessProbe: exec: command: - sh - -c - "zkOk.sh" initialDelaySeconds: 15 timeoutSeconds: 5
存储配置
必须使用持久卷保证数据持久化,示例配置动态申请20GiB存储:
yamlvolumeClaimTemplates: - metadata: name: datadir annotations: volume.alpha.kubernetes.io/storage-class: anything spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 20Gi
容器卷挂载配置:
yamlvolumeMounts: - name: datadir mountPath: /var/lib/zookeeper
日志输出固定为标准输出(stdout),符合容器化应用最佳实践,可利用Kubernetes现有日志轮转和保留机制。日志级别通过ZK_LOG_LEVEL环境变量调整。
使用zkMetrics.sh脚本收集ZooKeeper运行指标,可通过Kubernetes定时任务收集:
bashkubectl exec zk-0 zkMetrics.sh
示例输出:
zk_version 3.4.9-1757313, built on 08/23/2016 06:50 GMT zk_avg_latency 0 zk_max_latency 0 zk_min_latency 0 zk_packets_received 21 zk_packets_sent 20 zk_num_alive_connections 1 zk_outstanding_requests 0 zk_server_state follower zk_znode_count 4 zk_watch_count 0 zk_ephemerals_count 0 zk_approximate_data_size 27 zk_open_file_descriptor_count 39 zk_max_file_descriptor_count 1048576
k8szk项目采用APL 2.0许可。
Copyright 2014 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 nearpod/zookeeper 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: