From ddaccb38f85dba6bec1fcd79b0b4cce45d92192e Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Wed, 3 May 2017 11:49:50 -0700 Subject: Add k8s installation by vagrant + kubeadm Change-Id: I4d858e1d0d6779f9f78c0a74ee032ef92d8a4eb8 Signed-off-by: Guo Ruijing --- src/vagrant/k8s_kubeadm/README.md | 23 ++++++++++++++++++ src/vagrant/k8s_kubeadm/Vagrantfile | 27 +++++++++++++++++++++ src/vagrant/k8s_kubeadm/examples/nginx-app.sh | 10 ++++++++ src/vagrant/k8s_kubeadm/examples/nginx-app.yaml | 31 +++++++++++++++++++++++++ src/vagrant/k8s_kubeadm/master_setup.sh | 30 ++++++++++++++++++++++++ src/vagrant/k8s_kubeadm/worker_setup.sh | 22 ++++++++++++++++++ 6 files changed, 143 insertions(+) create mode 100644 src/vagrant/k8s_kubeadm/README.md create mode 100644 src/vagrant/k8s_kubeadm/Vagrantfile create mode 100755 src/vagrant/k8s_kubeadm/examples/nginx-app.sh create mode 100644 src/vagrant/k8s_kubeadm/examples/nginx-app.yaml create mode 100644 src/vagrant/k8s_kubeadm/master_setup.sh create mode 100644 src/vagrant/k8s_kubeadm/worker_setup.sh diff --git a/src/vagrant/k8s_kubeadm/README.md b/src/vagrant/k8s_kubeadm/README.md new file mode 100644 index 0000000..ed5f6c6 --- /dev/null +++ b/src/vagrant/k8s_kubeadm/README.md @@ -0,0 +1,23 @@ +Vagrant +======= + +vagrant is to create kubernetes cluster using kubeadm. +kubernetes installation by kubeadm can be refered to +https://kubernetes.io/docs/getting-started-guides/kubeadm + +Vagrant Setup +------------- + +sudo apt-get install -y virtualbox +wget --no-check-certificate https://releases.hashicorp.com/vagrant/1.8.6/vagrant_1.8.6_x86_64.deb +sudo dpkg -i vagrant_1.8.6_x86_64.deb + +K8s Setup +--------- + +vagrant up + +K8s Cleanup +----------- + +vagrant destroy -f diff --git a/src/vagrant/k8s_kubeadm/Vagrantfile b/src/vagrant/k8s_kubeadm/Vagrantfile new file mode 100644 index 0000000..3baf072 --- /dev/null +++ b/src/vagrant/k8s_kubeadm/Vagrantfile @@ -0,0 +1,27 @@ +$num_workers=3 + +Vagrant.require_version ">= 1.8.6" +Vagrant.configure("2") do |config| + + config.vm.box = "bento/ubuntu-16.04" + config.vm.provider :virtualbox do |vb| + vb.customize ["modifyvm", :id, "--memory", 4096] + vb.customize ["modifyvm", :id, "--cpus", 4] + vb.customize "post-boot",["controlvm", :id, "setlinkstate1", "on"] + end + + 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/k8s_kubeadm/examples/nginx-app.sh b/src/vagrant/k8s_kubeadm/examples/nginx-app.sh new file mode 100755 index 0000000..bfd0613 --- /dev/null +++ b/src/vagrant/k8s_kubeadm/examples/nginx-app.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +kubectl create -f /vagrant/examples/nginx-app.yaml +kubectl get nodes +kubectl get services +kubectl get pods +kubectl get rc +sleep 120 +svcip=$(kubectl get services nginx -o json | grep clusterIP | cut -f4 -d'"') +wget http://$svcip diff --git a/src/vagrant/k8s_kubeadm/examples/nginx-app.yaml b/src/vagrant/k8s_kubeadm/examples/nginx-app.yaml new file mode 100644 index 0000000..f80881a --- /dev/null +++ b/src/vagrant/k8s_kubeadm/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/k8s_kubeadm/master_setup.sh b/src/vagrant/k8s_kubeadm/master_setup.sh new file mode 100644 index 0000000..31e7901 --- /dev/null +++ b/src/vagrant/k8s_kubeadm/master_setup.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -e +HOME=`pwd` + +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 + +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 http://docs.projectcalico.org/v2.1/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml diff --git a/src/vagrant/k8s_kubeadm/worker_setup.sh b/src/vagrant/k8s_kubeadm/worker_setup.sh new file mode 100644 index 0000000..d04cae1 --- /dev/null +++ b/src/vagrant/k8s_kubeadm/worker_setup.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +set -e +HOME=`pwd` + +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 + +curl -s http://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +cat <