Split contiv etcd and etcd-proxy into two daemonsets

Putting contiv etcd and etcd-proxy into the same daemonset and manage
the difference by a env file is not good for scaling (adding nodes).
This commit split them into two daemonsets so that when adding nodes,
k8s could automatically starting a etcd-proxy on new nodes without need
to run related play that putting env file.
This commit is contained in:
Wei Tie
2017-12-05 17:06:52 -08:00
parent c2347db934
commit 5881ba43f8
5 changed files with 56 additions and 27 deletions

View File

@@ -0,0 +1,31 @@
---
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
name: contiv-etcd-proxy
namespace: {{ system_namespace }}
labels:
k8s-app: contiv-etcd-proxy
spec:
selector:
matchLabels:
k8s-app: contiv-etcd-proxy
template:
metadata:
labels:
k8s-app: contiv-etcd-proxy
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
spec:
hostNetwork: true
hostPID: true
containers:
- name: contiv-etcd-proxy
image: {{ contiv_etcd_image_repo }}:{{ contiv_etcd_image_tag }}
env:
- name: ETCD_LISTEN_CLIENT_URLS
value: http://127.0.0.1:{{ contiv_etcd_listen_port }}
- name: ETCD_PROXY
value: "on"
- name: ETCD_INITIAL_CLUSTER
value: {{ contiv_etcd_endpoints }}

View File

@@ -1,22 +1,8 @@
# contiv etcd config
{% if inventory_hostname in groups['kube-master'] %}
export ETCD_DATA_DIR=/var/lib/etcd/contiv-data
export ETCD_ADVERTISE_CLIENT_URLS={{ contiv_etcd_ad_urls }}
export ETCD_INITIAL_ADVERTISE_PEER_URLS={{ contiv_etcd_peer_urls }}
export ETCD_LISTEN_PEER_URLS={{ contiv_etcd_peer_urls }}
export ETCD_LISTEN_CLIENT_URLS={{ contiv_etcd_listen_urls | join(",") }}
export ETCD_NAME=
{%- for host in groups['kube-master'] -%}
{%- if host == inventory_hostname -%}
contiv_etcd{{ loop.index }}
{%- endif %}
{%- endfor %}
{% else %}
export ETCD_LISTEN_CLIENT_URLS=http://127.0.0.1:{{ contiv_etcd_listen_port }}
export ETCD_PROXY=on
{% endif %}
export ETCD_INITIAL_CLUSTER=
{%- for host in groups['kube-master'] -%}
contiv_etcd{{ loop.index }}=http://{{ hostvars[host]['ip'] | default(hostvars[host].ansible_default_ipv4['address']) }}:{{ contiv_etcd_peer_port }},
{%- endfor -%}
export ETCD_NAME={{ contiv_etcd_name }}
export ETCD_INITIAL_CLUSTER={{ contiv_etcd_endpoints }}

View File

@@ -19,26 +19,26 @@ spec:
spec:
hostNetwork: true
hostPID: true
nodeSelector:
node-role.kubernetes.io/master: "true"
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: contiv-etcd
image: {{ etcd_image_repo }}:{{ etcd_image_tag }}
image: {{ contiv_etcd_image_repo }}:{{ contiv_etcd_image_tag }}
command: ["sh","-c"]
args:
- '. {{ contiv_etcd_conf_dir }}/contiv-etcd.env && /usr/local/bin/etcd'
volumeMounts:
- name: etc-contiv-etcd
- name: contiv-etcd-conf-dir
mountPath: {{ contiv_etcd_conf_dir }}
- name: var-lib-etcd-contiv-data
- name: contiv-etcd-data-dir
mountPath: {{ contiv_etcd_data_dir }}
securityContext:
privileged: true
volumes:
- name: etc-contiv-etcd
hostPath:
path: {{ contiv_etcd_conf_dir }}
- name: var-lib-etcd-contiv-data
- name: contiv-etcd-data-dir
hostPath:
path: {{ contiv_etcd_data_dir }}
- name: contiv-etcd-conf-dir
hostPath:
path: {{ contiv_etcd_conf_dir }}