--- apiVersion: v1 kind: Pod metadata: name: auxiliary-etcd namespace: kube-system labels: component: auxiliary-etcd promenade: genesis spec: hostNetwork: true {%- with etcd_name = 'auxiliary', client_port = 12379, peer_port = 12380 %} containers: {% include "genesis-etcd/server-container.yaml" with context %} - name: monitor image: {{ config['Genesis:images.kubernetes.etcd'] }} command: - /bin/sh - -c - |- set -x MEMBER_COUNT=$(etcdctl member list | grep '\bstarted\b' | wc -l) if [ $MEMBER_COUNT -gt 1 ]; then MEMBER_ID=$(etcdctl member list | grep auxiliary | awk -F ', ' '{ print $1 }') if [ -n $MEMBER_ID ]; then while [ $MEMBER_COUNT -lt 3 ]; do sleep 30 MEMBER_COUNT=$(etcdctl member list | grep '\bstarted\b' | wc -l) done set -e etcdctl member remove $MEMBER_ID fi rm -rf /var/lib/etcd/* /manifests/auxiliary-kubernetes-etcd.yaml sleep 10000 fi env: - name: ETCDCTL_API value: '3' - name: ETCDCTL_DIAL_TIMEOUT value: 3s - name: ETCDCTL_ENDPOINTS value: https://127.0.0.1:2379 - name: ETCDCTL_CACERT value: /etc/etcd/pki/client-ca.pem - name: ETCDCTL_CERT value: /etc/etcd/pki/etcd-client.pem - name: ETCDCTL_KEY value: /etc/etcd/pki/etcd-client-key.pem volumeMounts: - name: data mountPath: /var/lib/etcd - name: pki mountPath: /etc/etcd/pki - name: manifest mountPath: /manifests volumes: {% include "genesis-etcd/common-volumes.yaml" with context %} - name: manifest hostPath: path: /etc/kubernetes/manifests {%- endwith %} ...