Pada tulisan saya sebelumnya saya telah membahas cara instalasi kubernetes dengan mudah, dengan menggunakan minikube. Bagi yang belum baca dapat melihat tutorial saya sebelumnya, dengan mengklik ini. Adapun pada tutorial sebelumnya saya menggunakan minikube namun pada tulisan kali ini saya menggunakan kubeadm. Perbedaan mendasar ada pada jumlah server yang akan digunakan, di minikube cukup menggunakan satu server. Di kubeadm dapat dibuat menggunakan 2 atau lebih server, yang nantinya akan saling terhubung sehingga membentuk satu buah cluster.
Pada tutorial kali ini saya menggunakan 3 buah VM dimana semua akan menggunakan Ubuntu 16.04 LTS. Dengan spesifikasi sebegai berikut:
VM Master Kubernetes
- Sistem Operasi Ubuntu 16.04 LTS
- 2 GB Ram
- 2 vCPU
- 30 GB HDD
- IP Address = 192.168.137.2
- Hostname = master-kubernetes
VM Node1 Kubernetes
- Sistem Operasi Ubuntu 16.04 LTS
- 2 GB Ram
- 2 vCPU
- 30 GB HDD
- IP Address = 192.168.137.3
- Hostname = node1-kubernetes
VM Node2 Kubernetes
- Sistem Operasi Ubuntu 16.04 LTS
- 2 GB Ram
- 2 vCPU
- 30 GB HDD
- IP Address = 192.168.137.4
- Hostname = node2-kubernetes
Dimana semua server terkoneksi internet dan saling terkomunikasi.
Instalasi Docker
Matikan swap semua server baik master-kubernetes, node1-kubernetes, dan node2-kubernetes. Untuk perintahnya sebagai berikut:
# swapoff -a
Masuk pada konfigurasi /etc/fstab.
# nano /etc/fstab
Lalu beri tanda pagar pada partisi swap.
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # # / was on /dev/sda1 during installation UUID=ca94926d-1582-4229-b72c-58b89d101d91 / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation #UUID=a6893c7d-4669-42a6-a16d-654962fdb8ab none swap sw 0 0 Lakukan perintah update pada setiap server
# apt update
Instal paket untuk memungkinkan apt menggunakan repositori melalui HTTPS:
# apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
Tambahkan kunci GPG resmi Docker:
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Tambahkan repository docker pada setiap server.
# add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
Lakukan perintah update pada setiap server, agar repository yang telah ditambahkan sebelumnya dapat terbaca oleh sistem.
# apt-get update
Install docker pada setiap server. Untuk docker nya sendiri saya menggunakan versi yang direkomendasikan oleh pihak Kubernetesnya, dan tidak menggunakan docker versi terbaru. Untuk detailnya dapat dibaca pada tautan berikut ini. atau bisa membaca pada tangkapan layar dibawah.
Disini saya menggunakan versi docker 17.03.3, untuk dapat menginstall versi docker tersebut cukup jalankan perintah berikut:
# apt-get install docker-ce=17.03.3~ce-0~ubuntu-xenial
Nb: Jika hendak meinstall versi docker lain, dapat mengecek penulisan versinya. Untuk perintahnya dapat menggunakan perintah berikut:
# apt-cache madison docker-ce
Cek pada setiap server apakah untuk versi docker sudah sesuai dengan versi yang telah ditentukan sebelumnya. Untuk perintah nya menggunakan perintah berikut:
docker version
Berikut output yang dihasilkan.
# docker version Client: Version: 17.03.3-ce API version: 1.27 Go version: go1.7.5 Git commit: e19b718 Built: Thu Aug 30 01:04:51 2018 OS/Arch: linux/amd64 Server: Version: 17.03.3-ce API version: 1.27 (minimum version 1.12) Go version: go1.7.5 Git commit: e19b718 Built: Thu Aug 30 01:04:51 2018 OS/Arch: linux/amd64 Experimental: false dwinar@master-kubernetes:~$
Instalasi kubeadm, kubelet, dan kubectl
Sebelum menginstall kubeadm, kubelet dan kubectl, tambahkan terlebih dahulu repositorynya. Untuk perintahnya sebagai berikut:
# apt-get update && sudo apt-get install -y apt-transport-https curl # curl -s https://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 https://apt.kubernetes.io/ kubernetes-xenial main EOF
Lakukan perintah update agar repository yang telah ditambah sebelumnya dapat terbaca oleh sistem.
# apt-get update
Install paket kubelet, kubeadm, dan kubectl. Untuk perintahnya sebagai berikut:
# apt-get install -y kubelet kubeadm kubectl
Hold paket kubelet, kubeadm, dan kubectl agar tidak terupdate secara otomatis.
# apt-mark hold kubelet kubeadm kubectl
Instalasi Network K8S (Flanel)
Agar antara pods dapat saling berkomunikasi, perlu diinstall module Network. Disini saya menggunakan Flanel. Jika hendak menggunakan module yang lain, dapat melihat pada tautan berikut ini.
Pada cluster nodes master, lakukan perintah berikut.
# kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.137.2
Maka akan muncul hasil berikut:
Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.137.2:6443 --token a4dgso.laa5fro4mfnir0z8 \ --discovery-token-ca-cert-hash sha256:9622bcd931e220bc948168dd569d29e7bf3a0bf3a2e6470776b9ef3a38ad5a9c
Jalankan perintah diatas di cluster nodes master.
# mkdir -p $HOME/.kube # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # chown $(id -u):$(id -g) $HOME/.kube/config # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
Pada cluster server nodes join pada cluster server nodes master. Untuk perintah menggunakan perintah berikut:
# kubeadm join 192.168.137.2:6443 --token a4dgso.laa5fro4mfnir0z8 \ --discovery-token-ca-cert-hash sha256:9622bcd931e220bc948168dd569d29e7bf3a0bf3a2e6470776b9ef3a38ad5a9c
Jalankan perintah “kubectl get nodes” untuk melihat semua nodes pada cluster Kubernetes. Pastikan semua nodes yang telah di join telah terbaca oleh sistem Kubernetes.
# kubectl get nodes NAME STATUS ROLES AGE VERSION master-kubernetes Ready master 7m18s v1.16.3 node1-kubernetes Ready 118s v1.16.3 node2-kubernetes Ready 68s v1.16.3
Untuk tutorial instalasi cluster Kubernetes telah selesai. Untuk tutorial cukup sampai sini. Dilanjut di tulisan lainnya, terimakasih telah membaca.