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 :

  1. 2 Virtual Machine.
  2. 4 GB Ram .
  3. 2 VCPU.

B. Komponen yang diperlukan :

  1. Ubuntu Server 21.04 LTS.
  2. 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 allNodemenandakan instalasi di setiap node.

  1. 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

Versi Docker

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

Silahkan pilih untuk menggunakan containerd atau docker sebagai runtime. Di rekomendasikan menggunakan containerd.

4. Konfigurasi Docker (Dilakukan hanya untuk Docker sebagai Runtime, jika containerd silahkan lanjut)

Konfigurasi Docker agar masuk kedalam systemd cgroup driver, hal ini sebagai syarat dari Instalasi Kubernetes.

$ sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
$ 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 kubectl

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
$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16 
atau 
$ sudo kubeadm init

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 :

$ sudo nano /etc/kubernetes/manifests/kube-scheduler.yaml
$ sudo nano /etc/kubernetes/manifests/kube-controller-manager.yaml
spec > containers > command hapus bagian — port=0
$ sudo systemctl restart kubelet.service

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/

Last modified: December 3, 2021

Author

Comments

Write a Reply or Comment

Your email address will not be published.