是的,Kubernetes(K8s)上部署的Zookeeper可以實現高可用性。下面是在Kubernetes上實現高可用Zookeeper集群的關鍵點和步驟:
zookeeper-deployment.yaml
文件,內容類似:apiVersion: apps/v1
kind: Deployment
metadata:
name: zookeepers
spec:
replicas: 3
selector:
matchLabels:
app: zookeeper
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- name: zookeeper
image: wurstmeister/zookeeper:3.9.2
ports:
- containerPort: 2181
接著,為持久化數據創建一個zookeeper-statefulset.yaml
:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: zookeepers
spec:
serviceName: zookeeper
replicas: 3
selector:
matchLabels:
app: zookeeper
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- name: zookeeper
image: wurstmeister/zookeeper:3.9.2
envFrom:
- secretRef:
name: zookeeper-secret
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
---
apiVersion: v1
kind: Secret
metadata:
name: zookeeper-secret
type: Secret
data:
config: "<base64-encoded-zk-config>"
這里假設你已經有了一個包含ZooKeeper配置的secret(config
),需要替換 <base64-encoded-zk-config>
。
zookeeper-secret
的密鑰中。kubectl apply -f zookeeper-deployment.yaml
kubectl apply -f zookeeper-statefulset.yaml
kubectl get pods -l app=zookeeper
kubectl exec -it <pod-name> -- /usr/bin/zkCli.sh -server localhost:2181
通過上述步驟和配置,可以在Kubernetes上實現一個高可用的Zookeeper集群,確保服務的持續可用性。