写在最前
1. docker 部署
3. kubernetes 部署
3.1 statefulset
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: zookeeper
namespace: bx
annotations:
kubesphere.io/creator: admin
spec:
replicas: 3
selector:
matchLabels:
app: zookeeper
template:
metadata:
creationTimestamp: null
labels:
app: zookeeper
annotations:
kubesphere.io/creator: admin
kubesphere.io/imagepullsecrets: '{}'
kubesphere.io/restartedAt: '2025-06-17T09:14:31.678Z'
logging.kubesphere.io/logsidecar-config: '{}'
spec:
volumes:
- name: zoo-config
configMap:
name: zookeeper-config
defaultMode: 420
containers:
- name: zookeeper
image: 'zookeeper:3.9.3'
command:
- sh
- '-c'
- |
echo "$(( ${HOSTNAME##*-} + 1 ))" > /data/myid && \
zkServer.sh start-foreground
ports:
- name: client
containerPort: 2181
protocol: TCP
- name: peer
containerPort: 2888
protocol: TCP
- name: leader-election
containerPort: 3888
protocol: TCP
resources: {}
volumeMounts:
- name: data
mountPath: /data
- name: zoo-config
mountPath: /conf/zoo.cfg
subPath: zoo.cfg
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
volumeClaimTemplates:
- kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: data
creationTimestamp: null
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
volumeMode: Filesystem
status:
phase: Pending
serviceName: zookeeper
podManagementPolicy: OrderedReady
updateStrategy:
type: RollingUpdate
revisionHistoryLimit: 10
3.2 service
kind: Service
apiVersion: v1
metadata:
name: zookeeper
namespace: bx
labels:
app: zookeeper
annotations:
kubesphere.io/creator: admin
spec:
ports:
- name: client
protocol: TCP
port: 2181
targetPort: 2181
- name: peer
protocol: TCP
port: 2888
targetPort: 2888
- name: leader-election
protocol: TCP
port: 3888
targetPort: 3888
selector:
app: zookeeper
clusterIP: None
clusterIPs:
- None
type: ClusterIP
sessionAffinity: None
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
internalTrafficPolicy: Cluster
3.3 configmap
kind: ConfigMap
apiVersion: v1
metadata:
name: zookeeper-config
namespace: bx
data:
zoo.cfg: |
clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=zookeeper-0.zookeeper.bx.svc.cluster.local:2888:3888
server.2=zookeeper-1.zookeeper.bx.svc.cluster.local:2888:3888
server.3=zookeeper-2.zookeeper.bx.svc.cluster.local:2888:3888
3.4 常用命令
# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
# 如果你已经成功启动kafka集群,可以使用以下命令来查看是否有数据
[zk: localhost:2181(CONNECTED) 1] ls /
[admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
[zk: localhost:2181(CONNECTED) 0] ls /brokers/ids
[1, 2, 3]