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>