diff options
author | Guo Ruijing <ruijing.guo@intel.com> | 2017-12-27 15:25:18 -0500 |
---|---|---|
committer | Guo Ruijing <ruijing.guo@intel.com> | 2017-12-27 18:05:17 -0500 |
commit | 891c0a1ab78c4c2f46424fc35c0e99fe0f475c0b (patch) | |
tree | 642678e4e5da67e4df2b0c96c6b7b64a936f6f1a /src/vagrant/kubeadm_kata | |
parent | c7dbc67c97d227763943e6f1b8fbf063c6775ad8 (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/vagrant/kubeadm_kata')
-rw-r--r-- | src/vagrant/kubeadm_kata/Vagrantfile | 30 | ||||
-rwxr-xr-x | src/vagrant/kubeadm_kata/deploy.sh | 24 | ||||
-rwxr-xr-x | src/vagrant/kubeadm_kata/examples/nginx-app.sh | 25 | ||||
-rw-r--r-- | src/vagrant/kubeadm_kata/examples/nginx-app.yaml | 31 | ||||
-rw-r--r-- | src/vagrant/kubeadm_kata/host_setup.sh | 44 | ||||
-rw-r--r-- | src/vagrant/kubeadm_kata/kata_setup.sh | 49 | ||||
-rw-r--r-- | src/vagrant/kubeadm_kata/master_setup.sh | 34 | ||||
-rw-r--r-- | src/vagrant/kubeadm_kata/worker_setup.sh | 31 |
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 |