## As weighted quorums are not supported, it is imperative that an odd number of replicas ## be chosen. Moreover, the number of replicas should be either 1, 3, 5, or 7. ## ## ref: https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper#stateful-set replicaCount: 3 # Desired quantity of ZooKeeper pods. This should always be (1,3,5, or 7) podDisruptionBudget: maxUnavailable: 1 # Limits how many Zokeeper pods may be unavailable due to voluntary disruptions. terminationGracePeriodSeconds: 1800 # Duration in seconds a Zokeeper pod needs to terminate gracefully. ## OnDelete requires you to manually delete each pod when making updates. ## This approach is at the moment safer than RollingUpdate because replication ## may be incomplete when replication source pod is killed. ## ## ref: http://blog.kubernetes.io/2017/09/kubernetes-statefulsets-daemonsets.html updateStrategy: type: OnDelete # Pods will only be created when you manually delete old pods. ## refs: ## - https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper ## - https://github.com/kubernetes/contrib/blob/master/statefulsets/zookeeper/Makefile#L1 image: #repository: nexus3.onap.org:10001/library/zookeeper #tag: 3.3 repository: gcr.io/google_samples/k8szk # Container image repository for zookeeper container. tag: v3 # Container image tag for zookeeper container. pullPolicy: IfNotPresent # Image pull criteria for zookeeper container. service: name: zookeeper type: ClusterIP # Exposes zookeeper on a cluster-internal IP. annotations: {} # Arbitrary non-identifying metadata for zookeeper service. ## AWS example for use with LoadBalancer service type. # external-dns.alpha.kubernetes.io/hostname: zookeeper.cluster.local # service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true" # service.beta.kubernetes.io/aws-load-balancer-internal: "true" ports: client: port: 2181 # Service port number for client port. targetPort: client # Service target port for client port. protocol: TCP # Service port protocol for client port. ports: client: containerPort: 2181 # Port number for zookeeper container client port. protocol: TCP # Protocol for zookeeper container client port. election: containerPort: 3888 # Port number for zookeeper container election port. protocol: TCP # Protocol for zookeeper container election port. server: containerPort: 2888 # Port number for zookeeper container server port. protocol: TCP # Protocol for zookeeper container server port. # Resource Limit flavor -By Default using small flavor: small # Segregation for Different environment (Small and Large) resources: small: limits: cpu: 500m memory: 900Mi requests: cpu: 10m memory: 730Mi large: limits: cpu: 3 memory: 2Gi requests: cpu: 2 memory: 1Gi unlimited: {} nodeSelector: {} # Node label-values required to run zookeeper pods. tolerations: [] # Node taint overrides for zookeeper pods. affinity: {} # Criteria by which pod label-values influence scheduling for zookeeper pods. affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: "kubernetes.io/hostname" labelSelector: matchLabels: release: zookeeper podAnnotations: {} # Arbitrary non-identifying metadata for zookeeper pods. podLabels: {} # Key/value pairs that are attached to zookeeper pods. livenessProbe: exec: command: - zkOk.sh initialDelaySeconds: 20 readinessProbe: exec: command: - zkOk.sh initialDelaySeconds: 20 securityContext: fsGroup: 1000 #runAsUser: 1000 persistence: enabled: true ## zookeeper data Persistent Volume Storage Class ## If defined, storageClassName: ## If set to "-", storageClassName: "", which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## volumeReclaimPolicy: Retain accessMode: ReadWriteOnce mountPath: /dockerdata-nfs mountSubPath: music/zookeeper size: 4Gi ## Exporters query apps for metrics and make those metrics available for ## Prometheus to scrape. exporters: jmx: enabled: false image: repository: sscaling/jmx-prometheus-exporter tag: 0.3.0 pullPolicy: IfNotPresent config: lowercaseOutputName: false rules: - pattern: "org.apache.ZooKeeperService<>(\\w+)" name: "zookeeper_$2" - pattern: "org.apache.ZooKeeperService<>(\\w+)" name: "zookeeper_$3" labels: replicaId: "$2" - pattern: "org.apache.ZooKeeperService<>(\\w+)" name: "zookeeper_$4" labels: replicaId: "$2" memberType: "$3" - pattern: "org.apache.ZooKeeperService<>(\\w+)" name: "zookeeper_$4_$5" labels: replicaId: "$2" memberType: "$3" startDelaySeconds: 30 env: {} resources: {} path: /metrics ports: jmxxp: containerPort: 9404 protocol: TCP livenessProbe: httpGet: path: /metrics port: jmxxp initialDelaySeconds: 30 periodSeconds: 15 timeoutSeconds: 60 failureThreshold: 8 successThreshold: 1 readinessProbe: httpGet: path: /metrics port: jmxxp initialDelaySeconds: 30 periodSeconds: 15 timeoutSeconds: 60 failureThreshold: 8 successThreshold: 1 zookeeper: enabled: false image: repository: josdotso/zookeeper-exporter tag: v1.1.2 pullPolicy: IfNotPresent config: logLevel: info resetOnScrape: "true" env: {} resources: {} path: /metrics ports: zookeeperxp: containerPort: 9141 protocol: TCP livenessProbe: httpGet: path: /metrics port: zookeeperxp initialDelaySeconds: 30 periodSeconds: 15 timeoutSeconds: 60 failureThreshold: 8 successThreshold: 1 readinessProbe: httpGet: path: /metrics port: zookeeperxp initialDelaySeconds: 30 periodSeconds: 15 timeoutSeconds: 60 failureThreshold: 8 successThreshold: 1 env: ## Options related to JMX exporter. JMXAUTH: "false" JMXDISABLE: "false" JMXPORT: 1099 JMXSSL: "false" ## The port on which the server will accept client requests. ZK_CLIENT_PORT: 2181 ## The port on which the ensemble performs leader election. ZK_ELECTION_PORT: 3888 ## The JVM heap size. ZK_HEAP_SIZE: 2G ## The number of Ticks that an ensemble member is allowed to perform leader ## election. ZK_INIT_LIMIT: 5 ## The Log Level that for the ZooKeeper processes logger. ## Choices are `TRACE,DEBUG,INFO,WARN,ERROR,FATAL`. ZK_LOG_LEVEL: INFO ## The maximum number of concurrent client connections that ## a server in the ensemble will accept. ZK_MAX_CLIENT_CNXNS: 60 ## The maximum session timeout that the ensemble will allow a client to request. ## Upstream default is `20 * ZK_TICK_TIME` ZK_MAX_SESSION_TIMEOUT: 40000 ## The minimum session timeout that the ensemble will allow a client to request. ## Upstream default is `2 * ZK_TICK_TIME`. ZK_MIN_SESSION_TIMEOUT: 4000 ## The delay, in hours, between ZooKeeper log and snapshot cleanups. ZK_PURGE_INTERVAL: 0 ## The port on which the leader will send events to followers. ZK_SERVER_PORT: 2888 ## The number of snapshots that the ZooKeeper process will retain if ## `ZK_PURGE_INTERVAL` is set to a value greater than `0`. ZK_SNAP_RETAIN_COUNT: 3 ## The number of Tick by which a follower may lag behind the ensembles leader. ZK_SYNC_LIMIT: 10 ## The number of wall clock ms that corresponds to a Tick for the ensembles ## internal time. ZK_TICK_TIME: 2000 jobs: chroots: enabled: false activeDeadlineSeconds: 300 backoffLimit: 5 completions: 1 config: create: [] # - /kafka # - /ureplicator env: [] parallelism: 1 resources: {} restartPolicy: Never