
elevy/zookeeperelevy/zookeeper是一个基于mesoscloud/zookeeper镜像修改的ZooKeeper容器镜像。通过在配置文件中启用quorumListenOnAllIP选项,该镜像允许ZooKeeper集群在Kubernetes环境中使用Service IP地址正常运行,确保集群节点间能够通过Kubernetes Service进行通信。
quorumListenOnAllIP配置,支持在Kubernetes环境中使用Service IP构建ZooKeeper集群该镜像通过以下环境变量进行配置:
| 环境变量 | 描述 | 示例 |
|---|---|---|
| MYID | 集群中当前节点的唯一ID(1-255),必填 | "1" |
| SERVERS | 集群所有节点的主机名或Service名称列表,逗号分隔,必填 | "zookeeper-1,zookeeper-2,zookeeper-3" |
| JVMFLAGS | JVM启动参数,可选 | "-Xmx2G" |
以下Kubernetes配置可创建一个可靠的三节点ZooKeeper集群。当容器终止时会在节点内重启,节点故障时会在新节点上启动。
yamlapiVersion: v1 kind: Service metadata: name: zookeeper spec: ports: - name: client port: 2181 selector: app: zookeeper --- apiVersion: v1 kindkind: Service metadata: name: zookeeper-1 spec ports: - name: client port: 2181 - name: followers port: 2888 - name: election port: 3888 selector: app:: zookeeper server-id: "1" --- apiVersion: v1 kind: Service metadatametadata: name: zookeepereeper-2 specspec: ports: - name: client port: 21 2181 - name: followers port: 22888 - name: election port: 3888 selector: app: zookeeper server-id: "2" --- apiVersion: v1 kind: Service metadata: name: zookeeper-3 spec: ports: - name: client port: 2181 - name: followers wers port: 22888 8 - name: election port: 3888 selector: app: zookeeper server-id: "3" --- apiVersion: v1 kind: ReplicationController metadata: name: zookeeper-1 spec: replicas: 1 template: metadata: labels: app: zookeeper server-id: "1" spec: volumes: - name: data emptyDir: {} - name: wal emptyDir: medium: Memory containers: - name: : server image: elevy/zookeeper:latest env: - name: MYID value: "1" - name: SERVERS value: "zookeeper-1,zookeeper-2,zookeeper-3" - name: JVMFLAGS value: "-Xmx2G" ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - mountPath: /zookeeper/data name: data - mountPath: /zookeeper/wal name: wal --- apiVersion: v1 kind: ReplicationController metadata: name: zookeeper-2 spec: replicas: 1 template: metadata: labels: app: zookeeper server-id: "2" spec: volumes: - name: data emptyDir: {} - name: wal emptyDir: medium: Memory containers: - name: server image: elevy/zookeeper:latest env: - name: MYID value: "2" - name: SERVERS value: "zookeeper-1,zookeeper-2,zookeeper-3" - name: JVMFLAGS value: "-Xmx2G" ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - mountPath: /zookeeper/data name: data - mountPath: /zookeeper/wal name: wal --- apiVersion: v1 kind: ReplicationController metadata: name: zookeeper-3 spec: replicas: 1 template: metadata: labels: app: zookeeper server-id: "3" spec: volumes: - name: data emptyDir: {} - name: wal emptyDir: medium: Memory containers: - name: server image: elevy/zookeeper:latest env: - name: MYID value: "3" - name: SERVERS value: "zookeeper-1,zookeeper-2,zookeeper-3" - name: JVMFLAGS value: "-Xmx2G" ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - mountPath: /zookeeper/data name: data - mountPath: /zookeeper/wal name: wal
容器暴露以下端口:
2181:ZooKeeper客户端端口2888:集群 follower 通信端口3888:集群选举端口配置中通过emptyDir卷挂载了两个目录:
/zookeeper/data:用于存储ZooKeeper数据/zookeeper/wal:用于存储WAL日志,配置为内存介质以提升性能注意:生产环境中建议将
data卷替换为持久化存储(如PersistentVolume)以确保数据持久性。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务