Instalasi Kubernetes dengan Containerd pada Ubuntu 20.04

1. Pendahuluan
Pada artikel ini, penulis ingin membagikan pengetahuan mengenai instalasi Kubernetes dengan runtime container menggunakan containerd. Kenapa tidak menggunakan Docker saja? karena pada Kubernetes dengan versi >1.20 sudah tidak mendukung container runtime Docker (baca), dan pada artikel ini penulis menginstall Kubernetes versi 1.26 (supaya sinkron dengan exam CKA tahun ini ๐).
Penulis menyiapkan 4 server berwujud vm untuk prepare pembuatan Kubernetes cluster, dengan 1 vm berfungsi sebagai master node dan 3 vm difungsikan sebagai worker node. Masing-masing vm yang dibuat memiliki spesifikasi dan IP address seperti pada tabel dibawah ini.
| Server | Spesifikasi | Private IP |
| master | 30GB Disk, 4GB RAM, 4vcpu | 10.10.51.240 |
| worker1 | 40GB Disk, 4GB RAM, 4vcpu | 10.10.51.241 |
| worker2 | 40GB Disk, 4GB RAM, 4vcpu | 10.10.51.242 |
| worker3 | 40GB Disk, 4GB RAM, 4vcpu | 10.10.51.243 |
Untuk spesifikasi vm yang penulis buat melebihi spefikasi minimum. Kubernetes cluster dapat dibangun dengan memliki setidaknya 1 master node dan 1 worker node. Untuk master node memiliki minimum spesifikasi sekitar 2GB RAM 2vcpu, dan worker memiliki minimum spesifikasi 1GB RAM 1vcpu.
2. Langkah-Langkah
Berikut langkah-langkah pengerjaan untuk membangun Kubernetes Cluster.
Melakukan enable kernel module netfilter dan overlay, mematikan mode swap, serta menambah setting sysctl, kemudian save dengan mengetikkan perintah
sysctl --system. Langkah ini dilakukan pada semua node.$ sudo modprobe br_netfilter $ sudo modprobe overlay $ swapoff -a $ cat <<EOF | sudo tee /etc/sysctl.d/k8s-cri.conf > net.bridge.bridge-nf-call-iptables =1 > net.ipv4.ip_forward =1 > net.bridge.bridge-nf-call-ip6tables=1 > EOFMenambahkan repositori Kubernetes. Untuk containerd pada Ubuntu sudah tersedia secara bawaan, jadi untuk saat ini tidak perlu menambahkan repositori. Langkah ini dilakukan pada semua node.
$ cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list > deb https://apt.kubernetes.io/ kubernetes-xenial main > EOFMelakukan update repositori. Langkah ini dilakukan pada semua node.
$ sudo wget https://packages.cloud.google.com/apt/doc/apt-key.gpg $ sudo mv apt-key.gpg /etc/apt/trusted.gpg.d/ $ sudo apt-get updateMelakukan instalasi dan konfigurasi containerd. Langkah ini dilakukan pada semua node.
$ sudo apt-get install containerd $ sudo mkdir -p /etc/containerd $ sudo containerd config default | sudo tee /etc/containerd/config.toml $ nano /etc/containerd/config.toml # Pada pada file config.toml, cari section:[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] # Kemudian ubah SystemdCgroup = false menjadi trueSelanjutnya, melakukan instalasi package-package Kubernetes (kubadm, kubelet, kubectl) versi 1.26. Langkah ini dilakukan pada semua node.
$ sudo apt-get install kubectl=1.26.0-00 kubeadm=1.26.0-00 kubelet=1.26.0-00Kemudian, pada master node dilakukan pembuatan cluster dengan menggunakan perintah seperti dibawah ini.
$ kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket /run/containerd/containerd.sockasd

Pada output instalasi terdapat perintah untuk worker node untuk melakukan join cluster. Salin perintah yang berkotak merah tersebut.
Kemudian eksekusi perintah yang disalin sebelumnya kepada semua worker node.
$ sudo kubeadm join 10.10.51.240:6443 --token ojns7s.vnknfgclxs8ccbxs --discovery-token-ca-cert-hash sha256:97dbc7de0fe3c4ecd243a06591a92add93b30c3d8b2bd2bad4061a0740d045e5Kemudian lakukan perintah dibawah ini pada master node supaya dapat mengakses Kubernetes cluster. Pada gambar dibawah, penulis menggunakan perintah
kubectl get nountuk melihat node-node yang berada di Kubernetes cluster, menunjukkan bahwa semua node sudah berada pada cluster.$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config $ kubectl get no #untuk melihat node pada cluster
Selanjutnya menambahkan plugin CNI untuk pod network didalam Kubernetes. Penulis menggunakan Kube-OVN untuk CNI nya.
$ wget https://raw.githubusercontent.com/kubeovn/kube-ovn/release-1.11/dist/images/install.sh $ sudo bash install.shVoila! Kubernetes Cluster berhasil dibangun dan siap digunakan :)

