From 07e4f515a4d0eb332c6ab81b3cc93b7d55e6a5d7 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Thu, 14 Sep 2017 15:55:25 +0100 Subject: [PATCH] kubernetes: add basic cni plugins dynamically This avoids a slightly tricky sequence of nested bind mounts by just unpacking a tarball on boot (with a stamp so it only happens once). Signed-off-by: Ian Campbell --- projects/kubernetes/kubernetes/Dockerfile | 4 +--- projects/kubernetes/kubernetes/kubelet.sh | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/projects/kubernetes/kubernetes/Dockerfile b/projects/kubernetes/kubernetes/Dockerfile index 032bfcea6..689b7b632 100644 --- a/projects/kubernetes/kubernetes/Dockerfile +++ b/projects/kubernetes/kubernetes/Dockerfile @@ -30,9 +30,7 @@ RUN rm -rf /out/etc/apk /out/lib/apk /out/var/cache RUN rmdir /out/var/run && ln -nfs /run /out/var/run -RUN curl -fSL -o /tmp/cni.tgz https://github.com/containernetworking/cni/releases/download/v0.5.2/cni-amd64-${cni_version}.tgz && \ - mkdir -p /out/opt/cni/bin /out/etc/cni/net.d && \ - tar -xzf /tmp/cni.tgz -C /out/opt/cni/bin +RUN curl -fSL -o /out/root/cni.tgz https://github.com/containernetworking/cni/releases/download/v0.5.2/cni-amd64-${cni_version}.tgz RUN curl -fSL -o /out/etc/weave.yaml https://cloud.weave.works/k8s/v1.7/net?v=${weave_version} RUN curl -fSL -o /out/usr/bin/kubelet https://dl.k8s.io/${kubernetes_version}/bin/linux/amd64/kubelet && chmod 0755 /out/usr/bin/kubelet RUN curl -fSL -o /out/usr/bin/kubeadm https://dl.k8s.io/${kubernetes_version}/bin/linux/amd64/kubeadm && chmod 0755 /out/usr/bin/kubeadm diff --git a/projects/kubernetes/kubernetes/kubelet.sh b/projects/kubernetes/kubernetes/kubelet.sh index 59e80b35c..d42033968 100755 --- a/projects/kubernetes/kubernetes/kubelet.sh +++ b/projects/kubernetes/kubernetes/kubelet.sh @@ -1,5 +1,9 @@ #!/bin/sh -mount --bind /opt/cni /var/lib/cni/opt +if [ ! -e /var/lib/cni/.opt.defaults-extracted ] ; then + mkdir -p /var/lib/cni/opt/bin + tar -xzf /root/cni.tgz -C /var/lib/cni/opt/bin + touch /var/lib/cni/.opt.defaults-extracted +fi until kubelet --kubeconfig=/var/lib/kubeadm/kubelet.conf \ --require-kubeconfig=true \ --pod-manifest-path=/var/lib/kubeadm/manifests \