Apache ZooKeeper 是一个分布式协调服务,为分布式应用提供可靠的集中式配置数据存储、服务注册与发现、分布式锁及同步机制。Bitnami 提供的 Apache ZooKeeper 镜像基于最佳实践构建,简化了在 Kubernetes 或 Docker 环境中的部署流程,包含安全加固配置、持久化存储支持及监控集成能力,适用于开发和生产环境。
zoo.cfg 配置文件、环境变量调优(如日志级别、JVM 参数)及外部 ConfigMap 挂载。autopurge.snapRetainCount)和清理间隔(autopurge.purgeInterval)。ZOO_LOG_LEVEL)配置日志级别,避免探针连接导致的日志噪音。自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,推出 Bitnami Secure Images 计划,专注于提供安全加固的镜像。过渡期变更如下:
docker.io/bitnami 迁移至 docker.io/bitnamilegacy 仓库,且不再接收更新。详情参见 Bitnami Secure Images 公告。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/zookeeper
指定 Helm 仓库及发布名称:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/zookeeper
替换
REGISTRY_NAME和REPOSITORY_NAME(Bitnami ***仓库为registry-1.docker.io和bitnamicharts)。
验证部署:
consolehelm list # 查看所有 Helm 发布 kubectl get pods # 确认 ZooKeeper Pod 运行状态
适用于开发环境,无需身份验证:
bashdocker run -d \ --name zookeeper \ -p 2181:2181 \ # 客户端端口 -p 8080:8080 \ # Admin Server 端口 -e ALLOW_ANONYMOUS_LOGIN=yes \ # 允许***登录(开发环境) -v zookeeper-data:/bitnami/zookeeper \ # 持久化数据卷 bitnami/zookeeper:latest
3 节点集群示例(docker-compose.yml):
yamlversion: '3' services: zookeeper-1: image: bitnami/zookeeper:latest container_name: zookeeper-1 ports: - "2181:2181" - "8080:8080" environment: - ZOO_SERVER_ID=1 - ZOO_SERVERS=zookeeper-1:2888:3888;zookeeper-2:2888:3888;zookeeper-3:2888:3888 - ALLOW_ANONYMOUS_LOGIN=yes volumes: - zookeeper-data-1:/bitnami/zookeeper zookeeper-2: image: bitnami/zookeeper:latest container_name: zookeeper-2 ports: - "2182:2181" - "8081:8080" environment: - ZOO_SERVER_ID=2 - ZOO_SERVERS=zookeeper-1:2888:3888;zookeeper-2:2888:3888;zookeeper-3:2888:3888 - ALLOW_ANONYMOUS_LOGIN=yes volumes: - zookeeper-data-2:/bitnami/zookeeper zookeeper-3: image: bitnami/zookeeper:latest container_name: zookeeper-3 ports: - "2183:2181" - "8082:8080" environment: - ZOO_SERVER_ID=3 - ZOO_SERVERS=zookeeper-1:2888:3888;zookeeper-2:2888:3888;zookeeper-3:2888:3888 - ALLOW_ANONYMOUS_LOGIN=yes volumes: - zookeeper-data-3:/bitnami/zookeeper volumes: zookeeper-data-1: zookeeper-data-2: zookeeper-data-3:
通过 resources 参数限制 CPU/内存资源(Helm 配置):
yamlresources: requests: cpu: 200m memory: 256Mi limits: cpu: 1000m memory: 1Gi
生产环境建议根据实际负载调整,避免资源竞争。
启用客户端身份验证(Helm values.yaml):
yamlauth: client: enabled: true clientUser: zk-client clientPassword: secure-client-pass serverUsers: zk-server1,zk-server2 serverPasswords: secure-server1-pass,secure-server2-pass
生产环境建议使用
existingSecret引用预先创建的 Secret,避免明文密码。
启用 Prometheus 指标采集:
yamlmetrics: enabled: true # 暴露指标端点 serviceMonitor: enabled: true # 创建 ServiceMonitor 供 Prometheus Operator 发现
指标将通过 http://<pod-ip>:9141/metrics 暴露,包含连接数、事务数、快照数等核心指标。
默认日志级别为 ERROR(减少探针日志噪音)。如需调整为 INFO(生产环境建议):
mntr 探针:
yamlmetrics: enabled: true
yamllivenessProbe: enabled: false readinessProbe: enabled: false customLivenessProbe: exec: command: ['/bin/bash', '-c', 'curl -s -m 2 http://localhost:8080/commands/ruok | grep ruok'] initialDelaySeconds: 30 periodSeconds: 10 customReadinessProbe: exec: command: ['/bin/bash', '-c', 'curl -s -m 2 http://localhost:8080/commands/ruok | grep error | grep null'] initialDelaySeconds: 5 periodSeconds: 10
yamllogLevel: INFO
容器内数据存储路径为 /bitnami/zookeeper,包含快照、事务日志及配置文件。通过 PVC 持久化:
yamlpersistence: enabled: true storageClass: "standard" # 指定存储类 size: 10Gi # 存储容量
将事务日志存储在独立卷(提升性能):
yamldataLogDir: /bitnami/zookeeper/logs # 日志路径 persistence: enabled: true dataLog: enabled: true # 为日志创建独立 PVC storageClass: "high-iops" # 建议使用高性能存储(如 SSD) size: 5Gi
使用 Velero 备份 ZooKeeper 数据:
bashvelero backup create zookeeper-backup \ --include-resources pvc,pv \ # 备份 PVC 和 PV --selector app.kubernetes.io/name=zookeeper # 选择 ZooKeeper 资源
bashvelero restore create --from-backup zookeeper-backup
| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 镜像拉取密钥列表 | [] |
global.defaultStorageClass | 全局默认存储类 | "" |
global.security.allowInsecureImages | 是否允许不安全镜像(跳过校验) | false |
global.compatibility.openshift.adaptSecurityContext | 是否适配 OpenShift 安全上下文 | auto |
| 参数名 | 描述 | 默认值 |
|---|---|---|
nameOverride | 覆盖发布名称前缀 | "" |
fullnameOverride | 完全覆盖发布名称 | "" |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 额外部署的 Kubernetes 资源(模板格式) | [] |
diagnosticMode.enabled | 启用诊断模式(禁用探针,覆盖命令) | false |
| 参数名 | 描述 | 默认值 |
|---|---|---|
image.registry | 镜像仓库 | REGISTRY_NAME |
image.repository | 镜像名称 | REPOSITORY_NAME/zookeeper |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
tickTime | 心跳基本时间单位(毫秒) | 2000 |
initLimit | 集群初始化超时(tick 数) | 10 |
syncLimit | leader 同步超时(tick 数) | 5 |
heapSize | JVM 堆大小(MB) | 1024 |
autopurge.snapRetainCount | 保留快照数量 | 10 |
autopurge.purgeInterval | 自动清理间隔(小时) | 1 |
fourlwCommandsWhitelist | 允许的四字命令列表 | srvr, mntr, ruok |
| 参数名 | 描述 | 默认值 |
|---|---|---|
auth.client.enabled | 启用客户端身份验证 | false |
auth.client.clientUser | 客户端认证用户名 | "" |
auth.quorum.enabled | 启用仲裁节点身份验证 | false |
auth.quorum.learnerUser | 仲裁学***者用户名 | "" |
10.6)将迁移至 bitnamilegacy 仓库,不再更新,需及时升级。ALLOW_ANONYMOUS_LOGIN,启用身份验证并使用 existingSecret 管理密码。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429