summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGuo Ruijing <ruijing.guo@intel.com>2017-12-27 15:25:18 -0500
committerGuo Ruijing <ruijing.guo@intel.com>2017-12-27 18:05:17 -0500
commit891c0a1ab78c4c2f46424fc35c0e99fe0f475c0b (patch)
tree642678e4e5da67e4df2b0c96c6b7b64a936f6f1a /src
parentc7dbc67c97d227763943e6f1b8fbf063c6775ad8 (diff)
support kata container in container4nfv
deploy k8s/weave + kata container Change-Id: I102bb6ee1ea9abaf164e62b26e3cc16e870d859a Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/vagrant/kubeadm_kata/Vagrantfile30
-rwxr-xr-xsrc/vagrant/kubeadm_kata/deploy.sh24
-rwxr-xr-xsrc/vagrant/kubeadm_kata/examples/nginx-app.sh25
-rw-r--r--src/vagrant/kubeadm_kata/examples/nginx-app.yaml31
-rw-r--r--src/vagrant/kubeadm_kata/host_setup.sh44
-rw-r--r--src/vagrant/kubeadm_kata/kata_setup.sh49
-rw-r--r--src/vagrant/kubeadm_kata/master_setup.sh34
-rw-r--r--src/vagrant/kubeadm_kata/worker_setup.sh31
8 files changed, 268 insertions, 0 deletions
diff --git a/src/vagrant/kubeadm_kata/Vagrantfile b/src/vagrant/kubeadm_kata/Vagrantfile
new file mode 100644
index 0000000..273157c
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/Vagrantfile
@@ -0,0 +1,30 @@
+$num_workers=2
+
+Vagrant.require_version ">= 1.8.6"
+Vagrant.configure("2") do |config|
+
+ config.vm.box = "ceph/ubuntu-xenial"
+ config.vm.provider :libvirt do |libvirt|
+ libvirt.memory = 4096
+ libvirt.cpus = 4
+ libvirt.nested = true
+ end
+
+ config.vm.provision "shell", path: "host_setup.sh", privileged: false
+ config.vm.provision "shell", path: "kata_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: "192.168.1.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: "192.168.1.#{i+20}"
+ end
+ end
+
+end
diff --git a/src/vagrant/kubeadm_kata/deploy.sh b/src/vagrant/kubeadm_kata/deploy.sh
new file mode 100755
index 0000000..275356c
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/deploy.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -ex
+DIR="$(dirname `readlink -f $0`)"
+
+cd $DIR
+../cleanup.sh
+vagrant up
+vagrant ssh master -c "/vagrant/examples/nginx-app.sh"
diff --git a/src/vagrant/kubeadm_kata/examples/nginx-app.sh b/src/vagrant/kubeadm_kata/examples/nginx-app.sh
new file mode 100755
index 0000000..96d776c
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/examples/nginx-app.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+kubectl create -f /vagrant/examples/nginx-app.yaml
+kubectl get nodes
+kubectl get services
+kubectl get pods
+kubectl get rc
+sleep 180
+svcip=$(kubectl get services nginx -o json | grep clusterIP | cut -f4 -d'"')
+wget http://$svcip
diff --git a/src/vagrant/kubeadm_kata/examples/nginx-app.yaml b/src/vagrant/kubeadm_kata/examples/nginx-app.yaml
new file mode 100644
index 0000000..f80881a
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/examples/nginx-app.yaml
@@ -0,0 +1,31 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: nginx
+ labels:
+ app: nginx
+spec:
+ type: NodePort
+ ports:
+ - port: 80
+ protocol: TCP
+ name: http
+ selector:
+ app: nginx
+---
+apiVersion: v1
+kind: ReplicationController
+metadata:
+ name: nginx
+spec:
+ replicas: 2
+ template:
+ metadata:
+ labels:
+ app: nginx
+ spec:
+ containers:
+ - name: nginx
+ image: nginx
+ ports:
+ - containerPort: 80
diff --git a/src/vagrant/kubeadm_kata/host_setup.sh b/src/vagrant/kubeadm_kata/host_setup.sh
new file mode 100644
index 0000000..f9e1a76
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/host_setup.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -ex
+
+cat << EOF | sudo tee /etc/hosts
+127.0.0.1 localhost
+192.168.1.10 master
+192.168.1.21 worker1
+192.168.1.22 worker2
+192.168.1.23 worker3
+EOF
+
+sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
+sudo apt-key adv -k 58118E89F3A912897C070ADBF76221572C52609D
+cat << EOF | sudo tee /etc/apt/sources.list.d/docker.list
+deb [arch=amd64] https://apt.dockerproject.org/repo ubuntu-xenial main
+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 --allow-downgrades docker-engine=1.12.6-0~ubuntu-xenial kubelet=1.7.0-00 kubeadm=1.7.0-00 kubectl=1.7.0-00 kubernetes-cni=0.5.1-00
+
+sudo systemctl stop kubelet
+sudo rm -rf /var/lib/kubelet
+sudo systemctl daemon-reload
+sudo systemctl start kubelet
diff --git a/src/vagrant/kubeadm_kata/kata_setup.sh b/src/vagrant/kubeadm_kata/kata_setup.sh
new file mode 100644
index 0000000..9682f3a
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/kata_setup.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -ex
+
+wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
+sudo tar -xvf go1.8.3.linux-amd64.tar.gz -C /usr/local/
+mkdir -p $HOME/go/src
+export GOPATH=$HOME/go
+export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
+
+go get github.com/clearcontainers/tests
+cd $GOPATH/src/github.com/clearcontainers/tests/.ci
+
+echo "Install dependencies"
+bash -f ./setup_env_ubuntu.sh
+
+echo "Install shim"
+bash -f ./install_shim.sh
+
+echo "Install proxy"
+bash -f ./install_proxy.sh
+
+echo "Install runtime"
+bash -f ./install_runtime.sh
+
+echo "Install CRI-O"
+bash -f ./install_crio.sh
+
+sudo systemctl stop kubelet
+echo "Modify kubelet systemd configuration to use CRI-O"
+k8s_systemd_file="/etc/systemd/system/kubelet.service.d/10-kubeadm.conf"
+sudo sed -i '/KUBELET_AUTHZ_ARGS/a Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=/var/run/crio.sock --runtime-request-timeout=30m"' "$k8s_systemd_file"
+sudo systemctl daemon-reload
+sudo systemctl start kubelet
diff --git a/src/vagrant/kubeadm_kata/master_setup.sh b/src/vagrant/kubeadm_kata/master_setup.sh
new file mode 100644
index 0000000..3748f01
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/master_setup.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -ex
+
+sudo kubeadm init --apiserver-advertise-address=192.168.1.10 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.32.0.0/12 --token 8c5adc.1cec8dbf339093f0
+mkdir ~/.kube
+sudo cp /etc/kubernetes/admin.conf .kube/config
+sudo chown $(id -u):$(id -g) ~/.kube/config
+
+kubectl apply -f http://git.io/weave-kube-1.6
+
+r=1
+while [ "$r" -ne "0" ]
+do
+ sleep 30
+ r=$(kubectl get pods -n kube-system | grep weave-net | grep -v Run | wc -l)
+done
+
+sudo systemctl restart crio
diff --git a/src/vagrant/kubeadm_kata/worker_setup.sh b/src/vagrant/kubeadm_kata/worker_setup.sh
new file mode 100644
index 0000000..a6e4bf4
--- /dev/null
+++ b/src/vagrant/kubeadm_kata/worker_setup.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+set -ex
+sudo kubeadm join --token 8c5adc.1cec8dbf339093f0 192.168.1.10:6443 || true
+
+sudo apt-get install -y putty-tools
+mkdir ~/.kube
+r=1
+while [ "$r" -ne "0" ]
+do
+ sleep 30
+ echo "y\n" | plink -ssh -pw vagrant vagrant@master "cat ~/.kube/config" > ~/.kube/config || true
+ r=$(kubectl get pods -n kube-system | grep weave-net | grep -v Run | wc -l)
+done
+
+sudo systemctl restart crio