Kubernetes Zookeeper Cluster Setup/Configuration YAML Kubernetes Zookeeper Cluster Setup/Configuration YAML kubernetes kubernetes

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