Langsung ke konten utama

Setup Kubernetes Cluster dengan Mudah

 

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/fstab

2. 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 :

indocenter.co.id

radnet-digital.id

 

Komentar

Postingan populer dari blog ini

Kegiatan Magang di PT Radnet Digital Indonesia

Disini saya akan berbagi mengenai aktivitas magang saya di PT. Radnet Digital Indonesia. Kegiatan magang saya meliputi beberapa poin berikut: Dualboot Ubuntu Instalasi Proxmox Setup server untuk Nginx, Cpanel, dll Penguji UKK SMK Pelatihan guru SMK Telkom Sidoarjo Pembuatan Python Telegram Bot Dualboot Ubuntu Menggunakan sistem operasi berbasis GNU/Linux seperti Ubuntu merupakan kebutuhan dasar untuk membiasakan diri dengan sistem operasi tersebut. Pembiasaan ini dibutuhkan karena 99.9% environment server berbasis GNU/Linux seperti Ubuntu, AlmaLinux, Rocky Linux, dkk. Kami juga diharuskan membiasakan diri dengan terminal. Ini dikarenakan untuk kebutuhan server kami akan selalu menghadapi terminal dan bukan Desktop Environment. Instalasi Proxmox PT. Radnet Digital Indonesia menggunakan Proxmox sebagai media virtualisasi untuk melakukan deployment. Penggunaan Proxmox ini juga memudahkan kami dalam melakukan perawatan server seperti instalasi, backup, clonning, dsb. Proxmox juga merupaka...

Install Proxmox V7.3.1

  Proxmox adalah sistem operasi yang dikhususkan untuk virtualisasi. Proxmox berbasis Debian GNU/Linux sehingga memiliki paket yang stabil dan cocok digunakan sebagai virtualisasi server jangka panjang. Saya anggap disini anda sudah paham bagaimana cara melakukan flash ISO ke USB dan melakukan booting. Langkah-langkah 1. Menyepakati EULA 2. Memilih Disk yang akan digunakan untuk diinstall Proxmox dengan LVM 3. Mengatur Negara, Zona Waktu, dan Layout Keyboard 4. Mengatur Password untuk pengguna "root" dan email untuk notifikasi error. 5. Mengatur nama perangkat/domain/hostname, alamat IP untuk server, gateway, serta DNS Server. Bila tidak diatur maka akan menggunakan IP hasil DHCP pada saat boot memasuki Live ISO. 6. Tampilan ringkasan konfigurasi. 7. Proses instalasi 8.Instalasi Selesai 9. Lakukan reboot lalu cabut usb. 10. GRUB boot option 11.Login Prompt 12. Setelah itu kita bisa membuka web browser di pc lain dan memasukkan alamat IP yang tertera beserta portnya. Jangan lu...