Pada artikel ini akan dijelaskan bagaimana caranya melakukan instalasi Kubernetes (K8s) pada master dan worker server.
Persiapan
Spesifikasi minimum Master / Controller server:
Ubuntu Server
2 core CPU
4 GB RAM
static IP
NO SWAP
Spesifikasi minimum Worker node/server :
Ubuntu Server
1 core CPU
2 GB RAM
static IP
NO SWAP
Instalasi container runtime (containerd)
Jalankan perintah ini di master dan worker.
1. install containerd
$ sudo apt install containerd
2. Cek apakah containerd daemon berjalan di background
$ systemctl status containerd
3. Membuat directory/folder untuk menyimpan file konfigurasi containerd
$ sudo mkdir /etc/containerd
4. Generate konfigurasi default containerd
$ containerd config default | sudo tee /etc/containerd/config.toml
Hasil :
5. Dikarenakan Ubuntu Server menggunakan Systemd sebagai init sistem, maka kita harus mendeklarasikan dalam file konfigurasi agar containerd dapat berjalan dengan baik.
$ sudo vim /etc/containerd/config.toml
Cari baris yang berisi seperti berikut :
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]Ubah nilai/value dari SystemdCgroup dari false ke true. Simpan perubahan
Disable Swap
Jalankan perintah ini pada master dan worker node
Untuk alasan teknis, Kubernetes tidak menginginkan SWAP untuk aktif. Maka dari itu apabila kita memiliki partisi SWAP, kita harus menonaktifkan partisi tersebut. Apabila kita tidak menonaktifkan SWAP, maka Kubernetes akan error saat berjalan.
1. Disable swap sementara
$ sudo swapoff -a
Namun swap hanya akan mati sementara. Apabila sistem reboot, maka SWAP akan kembali aktif. Maka dari itu, kita harus mematikan swap secara permanen melalui file /etc/fstab2. Edit file /etc/fstab
Buka file /etc/fstab dengan teks editor pilihan kalian seperti contoh ini :
$ sudo vim /etc/fstab
lalu comment baris dimana berisi "/swap.img...dst." seperti berikut dengan memberikan tanda # didepannya.
Setelah ini, maka swap tidak akan aktif bahkan setelah reboot.
Enable Briding
Jalankan perintah ini pada master dan worker node
Agar setiap nodes dalam jaringan Kubernetes dapat berkomunikasi, kita harus mengaktifkan parameter ipv4 forwarding pada kernel.
1. Edit file
$ sudo vim /etc/sysctl.conf
2. Cari baris yang berisi
#net.ipv4.ip_forward=1
kemudian hapus tanda "#" didepan baris tersebut
simpan dan keluar dari file.
Setelah mengaktifkan kernel parameter untuk ipv4 forwarding, kita harus mengaktifkan kernel module yaitu "br_netfilter". Module ini berguna untuk mendukung fitur keamanan pada saat bridging agar kita bisa menetapkan firewall, packet filtering, connection tracking, NAT, dan iptables integration pada jaringan.
1. Buat sebuah file baru di /etc/modules-load.d/ dengan nama k8s.conf
$ sudo vim /etc/modules-load.d/k8s.conf
2. File tersebut harusnya kosong pada awalnya.
3. Masukkan baris berikut
br_netfilter
4. simpan kemudian reboot
Install Kubernetes
Jalankan pada master dan worker node
1. Download Google Cloud public signing key
$ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
2. Tambahkan Kubernetes apt repository
$ echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
3. Update repo kemudian install kubectl kubeadm kubelet
$ sudo apt-get update
$ sudo apt-get install -y kubectl kubeadm kubelet
Initialize Pod Network
Kubernetes akan membuat jaringan yang dimanage sendiri secara internal dan memberikan role kepada salah satu node untuk menjadi master node. Dalam Kubernetes, node yang bertugas untuk mengatur disebut "control-plane-endpoint" dan didefinisikan menggunakan ip.
Jalankan perintah dibawah ini pada node yang akan digunakan sebagai master node.
1. Inisialisasi pod
$ sudo kubeadm init --control-plane-endpoint=<ctl-ip> --node-name <ctrl-hostname> --pod-network-cidr=10.244.0.0/16
Sesuaikan <ctrl-ip> dengan ip yang dimiliki oleh master node dan <ctrl-hostname> dengan hostname master node.
cek hostname dengan perintah berikut
$ cat /etc/hostname
2. Persiapan clustering
Kubernetes butuh directory untuk menyimpan konfigurasinya pada $HOME directory.
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. Jalankan perintah ini untuk melihat pods yang berjalan
$ kubectl get pods --all-namespaces
Akan terlihat 2 pods paling atas yaitu "coredns" dengan status pending. Ini dikarenakan Kubernetes perlu network managemen pada layer 3 untuk menyewakan subnet pada host lain. Pada artikel ini kita akan menggunakan Flannel yang di desain khusus untuk kubernetes.
Membuat Overlay Network
Jalankan perintah dibawah ini pada master node
1. Install flannel overlay network
$ kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
2. Cek kembali podsnya
$ kubectl get pods --all-namespaces
Biasanya membutuhkan beberapa saat agar coredns dan flannel bisa mulai berjalan, jadi harap sabar menunggu dan jalankan perintah diatas hinggal coredns dan flannel ada dalam status "Running"
3. Menghubungkan nodes ke master
Jalankan perintah ini pada master node.
$ kubeadm token create --print-join-command
Output akan seperti diatas, token bersifat rahasia dan tidak boleh diketahui oleh pihak lain.
Copy output diatas kemudian paste ke worker node dengan menambahkan "sudo" sebelumnya.
$ sudo kubeadm join -----
Untuk mengetahui apakah semua nodes sudah terhubung, jalankan perintah berikut pada master node.
$ kubectl get nodes
Apabila status sudah "Ready" maka nodes siap untuk digunakan.
Sekian dan terima kasih.
Ucapan terima kasih kepada :



















Komentar
Posting Komentar