From 061f5a313be351fcb6498f3af64dcd6372354db4 Mon Sep 17 00:00:00 2001 From: Florent Monbillard Date: Wed, 13 Feb 2019 15:44:12 -0500 Subject: [PATCH] Explicitely set etcd endpoint in kubeadm-images.yaml (#4063) Currently, the task `container_download | download images for kubeadm config images` fetches etcd image even though it's not required (etcd is bootstrapped by kubespray, not kubeadm). `kubeadm-images.yaml` is only a subset of `kubeadm-config.yaml`, therefore ``kubeadm config images pull` will try to get all this list (including etcd) ``` # kubeadm config images list --config /etc/kubernetes/kubeadm-images.yaml k8s.gcr.io/kube-apiserver:v1.13.2 k8s.gcr.io/kube-controller-manager:v1.13.2 k8s.gcr.io/kube-scheduler:v1.13.2 k8s.gcr.io/kube-proxy:v1.13.2 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.2.24 k8s.gcr.io/coredns:1.2.6 ``` When using the `kubeadm-config.yaml` though, it doesn't list etcd image: ``` # kubeadm config images list --config /etc/kubernetes/kubeadm-config.yaml k8s.gcr.io/kube-apiserver:v1.13.2 k8s.gcr.io/kube-controller-manager:v1.13.2 k8s.gcr.io/kube-scheduler:v1.13.2 k8s.gcr.io/kube-proxy:v1.13.2 k8s.gcr.io/pause:3.1 k8s.gcr.io/coredns:1.2.6 ``` This change just adds the etcd endpoints in the `kubeadm-images.yaml` to give a hint to kubeadm it doesn't need etcd image for its boostrapping as etcd is "external". I confess it is a ugly hack, a better way would be to use a single `kubeadm-config.yaml` for both tasks, but they are triggered by different roles (`kubeadm-images.yaml` is used by download, `kubeadm-config.yaml` by kubernetes/master) at different steps and I didn't want to refactor too many things to prevent breakage. This is specially useful for offline installation where a whitelist of container images is mirrored on a local private container registry. `k8s.gcr.io/etcd` and `quay.io/coreos/etcd` are two different repositories hosting the same images but using *different tags*! * coreos/etcd:v3.2.24 * k8s.gcr.io/etcd:3.2.24 (note the missing 'v' in the tag name) --- roles/download/templates/kubeadm-images.yaml.j2 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/roles/download/templates/kubeadm-images.yaml.j2 b/roles/download/templates/kubeadm-images.yaml.j2 index 1ec05054a..e86864ef2 100644 --- a/roles/download/templates/kubeadm-images.yaml.j2 +++ b/roles/download/templates/kubeadm-images.yaml.j2 @@ -31,6 +31,12 @@ kind: ClusterConfiguration {% endif %} imageRepository: {{ kube_image_repo }} kubernetesVersion: {{ kube_version }} +etcd: + external: + endpoints: +{% for endpoint in etcd_access_addresses.split(',') %} + - {{ endpoint }} +{% endfor %} {% if kube_version is version('v1.12.0', '<') %} nodeRegistration: {% if container_manager == 'crio' %}