Akhir-akhir ini saya memang sedang ditugaskan untuk mengikuti kursus daring udemy. Materi yang diambil adalah k8s (k u b e r n e t e s).
K8s adalah salah satu container orchestrator buatan google. Di mana, kita bisa dengan mudah melakukan manajemen container yang dimiliki meskipun memiliki beberapa node/server.
Namun, k8s instalasinya menurut saya bagi pemula lumayan panjang. Jadi cukup merepotkan. Akhirnya saya berpikir bagaimana caranya bisa instalasi dan provisioning secara mudah dengan hanya beberapa sulap saja :D.
Caranya, kita bisa menggunakan ansible atau salt. Dalam tutorial ini, Ansible akan saya gunakan. Karena cukup mudah dan tidak perlu instalasi agent. Kodenya berupa yml file, jadi bisa dipahami juga dengan mudah.
Contoh, saya mempunyai 3 node (1 master, dan 2 node worker).
Master
Hostname: k8s-master.dhenandi.com
IP: 192.168.5.11
Worker 1
Hostname: k8s-node1.dhenandi.com
IP: 192.168.5.12
Worker 2
Hostname: k8s-node2.dhenandi.com
IP: 192.168.5.13
Saya membuat 3 buah ansible playbook
- Inisialisasi user
- Instalasi dependensi
- Provisioning K8s
Untuk kode, silakan melihat pada github repo berikut:
https://github.com/dhenandi/ansible-k8s
Sebelum melakukan instalasi dan provisioning k8s pastikan sudah:
- Konfigurasi IP Address pada tiap node
- Konfigurasi Hostname, hosts
- Konfigurasi ssh dengan user root
- Konfigurasi ssh less password
- Memasang ansible pada PC/Laptop
- Memasukkan ansible hosts pada /etc/ansible/hosts
Contoh isi /etc/hosts
127.0.0.1 localhost
192.168.5.11 k8s-master.dhenandi.com k8s-master
192.168.5.12 k8s-node1.dhenandi.com k8s-node1
192.168.5.13 k8s-node2.dhenandi.com k8s-node2
Contoh konfigurasi Hostname
hostnamectl set-hostname k8s-master.dhenandi.com
Contoh konfigurasi /etc/ansible/hosts
[master]
master ansible_host=192.168.5.11
[node]
node1 ansible_host=192.168.5.12
node2 ansible_host=192.168.5.13
Clone Git Repo
git clone git@github.com:dhenandi/ansible-k8s.git
Menjalankan Ansible Playbook untuk provisioning user
ansible-playbook 1-initialize-user.yml
Menjalankan Ansible Playbook untuk instalasi dependensi seperti docker, kubeadm, kubelet, kubectl
ansible-playbook 2-install-dependencies.yml
Menjalankan Ansible Playbook untuk provisioning master node dan worker node
ansible-playbook 3-provisioning-k8s.yml
Tunggu proses hingga selesai. Kemudian cek pada master node:
dhenandi@k8s-master:~$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 8m51s v1.15.3 k8s-node1.dhenandi.com Ready <none> 8m7s v1.15.3 k8s-node2 Ready <none> 8m7s v1.15.3
Terima kasih digitalocean, beberapa script saya contek dari sini: https://www.digitalocean.com/community/tutorials/how-to-create-a-kubernetes-cluster-using-kubeadm-on-ubuntu-18-04