From 8b99dd6fb19156f8db119a1066ba035ecc1a7377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9na=C3=AFc=20Huard?= Date: Wed, 23 Sep 2015 11:34:55 +0200 Subject: [PATCH] Get rid of the etcd discovery mechanism in favor of static configuration In order to make the etcd instances of the VMs join into a single cluster, we used to use the discovery mechanism. This made the cluster bootstrap dependent on an external etcd cluster instance. 74601ea replaced the dependency on discovery.etcd.io by a local etcd cluster. This change completely gets rid of the dynamic discovery mechanism in favor of the static configuration method. This should be both safe and light since it completely removes the need of having an external etcd cluster running somewhere (either discovery.etcd.io, or locally). --- cluster/libvirt-coreos/user_data.yml | 8 +++++++- cluster/libvirt-coreos/util.sh | 13 ++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/cluster/libvirt-coreos/user_data.yml b/cluster/libvirt-coreos/user_data.yml index 4616c24d44c..24c1dc41f14 100644 --- a/cluster/libvirt-coreos/user_data.yml +++ b/cluster/libvirt-coreos/user_data.yml @@ -15,11 +15,12 @@ write_files: coreos: etcd2: - discovery: ${discovery} advertise-client-urls: http://${public_ip}:2379 initial-advertise-peer-urls: http://${public_ip}:2380 listen-client-urls: http://0.0.0.0:2379 listen-peer-urls: http://${public_ip}:2380 + initial-cluster-state: new + initial-cluster: ${etcd2_initial_cluster} units: - name: static.network command: start @@ -70,6 +71,11 @@ coreos: Type=oneshot - name: etcd2.service command: start + drop-ins: + - name: 10-override-name.conf + content: | + [Service] + Environment=ETCD_NAME=%H - name: docker.service command: start drop-ins: diff --git a/cluster/libvirt-coreos/util.sh b/cluster/libvirt-coreos/util.sh index 808f87b8a7d..fc567584e57 100644 --- a/cluster/libvirt-coreos/util.sh +++ b/cluster/libvirt-coreos/util.sh @@ -189,11 +189,18 @@ function kube-up { readonly ssh_keys="$(cat ~/.ssh/id_*.pub | sed 's/^/ - /')" readonly kubernetes_dir="$POOL_PATH/kubernetes" - readonly discovery=$(curl -s https://discovery.etcd.io/new?size=$(($NUM_MINIONS+1))) - - readonly machines=$(join , "${KUBE_MINION_IP_ADDRESSES[@]}") local i + for (( i = 0 ; i <= $NUM_MINIONS ; i++ )); do + if [[ $i -eq $NUM_MINIONS ]]; then + etcd2_initial_cluster[$i]="${MASTER_NAME}=http://${MASTER_IP}:2380" + else + etcd2_initial_cluster[$i]="${MINION_NAMES[$i]}=http://${MINION_IPS[$i]}:2380" + fi + done + etcd2_initial_cluster=$(join , "${etcd2_initial_cluster[@]}") + readonly machines=$(join , "${KUBE_MINION_IP_ADDRESSES[@]}") + for (( i = 0 ; i <= $NUM_MINIONS ; i++ )); do if [[ $i -eq $NUM_MINIONS ]]; then type=master