Kubernetes adalah salah satu teknologi paling menarik dalam dunia pengembangan dan pengelolaan aplikasi saat ini. Dengan Kubernetes, Anda dapat mengelola berbagai aplikasi secara lebih efisien dan dalam lingkungan komputasi modern. Dalam artikel ini, kami akan berbagi cara install cara install kubernetes cluster di Ubuntu 22.04 pada layanan VPS KVM.
Apa itu Kubernetes cluster?
Kubernetes cluster adalah kumpulan komputer atau server yang saling terhubung untuk menjalankan aplikasi dalam sebuah container. Kubernetes cluster memastikan bahwa semua aplikasi yang berjalan dapat didistribusikan dan dikelola dengan baik.
Biasanya dalam satu cluster, terdiri dari satu computer atau server utama yang disebut dengan “master” dan beberapa komputer yang berjalan sebagai “worker”. Komputer master berfungsi untuk mengatur semua computer worker agar dapat berjalan sesuai kebutuhan.
Menariknya, dengan system cluster ini Anda dapat menjalankan aplikasi secara lebih efisien, serta lebih mudah dikelola, seolah-olah semua computer atau server berada adlam satu sistem yang terintegrasi.
Cara Install Kubernetes Cluster di Ubuntu
Dalam artikel ini, kami akan berbagi cara install Kubernetes cluster di VPS Ubuntu 22.04. Untuk mulai melakukan instalasi, Anda perlu mempersiapkan beberapa hal terlebih dahulu. Berikut step by step yang perlu Anda lakukan.
Step 1. Persiapan Sistem
Pastikan VPS KVM Anda telah memenuhi systems requirement berikut:
- 2 CPU
- 2 GB RAM
Sistem requirement tersebut berlaku untuk masing-masing node.
Pada panduan ini, kami menggunakan 3 VPS KVM yang detailnya kami namakan sebagai berikut:
Master : 203.175.8.222 : master.jurnalrw.my.id
Worker : 203.175.8.101 : worker1.jurnalrw.my.id
Worker : 203.175.8.102 : worker2.jurnalrw.my.id
Step 2. Install Docker service
Sebelum melakukan installasi docker, pastikan telah membuat file hosts pada masing masing node (/etc/hosts) yang mengarah ke ip tiap vos server.
# nano /etc/hosts
203.175.8.222 : master.jurnalrw.my.id
203.175.8.101 : worker1.jurnalrw.my.id
203.175.8.102 : worker2.jurnalrw.my.id
Lakukan konfigurasi hostname VPS sesuai dengan hostname/IP yang telah diatur sebelumya. Jalankan pada tiap VPS command berikut ini:
# hostnamectl set-hostname master.jurnalrw.my.id
Lanjutkan pada proses installasi package yang dibutuhkan.
# sudo apt update
# sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Step 3. Install Docker
Lakukan instalasi docket dengan perintah sebagai berikut:
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
# sudo apt update
# sudo apt install docker-ce docker-ce-cli containerd.io
# sudo groupadd docker
# sudo usermod -aG docker $USER
Untuk memastikan apakah docker telah terinstall, periksa menggunakan perintah docker version.
Apabila docker telah terinstall, langkah selanjutnya melakukan disable swap pada masing masing vps dan mengizinkan forward ip dari sysctl.
# swapoff -a
# sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl --system
Step 4. Install Kubernetes
Setelah melakukan installasi Docker dan persiapan sistem cluster, kita akan melakukan installasi Kubernetes cluster pada semua node.
# apt install -y apt-transport-https curl
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
# apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
# apt update && sudo apt install -y kubelet kubeadm kubectl kubernetes-cni && systemctl enable kubelet
Jalankan Initialize kubernetes pada node Master. Jika sudah selesai dan tidak terkendala, selanjutnya akan terdapat perintah join cluster untuk node workernya.
<output> ...
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons
Kemudian Anda dapat menambahkan node worker dengan menjalankan perintah berikut pada masing-masing node sebagai root:
kubeadm join 203.175.8.222:6443 --token ryu2ba91.ao5vt6g4k6814xsw \
--discovery-token-ca-cert-hash sha256:gyg66js12b6f686gg0c1ef6b1a4cf085f46e31ac20be575
Buat file Konfigurasi Kubernetes pada node master.
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
Untuk kebutuhan network, Install pod calico pada node masternya dengan perintah sebagai berikut:
kubectl apply -f https://docs.projectcalico.org/v3.23/manifests/calico.yaml
Tambahkan worker ke dalam cluster pada semua node worker. Command ini akan berjalan ketika selesai install node.
kubeadm join 203.175.8.222:6443 --token r8ba91.ao5vt6g4k6814xsw \
--discovery-token-ca-cert-hash sha256:b98397015ed01dc8402b6fae86b40cb0150c1ef6b1a4cf085f46e31ac20be575
... <output> ...
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection deta
Langkah selanjutnya, pastikan sistem berjalan dengan normal dengan memeriksa status health dan info components
kubectl get componentstatus
... <output> ...
Warning: v1 ComponentStatus is deprecated in v2.78+
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true","reason":""}
kubectl get pods --all-namespaces
... <output> ...
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-6766647d54-7ts48 1/1 Running 0 30m
kube-system calico-node-tzdm2 1/1 Running 0 17m
kube-system calico-node-wkpl4 1/1 Running 0 17m
kube-system calico-node-wn9n6 1/1 Running 0 30m
kube-system coredns-9974cb6d-6t2jx 1/1 Running 0 56m
kube-system coredns-6d4b774853d-zx999 1/1 Running 0 56m
kube-system etcd-master.jurnalrw.my.id 1/1 Running 0 57m
kube-system kube-apiserver-master.jurnalrw.my.id 1/1 Running 0 57m
Pengujian
Pada proses pengujian, kita akan melakukan installasi Nginx pada semua node melalui master, dengan perintah sebagai berikut:
kubectl create deployment nginx --image=nginx
... <output> ...
deployment.apps/nginx created
Expose service nginx agar dapat diakses dari node luar/jaringan luar.
kubectl create service nodeport nginx --tcp=80:80
Apabila service telah ter-expose dan dapat diakses, langkah selanjutnya adalah percobaan melakukan scale-up/down pada container. Pada panduan ini, kami mencoba membuat 4 replica nginx.
kubectl scale --replicas=4 deployment nginx
... <output> ...
deployment.apps/nginx scaled
Setelah melakukan scale Kubernetes cluster, kita periksa dengan menjalankan command kubectl untuk memeriksa apakah container berhasil dibuat.
kubectl get pods -o wide
.. <output> ...
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-8f458dc5b-7jlzp 1/1 Running 0 11m 10.100.17.194 worker1.jurnalrw.my.id <none> <none>
nginx-67258dc5b-gwbdj 1/1 Running 0 23m 10.100.17.193 worker1.jurnalrw.my.id <none> <none>
nginx-673f458dc5b-jn7t2 1/1 Running 0 11m 10.100.91.195 worker2.jurnalrw.my.id <none> <none>
nginx-672fffc5b-mc9v8 1/1 Running 0 11m 10.100.91.194 worker2.jurnalrw.my.id <none> <none>
Sampai tahap ini, proses install Kubernetes cluster di VPS Ubuntu 22.04 telah selesai. Selanjutnya, Anda dapat melakukan scale sesuai kebutuhan dan image yang ingin dipasang pada server.
Demikian artikel kami tentang apa itu Kubernetes cluster dan bagaimana cara install Kubernetes cluster di Ubuntu 22.04 pada layanan VPS KVM. Semoga bermanfaat.