Cara Install Kubernetes dengan Containerd Pada Ubuntu 20.04

Saat membangun infrastruktur cloud, sangat penting untuk selalu mengutamakan skalabilitas, otomatisasi, dan ketersediaan.

Di masa lalu, sangat sulit untuk menegakkan standar skalabilitas, otomatisasi, dan ketersediaan yang tinggi di cloud. Hanya perusahaan IT teratas yang bisa melakukannya. Namun berkat Kubernetes, siapa pun dapat membangun infrastruktur cloud mandiri, pemulihan otomatis, dan penskalaan otomatis.

Yang diperlukan hanyalah beberapa file YAML.

Pada artikel ini, kita akan membahas semua langkah yang Anda perlukan untuk menyiapkan kluster Kubernetes di dua mesin Ubuntu 20.04.

Ubah Hostname

Ubah nama hostname pada masing masing mesin, di sini master dan worker

Server master

sudo hostnamectl set-hostname master

Server worker

sudo hostnamectl set-hostname worker

Install Containerd

Muat br_netfilter modul yang diperlukan untuk jaringan.

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

Agar dapat iptables melihat lalu lintas yang di Bridge, seperti yang diwajibkan oleh Kubernetes, kita perlu menyetel nilai bidang tertentu ke 1.

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system
sudo swapoff -a

Pastikan package Uptodate

Jalankan semua perintah berikut baik di server master maupun server worker

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Install GPG Key

Dapatkan apt-key dan kemudian tambahkan repositori dari mana kita akan menginstal containerd.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Menambahkan repositori

echo \ 
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Perbarui dan instal paket containerd.

sudo apt-get update && sudo apt-get install containerd.io

Siapkan file konfigurasi default.

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

Modifikasi konfigurasi

Selanjutnya, kita perlu memodifikasi file konfigurasi containerd. Untuk melakukannya, edit file berikut:

sudo nano /etc/containerd/config.toml

kemudian cari [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] pastikan SystemdCgroup = true lalu simpan, Terakhir, untuk menerapkan perubahan ini, kita perlu memulai ulang containerd.

sudo systemctl restart containerd

Untuk memeriksa apakah containerd benar-benar berjalan, gunakan perintah ini:

ps -ef | grep containerd

Harapkan output yang mirip dengan ini:

root 63087 1 0 13:16 ? 00:00:00 /usr/bin/containerd

Install Kubernetes

Setelah container runtime terinstal dan terkonfigurasi, sekarang waktunya menginstal Kubernetes.

Tambahkan Key repositori dan repositori

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg \
https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Perbaharui System

Perbarui sistem Anda dan instal 3 modul Kubernetes.

sudo apt-get update --allow-unauthenticated --allow-insecure-repositories
sudo apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
sudo apt-mark hold kubelet kubeadm kubectl

Initialisasi pada server Master

Jalankan perintah init

sudo kubeadm init 
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Perintah di atas akan menghasilkan token yang nantinya akan di gunakan di server Worker untuk melakukan system join. simpan token tersebut di tempat yang aman jangan sampai hilang, apabila hilang dapat melakukan reset menggunakan perintah ini:

sudo kubeadm reset
sudo kubeadm init --config ~/kubeadm-config.yaml
kubeadm token create --print-join-command

install calico CNI (Flannel as networking, Calico as Network Policy)

curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml -O
kubectl apply -f calico.yaml

Cek apakah node master sudah ready atau tidak, pastikan semua service berstatus running 1/1

kubectl get pods -n kube-system

Initialisasi pada server Worker

sudo kubeadm join <master ip>:6443 --token <token> \
--discovery-token-ca-cert-hash <hash>

Selesai


Perintah-perintah dasar kubernetes

Perintah untuk melihat list

kubectl get nodes/pod/pv/pvc/netpol/ns/hpa

Perintah untuk edit service

kubectl edit nodes/pod/pv/pvc/netpol <name>

Apabila pod dalam suatu namespace tambahkan -n <namespace>

kubectl get pod -n <namespace> atau kubectl get pod --all-namespaces

Perintah untuk melihat detail service

kubectl describe nodes/pod/pv/pvc/netpol <name>