Commit cd11bb6c053e2e6a94926ca3b0c9de05cbbd240e

Authored by volodymyr-babak
1 parent 0f34ff51

Kubernetes, ZK

Showing 1 changed file with 167 additions and 0 deletions
  1 +apiVersion: v1
  2 +kind: Service
  3 +metadata:
  4 + name: zk-headless
  5 + labels:
  6 + app: zk-headless
  7 +spec:
  8 + ports:
  9 + - port: 2888
  10 + name: server
  11 + - port: 3888
  12 + name: leader-election
  13 + clusterIP: None
  14 + selector:
  15 + app: zk
  16 +---
  17 +apiVersion: v1
  18 +kind: ConfigMap
  19 +metadata:
  20 + name: zk-config
  21 +data:
  22 + ensemble: "zk-0;zk-1;zk-2"
  23 + jvm.heap: "2G"
  24 + tick: "2000"
  25 + init: "10"
  26 + sync: "5"
  27 + client.cnxns: "60"
  28 + snap.retain: "3"
  29 + purge.interval: "1"
  30 +---
  31 +apiVersion: policy/v1beta1
  32 +kind: PodDisruptionBudget
  33 +metadata:
  34 + name: zk-budget
  35 +spec:
  36 + selector:
  37 + matchLabels:
  38 + app: zk
  39 + minAvailable: 2
  40 +---
  41 +apiVersion: apps/v1beta1
  42 +kind: StatefulSet
  43 +metadata:
  44 + name: zk
  45 +spec:
  46 + serviceName: zk-headless
  47 + replicas: 3
  48 + template:
  49 + metadata:
  50 + labels:
  51 + app: zk
  52 + annotations:
  53 + pod.alpha.kubernetes.io/initialized: "true"
  54 + scheduler.alpha.kubernetes.io/affinity: >
  55 + {
  56 + "podAntiAffinity": {
  57 + "requiredDuringSchedulingIgnoredDuringExecution": [
  58 + {
  59 + "labelSelector": {
  60 + "matchExpressions": [
  61 + {
  62 + "key": "app",
  63 + "operator": "In",
  64 + "values": [ "zk-headless" ]
  65 + }
  66 + ]
  67 + },
  68 + "topologyKey": "kubernetes.io/hostname"
  69 + }
  70 + ]
  71 + }
  72 + }
  73 + spec:
  74 + containers:
  75 + - name: k8szk
  76 + imagePullPolicy: Always
  77 + image: gcr.io/google_samples/k8szk:v1
  78 + resources:
  79 + requests:
  80 + memory: "1Gi"
  81 + cpu: "0.5"
  82 + ports:
  83 + - containerPort: 2181
  84 + name: client
  85 + - containerPort: 2888
  86 + name: server
  87 + - containerPort: 3888
  88 + name: leader-election
  89 + env:
  90 + - name : ZK_ENSEMBLE
  91 + valueFrom:
  92 + configMapKeyRef:
  93 + name: zk-config
  94 + key: ensemble
  95 + - name : ZK_HEAP_SIZE
  96 + valueFrom:
  97 + configMapKeyRef:
  98 + name: zk-config
  99 + key: jvm.heap
  100 + - name : ZK_TICK_TIME
  101 + valueFrom:
  102 + configMapKeyRef:
  103 + name: zk-config
  104 + key: tick
  105 + - name : ZK_INIT_LIMIT
  106 + valueFrom:
  107 + configMapKeyRef:
  108 + name: zk-config
  109 + key: init
  110 + - name : ZK_SYNC_LIMIT
  111 + valueFrom:
  112 + configMapKeyRef:
  113 + name: zk-config
  114 + key: tick
  115 + - name : ZK_MAX_CLIENT_CNXNS
  116 + valueFrom:
  117 + configMapKeyRef:
  118 + name: zk-config
  119 + key: client.cnxns
  120 + - name: ZK_SNAP_RETAIN_COUNT
  121 + valueFrom:
  122 + configMapKeyRef:
  123 + name: zk-config
  124 + key: snap.retain
  125 + - name: ZK_PURGE_INTERVAL
  126 + valueFrom:
  127 + configMapKeyRef:
  128 + name: zk-config
  129 + key: purge.interval
  130 + - name: ZK_CLIENT_PORT
  131 + value: "2181"
  132 + - name: ZK_SERVER_PORT
  133 + value: "2888"
  134 + - name: ZK_ELECTION_PORT
  135 + value: "3888"
  136 + command:
  137 + - sh
  138 + - -c
  139 + - zkGenConfig.sh && zkServer.sh start-foreground
  140 + readinessProbe:
  141 + exec:
  142 + command:
  143 + - "zkOk.sh"
  144 + initialDelaySeconds: 15
  145 + timeoutSeconds: 5
  146 + livenessProbe:
  147 + exec:
  148 + command:
  149 + - "zkOk.sh"
  150 + initialDelaySeconds: 15
  151 + timeoutSeconds: 5
  152 + volumeMounts:
  153 + - name: datadir
  154 + mountPath: /var/lib/zookeeper
  155 + securityContext:
  156 + runAsUser: 1000
  157 + fsGroup: 1000
  158 + volumeClaimTemplates:
  159 + - metadata:
  160 + name: datadir
  161 + annotations:
  162 + volume.alpha.kubernetes.io/storage-class: anything
  163 + spec:
  164 + accessModes: [ "ReadWriteOnce" ]
  165 + resources:
  166 + requests:
  167 + storage: 20Gi
\ No newline at end of file
... ...