Instalasi Kubernetes Cluster Baremetal
Halo teman teman, kembali lagi bersama saya, Gilang. Kali ini saya ingin membahas tentang Kubernetes atau yang sering disebut K8s, K8s ini digunakan sebagai alat untuk menjaga performa suatu aplikasi pada cloud (High Availabillity) karena bisa meng-orkes setiap container yang berjalan. Seperti apa instalasinya? Mari kita langsung menuju ke proses instalasinya.
Skema Environment untuk Instalasi:
Gambar diatas adalah gambaran environment yang digunakan.
INSTALASI KUBERNETES
A. Minimum system requirements :
- 2 Virtual Machine.
- 4 GB Ram .
- 2 VCPU.
B. Komponen yang diperlukan :
- Ubuntu Server 21.04 LTS.
- Putty.
C. Instalasi:
Pada dokumentasi kali ini, kubernetes dinstall dengan Ubuntu Server 21.04. Kubernetes kali ini dengan 1 Worker dan 1 Master. Disarankan untuk memperhatikan hostname pada CLI, karena itu menandadakan paket paket atau syntax yang akan dijalankan pada node yang sesuai dengan hostname nya. Adapaun hostname allNode menandakan instalasi di setiap node.
- Edit Hostname
Edit hostname masing masing node sesuai role nya.
$ hostnamectl set-hostname master // lakukan pada node master$ hostnamectl set-hostname worker // lakukan pada node worker
2. Edit Hosts File
Lakukan pada kedua node (Master & Worker) . $ nano /etc/hosts
Tambahkan IP private Node sebelah (jika pada node master maka tambahkan ip node worker. Begitupun sebaliknya). Setelah itu tes ping dengan hostname yang telah kita tentukan pada file hosts.
Lalu, lakukan cara diatas pada node Master:
3. Install Container Runtime
Lakukan pada setiap Node (Master & Worker).
$ apt update$ apt install -y docker.io$ systemctl status docker.service
Versi Containerd :
$ sudo apt-get install containerd -y
$ sudo mkdir -p /etc/containerd
$ sudo su -
$ containerd config default > /etc/containerd/config.toml
4. Konfigurasi Docker
Dilakukan hanya untuk Docker sebagai runtime, jika menggunakan containerd skip cara ini.
Konfigurasi Docker agar masuk kedalam systemd cgroup driver, hal ini sebagai syarat dari Instalasi Kubernetes.
$ sudo mkdir /etc/docker
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
5. Matikan Swap
Matikan swap pada ubuntu sebagai syarat instalasi Kubernetes.
$ nano /etc/fstab$ swapoff -a
6. Aktifkan IP Forwarding
$ nano /etc/sysctl.conf$ sysctl -p
7. Instalasi Kubernetes
Setelah bumbu bumbu instalasi (diatas) sudah ter-eksekusi sekarang saatnya instalasi kubernetes.
$ 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
$ apt install -y kubelet kubeadm kubectlJika ingin spesifikasi versi bisa menggunakan :
$ apt install -y kubelet=1.21.0-00 kubectl=1.21.0-00 kubeadm=1.21.0-00
Khusus pengguna containerd, silahkan define pada kubeadm_flags:
$ nano /var/lib/kubelet/kubeadm-flags.env
Isi dengan :
KUBELET_KUBEADM_ARGS=” — container-runtime=remote — container-runtime-endpoint=/run/containerd/containerd.sock”
8. Instalasi Cluster Baru
$ kubeadm config images pull$ kubeadm init --pod-network-cidr=192.168.0.0/16
Setelah terinisialisasi, akan muncul seperti ini:
Lalu Copy token untuk kebutuhan join cluster, jika tidak sempat token bisa diprint ulang dengan syntax $ kubeadm token create — print-join-command
Setelah itu Lakukan konfigurasi rekomendasi dari K8s:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ export KUBECONFIG=/etc/kubernetes/admin.conf
9. Join Cluster
$ kubeadm token create --print-join-command
Copy token, paste pada Node worker.
Cek Nodes yang sudah terhubung ke cluster.
$ kubectl get nodes
10. Apply add-on Network Calico
Node yang sudah join berpotensi untuk tidak bisa saling terhubung karena belum ada add-on untuk networkingnya, disini kami menggunakan Calico sebagai add-on networkingnya.
$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml$ kubectl get nodes
Cek status komponen, pastikan semua ber-status Health.
$ kubectl get cs
Jika status Unhealthy, pergi ke :
$ sed -i 's|- --port=0|#- --port=0|' /etc/kubernetes/manifests/kube-scheduler.yaml
$ sed -i 's|- --port=0|#- --port=0|' /etc/kubernetes/manifests/kube-controller-manager.yaml
$ systemctl restart kubelet
Jika kalian ingin explore explore tentang K8s di baremetal, kalian bisa kunjungi git saya dan coba bermain dengan saya : https://github.com/gilangvperdana/K8s-BareMetal-Ubuntu21.04
Sekian dari saya, tentunya tutorial ini sudah saya buktikan sendiri dan berhasil. Terima kasih semua.
Sumber: https://kubernetes.io/id/
MiniKube
Jika kalian tidak memiliki resource yang cukup, ada tools virtualisasi Kubernetes bernama MiniKube . Langsung saja ke sesi instalasi.
Environment :
- 1x Ubuntu 21.04
- NAT Network & Host Only Adapter
$ apt install -y docker.io
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
$ sudo usermod -aG docker $USER && newgrp docker
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
$ cd /home/<user>
$ sudo cp -r .kube/ .minikube. /root/
$ minikube start --driver=docker
Preview Minikube :
K3s
Satu lagi tools bernama K3s yaitu tools K8s ringan alternatif selain Minikube, kalian bisa mecobanya dengan :
Environment :
- 1x Ubuntu 21.04
- NAT Network & Host Only Adapter
$ curl -sfL https://get.k3s.io | sh -
$ k3s kubectl get node
Sumber : https://k3s.io/ && https://github.com/k3s-io/k3s
Kube Spray
Satu lagi tools bernama Kube Spray yang memanfaatkan automasi dari tools Ansible. Kalian bisa coba gunakan dengan berpacu pada link ini.
Template — Template yang ada :
https://github.com/gilangvperdana/K8s-PlayGround
Semua yang tertulis disini, tentunya sudah dicoba dan berhasil oleh penulis.