From fce58a008d9c79ff21683a4af7647bc7336bcbf2 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Sun, 25 Dec 2016 16:07:30 +0100 Subject: Current Zookeeper from https://github.com/kubernetes/contrib/blob/master/statefulsets/ --- zookeeper/zookeeper.yaml | 188 +++++++++++++++++++++++++++-------------------- 1 file changed, 110 insertions(+), 78 deletions(-) diff --git a/zookeeper/zookeeper.yaml b/zookeeper/zookeeper.yaml index ee2b237..71a77e0 100644 --- a/zookeeper/zookeeper.yaml +++ b/zookeeper/zookeeper.yaml @@ -1,31 +1,49 @@ -# A headless service to create DNS records +--- apiVersion: v1 kind: Service metadata: - annotations: - service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" - name: zk - namespace: kafka + name: zk-headless labels: - app: zk + app: zk-headless spec: ports: - port: 2888 - name: peer + name: server - port: 3888 name: leader-election - # *.zk.kafka.svc.cluster.local clusterIP: None selector: app: zk --- -apiVersion: apps/v1alpha1 -kind: PetSet +apiVersion: v1 +kind: ConfigMap +metadata: + name: zk-config +data: + jvm.heap: "2G" + tick: "2000" + init: "10" + sync: "5" + client.cnxns: "60" + snap.retain: "3" + purge.interval: "0" +--- +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: zk-budget +spec: + selector: + matchLabels: + app: zk + minAvailable: 2 +--- +apiVersion: apps/v1beta1 +kind: StatefulSet metadata: - name: zoo - namespace: kafka + name: zk spec: - serviceName: "zk" + serviceName: zk-headless replicas: 3 template: metadata: @@ -33,92 +51,106 @@ spec: app: zk annotations: pod.alpha.kubernetes.io/initialized: "true" - pod.alpha.kubernetes.io/init-containers: '[ - { - "name": "install", - "image": "gcr.io/google_containers/zookeeper-install:0.1", - "imagePullPolicy": "Always", - "args": ["--version=3.5.2-alpha", "--install-into=/opt", "--work-dir=/work-dir"], - "volumeMounts": [ - { - "name": "opt", - "mountPath": "/opt/" - }, - { - "name": "workdir", - "mountPath": "/work-dir" - } - ] - }, + scheduler.alpha.kubernetes.io/affinity: > { - "name": "bootstrap", - "image": "java:openjdk-8-jre", - "command": ["/work-dir/peer-finder"], - "args": ["-on-start=\"/work-dir/on-start.sh\"", "-service=zk"], - "env": [ - { - "name": "POD_NAMESPACE", - "valueFrom": { - "fieldRef": { - "apiVersion": "v1", - "fieldPath": "metadata.namespace" - } - } - } - ], - "volumeMounts": [ - { - "name": "opt", - "mountPath": "/opt/" - }, - { - "name": "workdir", - "mountPath": "/work-dir" - }, - { - "name": "datadir", - "mountPath": "/tmp/zookeeper" - } - ] + "podAntiAffinity": { + "requiredDuringSchedulingRequiredDuringExecution": [{ + "labelSelector": { + "matchExpressions": [{ + "key": "app", + "operator": "In", + "values": ["zk-headless"] + }] + }, + "topologyKey": "kubernetes.io/hostname" + }] + } } - ]' spec: containers: - - name: zk - image: java:openjdk-8-jre + - name: k8szk + imagePullPolicy: Always + image: gcr.io/google_samples/k8szk:v2 + resources: + requests: + memory: "4Gi" + cpu: "1" ports: - containerPort: 2181 name: client - containerPort: 2888 - name: peer + name: server - containerPort: 3888 name: leader-election + env: + - name : ZK_REPLICAS + value: "3" + - name : ZK_HEAP_SIZE + valueFrom: + configMapKeyRef: + name: zk-config + key: jvm.heap + - name : ZK_TICK_TIME + valueFrom: + configMapKeyRef: + name: zk-config + key: tick + - name : ZK_INIT_LIMIT + valueFrom: + configMapKeyRef: + name: zk-config + key: init + - name : ZK_SYNC_LIMIT + valueFrom: + configMapKeyRef: + name: zk-config + key: tick + - name : ZK_MAX_CLIENT_CNXNS + valueFrom: + configMapKeyRef: + name: zk-config + key: client.cnxns + - name: ZK_SNAP_RETAIN_COUNT + valueFrom: + configMapKeyRef: + name: zk-config + key: snap.retain + - name: ZK_PURGE_INTERVAL + valueFrom: + configMapKeyRef: + name: zk-config + key: purge.interval + - name: ZK_CLIENT_PORT + value: "2181" + - name: ZK_SERVER_PORT + value: "2888" + - name: ZK_ELECTION_PORT + value: "3888" command: - - /opt/zookeeper/bin/zkServer.sh - args: - - start-foreground + - sh + - -c + - zkGenConfig.sh && zkServer.sh start-foreground readinessProbe: exec: command: - - sh - - -c - - "/opt/zookeeper/bin/zkCli.sh ls /" + - "zkOk.sh" + initialDelaySeconds: 15 + timeoutSeconds: 5 + livenessProbe: + exec: + command: + - "zkOk.sh" initialDelaySeconds: 15 timeoutSeconds: 5 volumeMounts: - name: datadir - mountPath: /tmp/zookeeper - - name: opt - mountPath: /opt/ - volumes: - - name: opt - emptyDir: {} - - name: workdir - emptyDir: {} + mountPath: /var/lib/zookeeper + securityContext: + runAsUser: 1000 + fsGroup: 1000 volumeClaimTemplates: - metadata: name: datadir - namespace: kafka annotations: volume.alpha.kubernetes.io/storage-class: anything spec: -- cgit v1.2.3