Skip to main content

Command Palette

Search for a command to run...

Instalasi Kubernetes dengan Containerd pada Ubuntu 20.04

Updated
โ€ข3 min read
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.

ServerSpesifikasiPrivate IP
master30GB Disk, 4GB RAM, 4vcpu10.10.51.240
worker140GB Disk, 4GB RAM, 4vcpu10.10.51.241
worker240GB Disk, 4GB RAM, 4vcpu10.10.51.242
worker340GB Disk, 4GB RAM, 4vcpu10.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.

  1. 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
     > EOF
    
  2. Menambahkan 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
     > EOF
    
  3. Melakukan 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 update
    
  4. Melakukan 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 true
    
  5. Selanjutnya, 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-00
    
  6. Kemudian, 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.

  1. 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:97dbc7de0fe3c4ecd243a06591a92add93b30c3d8b2bd2bad4061a0740d045e5
    
  2. Kemudian lakukan perintah dibawah ini pada master node supaya dapat mengakses Kubernetes cluster. Pada gambar dibawah, penulis menggunakan perintah kubectl get no untuk 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
    

  3. 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.sh
    
  4. Voila! Kubernetes Cluster berhasil dibangun dan siap digunakan :)