From 7090e29c18309c21614b5c44572ee8b451eac973 Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Wed, 18 Oct 2017 19:16:27 -0400 Subject: multus cni support Change-Id: I0723447de8e9f5734a3a5d077f7f6f08cd02d9b3 Signed-off-by: Guo Ruijing --- src/vagrant/kubeadm_multus/Vagrantfile | 33 ++++++++ src/vagrant/kubeadm_multus/examples/ubuntu.yaml | 32 ++++++++ src/vagrant/kubeadm_multus/host_setup.sh | 20 +++++ src/vagrant/kubeadm_multus/master_setup.sh | 11 +++ 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 +++ src/vagrant/kubeadm_multus/worker_setup.sh | 4 + 11 files changed, 219 insertions(+) create mode 100644 src/vagrant/kubeadm_multus/Vagrantfile create mode 100644 src/vagrant/kubeadm_multus/examples/ubuntu.yaml create mode 100644 src/vagrant/kubeadm_multus/host_setup.sh create mode 100644 src/vagrant/kubeadm_multus/master_setup.sh create mode 100644 src/vagrant/kubeadm_multus/multus/Dockerfile.build create mode 100644 src/vagrant/kubeadm_multus/multus/Dockerfile.multus create mode 100644 src/vagrant/kubeadm_multus/multus/build.sh create mode 100644 src/vagrant/kubeadm_multus/multus/install_cni.sh create mode 100644 src/vagrant/kubeadm_multus/multus/kube_cni_multus.yml create mode 100644 src/vagrant/kubeadm_multus/multus/setup.sh create mode 100644 src/vagrant/kubeadm_multus/worker_setup.sh (limited to 'src/vagrant') diff --git a/src/vagrant/kubeadm_multus/Vagrantfile b/src/vagrant/kubeadm_multus/Vagrantfile new file mode 100644 index 0000000..aa3792f --- /dev/null +++ b/src/vagrant/kubeadm_multus/Vagrantfile @@ -0,0 +1,33 @@ +$num_workers=3 + +Vagrant.require_version ">= 1.8.6" +Vagrant.configure("2") do |config| + + config.vm.box = "bento/ubuntu-16.04" + config.vm.provision "shell", path: "host_setup.sh", privileged: false + config.vm.provider :virtualbox do |vb| + vb.customize ["modifyvm", :id, "--memory", 4096] + vb.customize ["modifyvm", :id, "--cpus", 4] + vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] + vb.customize "post-boot",["controlvm", :id, "setlinkstate1", "on"] + end + + config.vm.provision "shell", path: "host_setup.sh", privileged: false + + config.vm.define "master" do |config| + config.vm.hostname = "master" + config.vm.provision "shell", path: "master_setup.sh", privileged: false + config.vm.network :private_network, ip: "10.96.0.10" + config.vm.network :private_network, ip: "10.244.0.10" + end + + (1 .. $num_workers).each do |i| + config.vm.define vm_name = "worker%d" % [i] do |config| + config.vm.hostname = vm_name + config.vm.provision "shell", path: "worker_setup.sh", privileged: false + config.vm.network :private_network, ip: "10.96.0.#{i+20}" + config.vm.network :private_network, ip: "10.244.0.#{i+20}" + end + end + +end diff --git a/src/vagrant/kubeadm_multus/examples/ubuntu.yaml b/src/vagrant/kubeadm_multus/examples/ubuntu.yaml new file mode 100644 index 0000000..b01f903 --- /dev/null +++ b/src/vagrant/kubeadm_multus/examples/ubuntu.yaml @@ -0,0 +1,32 @@ +apiVersion: v1 +kind: Service +metadata: + name: ubuntu + labels: + app: ubuntu +spec: + type: NodePort + ports: + - port: 80 + protocol: TCP + name: http + selector: + app: ubuntu +--- +apiVersion: v1 +kind: ReplicationController +metadata: + name: ubuntu +spec: + replicas: 2 + template: + metadata: + labels: + app: ubuntu + spec: + containers: + - name: ubuntu + image: openretriever/ubuntu1604-ping + command: [ "/bin/bash", "-c", "sleep 30000" ] + ports: + - containerPort: 80 diff --git a/src/vagrant/kubeadm_multus/host_setup.sh b/src/vagrant/kubeadm_multus/host_setup.sh new file mode 100644 index 0000000..003bf2b --- /dev/null +++ b/src/vagrant/kubeadm_multus/host_setup.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -ex + +cat << EOF | sudo tee /etc/hosts +1.8.1.0.1 localhost +10.96.0.10 master +10.96.0.21 worker1 +10.96.0.22 worker2 +10.96.0.23 worker3 +EOF + +curl -s http://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +cat <> $HOME/.bash_profile + +kubectl apply -f http://git.io/weave-kube-1.6 +kubectl apply -f http://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml +kubectl apply -f /vagrant/multus/kube_cni_multus.yml diff --git a/src/vagrant/kubeadm_multus/multus/Dockerfile.build b/src/vagrant/kubeadm_multus/multus/Dockerfile.build new file mode 100644 index 0000000..0b17fab --- /dev/null +++ b/src/vagrant/kubeadm_multus/multus/Dockerfile.build @@ -0,0 +1,5 @@ +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 new file mode 100644 index 0000000..e1d8cb0 --- /dev/null +++ b/src/vagrant/kubeadm_multus/multus/Dockerfile.multus @@ -0,0 +1,4 @@ +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 new file mode 100644 index 0000000..526b0b7 --- /dev/null +++ b/src/vagrant/kubeadm_multus/multus/build.sh @@ -0,0 +1,7 @@ +#!/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 new file mode 100644 index 0000000..a4c5059 --- /dev/null +++ b/src/vagrant/kubeadm_multus/multus/install_cni.sh @@ -0,0 +1,6 @@ +#!/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 new file mode 100644 index 0000000..8290218 --- /dev/null +++ b/src/vagrant/kubeadm_multus/multus/kube_cni_multus.yml @@ -0,0 +1,88 @@ +--- +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 new file mode 100644 index 0000000..4729993 --- /dev/null +++ b/src/vagrant/kubeadm_multus/multus/setup.sh @@ -0,0 +1,9 @@ +#!/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 diff --git a/src/vagrant/kubeadm_multus/worker_setup.sh b/src/vagrant/kubeadm_multus/worker_setup.sh new file mode 100644 index 0000000..1ba3ec8 --- /dev/null +++ b/src/vagrant/kubeadm_multus/worker_setup.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +set -ex +sudo kubeadm join --token 8c5adc.1cec8dbf339093f0 10.96.0.10:6443 || true -- cgit 1.2.3-korg