From ec94abf0ea9154af2f0dbce13e12df775b72bbac Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Wed, 22 Nov 2017 13:06:39 -0500 Subject: build multus in ubuntu:16.04 docker during deployment Change-Id: I557be21c59e28401c5ec20cd43d2baabc13bef3e Signed-off-by: Guo Ruijing --- src/cni/multus/install_cni.sh | 12 +++ src/cni/multus/kube_cni_multus.yml | 95 ++++++++++++++++++++++ src/vagrant/kubeadm_multus/Vagrantfile | 1 + src/vagrant/kubeadm_multus/examples/multus.sh | 15 ++-- src/vagrant/kubeadm_multus/master_setup.sh | 2 +- src/vagrant/kubeadm_multus/multus/Dockerfile.build | 5 -- .../kubeadm_multus/multus/Dockerfile.multus | 4 - src/vagrant/kubeadm_multus/multus/build.sh | 7 -- src/vagrant/kubeadm_multus/multus/install_cni.sh | 6 -- .../kubeadm_multus/multus/kube_cni_multus.yml | 88 -------------------- src/vagrant/kubeadm_multus/multus/setup.sh | 9 -- 11 files changed, 115 insertions(+), 129 deletions(-) create mode 100644 src/cni/multus/install_cni.sh create mode 100644 src/cni/multus/kube_cni_multus.yml delete mode 100644 src/vagrant/kubeadm_multus/multus/Dockerfile.build delete mode 100644 src/vagrant/kubeadm_multus/multus/Dockerfile.multus delete mode 100644 src/vagrant/kubeadm_multus/multus/build.sh delete mode 100644 src/vagrant/kubeadm_multus/multus/install_cni.sh delete mode 100644 src/vagrant/kubeadm_multus/multus/kube_cni_multus.yml delete mode 100644 src/vagrant/kubeadm_multus/multus/setup.sh diff --git a/src/cni/multus/install_cni.sh b/src/cni/multus/install_cni.sh new file mode 100644 index 0000000..0d1ee6b --- /dev/null +++ b/src/cni/multus/install_cni.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -ex + +export PATH=/usr/local/go/bin:$PATH +apt-get update && apt-get install -y wget +rm -rf multus-cni +wget -qO- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz | tar -C /usr/local/ -xz +git clone https://github.com/Intel-Corp/multus-cni +cd multus-cni; bash ./build +cp bin/multus /opt/cni/bin +cp /etc/kube-cnimultus/cni-conf.json /etc/cni/net.d/05-multus.conf diff --git a/src/cni/multus/kube_cni_multus.yml b/src/cni/multus/kube_cni_multus.yml new file mode 100644 index 0000000..cd91737 --- /dev/null +++ b/src/cni/multus/kube_cni_multus.yml @@ -0,0 +1,95 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cnimultus + namespace: kube-system +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: kube-cnimultus-cfg + namespace: kube-system + labels: + tier: node + app: cnimultus +data: + cni-conf.json: | + { + "name": "multus", + "type": "multus", + "delegates": [ + { + "name": "weave", + "type": "weave-net", + "hairpinMode": true, + "masterplugin": true + }, + { + "name": "mynet", + "type": "bridge", + "bridge": "cni0", + "isGateway": true, + "ipMasq": true, + "ipam": { + "type": "host-local", + "subnet": "10.22.0.0/16", + "routes": [ + { "dst": "0.0.0.0/0" } + ] + } + } + ] + } +--- +apiVersion: extensions/v1beta1 +kind: DaemonSet +metadata: + name: kube-cnimultus-ds + namespace: kube-system + labels: + tier: node + app: cnimultus +spec: + template: + metadata: + labels: + tier: node + app: cnimultus + spec: + hostNetwork: true + nodeSelector: + beta.kubernetes.io/arch: amd64 + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + serviceAccountName: cnimultus + initContainers: + - name: install-cni + image: ubuntu:16.04 + command: + - bash + - "-c" + - "apt-get update && apt-get install -y git && git clone http://github.com/opnfv/container4nfv && cd container4nfv && git fetch https://gerrit.opnfv.org/gerrit/container4nfv refs/changes/81/47681/5 && git checkout FETCH_HEAD && bash ./src/cni/multus/install_cni.sh" + volumeMounts: + - name: cni-bin + mountPath: /opt/cni/bin + - name: cni-cfg + mountPath: /etc/cni/net.d + - name: cnimultus-cfg + mountPath: /etc/kube-cnimultus + containers: + - name: run-cni + image: busybox:1.27.2 + command: ['sh', '-c', 'while true; do sleep 10000; done' ] + volumes: + - name: cni-bin + hostPath: + path: /opt/cni/bin + - name: cni-cfg + hostPath: + path: /etc/cni/net.d + - name: cnimultus-cfg + configMap: + name: kube-cnimultus-cfg diff --git a/src/vagrant/kubeadm_multus/Vagrantfile b/src/vagrant/kubeadm_multus/Vagrantfile index 1cc8e58..bda421f 100644 --- a/src/vagrant/kubeadm_multus/Vagrantfile +++ b/src/vagrant/kubeadm_multus/Vagrantfile @@ -5,6 +5,7 @@ Vagrant.configure("2") do |config| config.vm.box = "opnfv/container4nfv" config.vm.box_version = "0" + config.vm.synced_folder "../..", "/src" config.vm.provision "shell", path: "host_setup.sh", privileged: false config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", 4096] diff --git a/src/vagrant/kubeadm_multus/examples/multus.sh b/src/vagrant/kubeadm_multus/examples/multus.sh index d4b9a88..92e95ab 100755 --- a/src/vagrant/kubeadm_multus/examples/multus.sh +++ b/src/vagrant/kubeadm_multus/examples/multus.sh @@ -17,23 +17,20 @@ set -ex -#workaroud to fix dns pod issue -times=0 - -while [ $times -lt "3" ] +while true do - kubectl get pods -n kube-system | grep kube-dns | grep -v Run | sed "s/ .*//" | \ - xargs -I {} kubectl delete pod -n kube-system {} + kubectl get pods -n kube-system | grep kube-cnimultus-ds | grep -v Run | wc -l | grep "^0$" && break sleep 20 - times+=1 done +kubectl delete rc --all kubectl apply -f /vagrant/examples/busybox.yaml r="0" while [ $r -ne "2" ] do + sleep 10 r=$(kubectl get pods | grep Running | wc -l) - sleep 20 done + kubectl get pods --all-namespaces -kubectl get pods | grep Run | sed "s/ .*//" | xargs -I {} kubectl exec -i {} ip a +kubectl get pods | grep Run | sed "s/ .*//" | xargs -I {} kubectl exec -i {} ip a | grep mtu | wc -l | grep "^6$" || exit 1 diff --git a/src/vagrant/kubeadm_multus/master_setup.sh b/src/vagrant/kubeadm_multus/master_setup.sh index c452ac8..ac85347 100644 --- a/src/vagrant/kubeadm_multus/master_setup.sh +++ b/src/vagrant/kubeadm_multus/master_setup.sh @@ -9,4 +9,4 @@ export KUBECONFIG=$HOME/admin.conf echo "export KUBECONFIG=$HOME/admin.conf" >> $HOME/.bash_profile kubectl apply -f http://git.io/weave-kube-1.6 -kubectl apply -f /vagrant/multus/kube_cni_multus.yml +kubectl apply -f /src/cni/multus/kube_cni_multus.yml diff --git a/src/vagrant/kubeadm_multus/multus/Dockerfile.build b/src/vagrant/kubeadm_multus/multus/Dockerfile.build deleted file mode 100644 index 0b17fab..0000000 --- a/src/vagrant/kubeadm_multus/multus/Dockerfile.build +++ /dev/null @@ -1,5 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y sudo git wget -ADD ./build.sh . -RUN bash ./build.sh diff --git a/src/vagrant/kubeadm_multus/multus/Dockerfile.multus b/src/vagrant/kubeadm_multus/multus/Dockerfile.multus deleted file mode 100644 index e1d8cb0..0000000 --- a/src/vagrant/kubeadm_multus/multus/Dockerfile.multus +++ /dev/null @@ -1,4 +0,0 @@ -FROM ubuntu:16.04 - -ADD multus /cni/multus -ADD install_cni.sh /cni/install_cni.sh diff --git a/src/vagrant/kubeadm_multus/multus/build.sh b/src/vagrant/kubeadm_multus/multus/build.sh deleted file mode 100644 index 526b0b7..0000000 --- a/src/vagrant/kubeadm_multus/multus/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -wget -qO- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz | sudo tar -C /usr/local -xz -echo 'export GOPATH=/go; export PATH=/usr/local/go/bin:$GOPATH/bin:$PATH' >> ~/.bashrc -export GOPATH=/go; export PATH=/usr/local/go/bin:$GOPATH/bin:$PATH -git clone https://github.com/Intel-Corp/multus-cni -cd multus-cni; bash ./build diff --git a/src/vagrant/kubeadm_multus/multus/install_cni.sh b/src/vagrant/kubeadm_multus/multus/install_cni.sh deleted file mode 100644 index a4c5059..0000000 --- a/src/vagrant/kubeadm_multus/multus/install_cni.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -ex -cp /cni/multus /opt/cni/bin -cp /etc/kube-cnimultus/cni-conf.json /etc/cni/net.d/05-multus.conf -while true; do sleep 3600; done diff --git a/src/vagrant/kubeadm_multus/multus/kube_cni_multus.yml b/src/vagrant/kubeadm_multus/multus/kube_cni_multus.yml deleted file mode 100644 index 8290218..0000000 --- a/src/vagrant/kubeadm_multus/multus/kube_cni_multus.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: cnimultus - namespace: kube-system ---- -kind: ConfigMap -apiVersion: v1 -metadata: - name: kube-cnimultus-cfg - namespace: kube-system - labels: - tier: node - app: cnimultus -data: - cni-conf.json: | - { - "name": "multus", - "type": "multus", - "delegates": [ - { - "name": "weave", - "type": "weave-net", - "hairpinMode": true, - "masterplugin": true - }, - { - "name": "mynet", - "type": "bridge", - "bridge": "cni0", - "isGateway": true, - "ipMasq": true, - "ipam": { - "type": "host-local", - "subnet": "10.22.0.0/16", - "routes": [ - { "dst": "0.0.0.0/0" } - ] - } - } - ] - } ---- -apiVersion: extensions/v1beta1 -kind: DaemonSet -metadata: - name: kube-cnimultus-ds - namespace: kube-system - labels: - tier: node - app: cnimultus -spec: - template: - metadata: - labels: - tier: node - app: cnimultus - spec: - hostNetwork: true - nodeSelector: - beta.kubernetes.io/arch: amd64 - tolerations: - - key: node-role.kubernetes.io/master - operator: Exists - effect: NoSchedule - serviceAccountName: cnimultus - containers: - - name: install-cni - image: openretriever/cnimultus - command: [ "/bin/bash", "/cni/install_cni.sh" ] - volumeMounts: - - name: cni-bin - mountPath: /opt/cni/bin - - name: cni-cfg - mountPath: /etc/cni/net.d - - name: cnimultus-cfg - mountPath: /etc/kube-cnimultus - volumes: - - name: cni-bin - hostPath: - path: /opt/cni/bin - - name: cni-cfg - hostPath: - path: /etc/cni/net.d - - name: cnimultus-cfg - configMap: - name: kube-cnimultus-cfg diff --git a/src/vagrant/kubeadm_multus/multus/setup.sh b/src/vagrant/kubeadm_multus/multus/setup.sh deleted file mode 100644 index 4729993..0000000 --- a/src/vagrant/kubeadm_multus/multus/setup.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -BUILD=`pwd` - -sudo docker build -t multus.build . -f Dockerfile.build -sudo docker run -v $BUILD:/build -ti multus.build cp multus-cni/bin/multus /build -sudo docker build -t openretriever/cnimultus . -f Dockerfile.multus -sudo docker push openretriever/cnimultus -rm -rf multus -- cgit 1.2.3-korg