Instalasi Kubernetes Multi Node dengan mudah Menggunakan Ansible

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

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.