Kubernetes Zookeeper Cluster Setup/Configuration YAML
After a week I came up with the below configuration that worked,
apiVersion: v1kind: Servicemetadata: name: zk-hs labels: app: zkspec: ports: - port: 2888 name: server - port: 3888 name: leader-election clusterIP: None selector: app: zk---apiVersion: v1kind: Servicemetadata: name: zk-cs labels: app: zkspec: ports: - port: 2181 name: client selector: app: zk---apiVersion: policy/v1beta1kind: PodDisruptionBudgetmetadata: name: zk-pdbspec: selector: matchLabels: app: zk maxUnavailable: 1---apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: zookeeper-sc selfLink: /apis/storage.k8s.io/v1/storageclasses/zookeeper-sc labels: addonmanager.kubernetes.io/mode: EnsureExists kubernetes.io/cluster-service: 'true'provisioner: kubernetes.io/azure-diskparameters: cachingmode: ReadOnly kind: Managed storageaccounttype: StandardSSD_LRSreclaimPolicy: DeleteallowVolumeExpansion: truevolumeBindingMode: WaitForFirstConsumer---apiVersion: apps/v1kind: StatefulSetmetadata: name: zkspec: selector: matchLabels: app: zk serviceName: zk-hs replicas: 3 updateStrategy: type: RollingUpdate podManagementPolicy: OrderedReady template: metadata: labels: app: zk spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app" operator: In values: - zk topologyKey: "kubernetes.io/hostname" initContainers: - command: - /bin/bash - -c - |- set -ex; mkdir -p /data; if [[ ! -f "/data/myid" ]]; then hostindex=$HOSTNAME; let zooid=${hostindex: -1: 1}+1; echo $zooid > "/data/myid" echo "Zookeeper MyId: " $zooid fi env: - name: HOSTNAME valueFrom: fieldRef: fieldPath: metadata.name image: zookeeper:3.6.2 name: zookeeper-init securityContext: runAsUser: 1000 volumeMounts: - name: zk-data mountPath: "/data" containers: - name: zookeeper image: "zookeeper:3.6.2" env: - name: ZOO_SERVERS value: "server.1=zk-0.zk-hs.default.svc.cluster.local:2888:3888;2181 server.2=zk-1.zk-hs.default.svc.cluster.local:2888:3888;2181 server.3=zk-2.zk-hs.default.svc.cluster.local:2888:3888;2181" - name: ZOO_STANDALONE_ENABLED value: "false" - name: ZOO_4LW_COMMANDS_WHITELIST value: "srvr,mntr" ports: - containerPort: 2181 name: client - containerPort: 2888 name: server - containerPort: 3888 name: leader-election volumeMounts: - name: zk-data mountPath: "/data" securityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 volumeClaimTemplates: - metadata: name: zk-data spec: storageClassName: "zookeeper-sc" accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 10Gi