diff options
author | Guo Ruijing <ruijing.guo@intel.com> | 2017-10-18 19:16:27 -0400 |
---|---|---|
committer | Guo Ruijing <ruijing.guo@intel.com> | 2017-10-18 19:18:23 -0400 |
commit | 7090e29c18309c21614b5c44572ee8b451eac973 (patch) | |
tree | 707f4c2208a8b75342dc2781f305e3f8315a46b1 /src/vagrant/kubeadm_multus | |
parent | 4b7b5289169f5790a9cbdd65edf01cd3f372ee99 (diff) |
multus cni support
Change-Id: I0723447de8e9f5734a3a5d077f7f6f08cd02d9b3
Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
Diffstat (limited to 'src/vagrant/kubeadm_multus')
-rw-r--r-- | src/vagrant/kubeadm_multus/Vagrantfile | 33 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/examples/ubuntu.yaml | 32 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/host_setup.sh | 20 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/master_setup.sh | 11 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/multus/Dockerfile.build | 5 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/multus/Dockerfile.multus | 4 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/multus/build.sh | 7 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/multus/install_cni.sh | 6 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/multus/kube_cni_multus.yml | 88 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/multus/setup.sh | 9 | ||||
-rw-r--r-- | src/vagrant/kubeadm_multus/worker_setup.sh | 4 |
11 files changed, 219 insertions, 0 deletions
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 <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list +deb http://apt.kubernetes.io/ kubernetes-xenial main +EOF +sudo apt-get update +sudo apt-get install -y docker.io +sudo apt-get install -y --allow-downgrades kubelet=1.7.0-00 kubeadm=1.7.0-00 kubectl=1.7.0-00 kubernetes-cni=0.5.1-00 +sudo rm -rf /var/lib/kubelet diff --git a/src/vagrant/kubeadm_multus/master_setup.sh b/src/vagrant/kubeadm_multus/master_setup.sh new file mode 100644 index 0000000..7d3dc3e --- /dev/null +++ b/src/vagrant/kubeadm_multus/master_setup.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +sudo kubeadm init --apiserver-advertise-address=10.96.0.10 --service-cidr=10.96.0.0/24 --pod-network-cidr=10.244.0.0/16 --token 8c5adc.1cec8dbf339093f0 +sudo cp /etc/kubernetes/admin.conf $HOME/ +sudo chown $(id -u):$(id -g) $HOME/admin.conf +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 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 |