Cara Paling Susah Setup Kubernetes Cluster pada openSUSE Leap 15.1

Posted on

Kali ini saya akan bahas yang cukup anti-mainstream yaitu cara setup kubernetes cluster pada openSUSE Leap 15.1 dengan cara yang paling susah. Sebenarnya materi ini sudah saya tulis dalam bahasa inggris yaitu How to Install Kubernetes Cluster in openSUSE Leap 15.1 (Hardest Way), namun disini saya coba translate ke  Bahasa Indonesia agar mudah dipahami.

Persiapan

Okay, yang pertama perlu disiapkan adalah sebagai berikut:

  1. Minimal punya 2 VM openSUSE Leap 15.1 (Kalau sudah pakai openSUSE Leap 15.1, bisa buat 1 VM tambahan tidak perlu 2)
  2. Minimal 2vCPU
  3. Minimal 2 GB RAM
  4. Harddisk 50GB lebih dari cukup
  5. 1 LAN masing masing VM
  6. 1 IP Private masing masing VM
  7. Jangan lupa enable Virtualization Technology di BIOS (Intel VT/AMD-V)

Download ISO openSUSE Leap 15.1

Kalau sudah siap, silakan diinstall openSUSE Leap-nya dengan mode Minimal Server. ISO bisa didownload disini:

Setup Server

Update sistem openSUSE ke versi latest dengan perintah:

zypper ref && zypper dup -y

Ubah sesuaikan file /etc/hosts dengan isian seperti ini:

127.0.0.1 localhost
192.168.99.101 kube-master.nugi.biz kube-master
192.168.99.102 kube-worker0.nugi.biz kube-worker0

Install Docker

Kubernetes butuh runtime untuk bekerja, cukup install kubernetes seperti ini:

zypper in docker-18.09.6_ce

Kalau sudah terinstall, sesuaikan file /etc/docker/daemon.json lalu tambahkan setelah tanda { (Kurung Kurawal) seperti ini:

...
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "storage-driver": "overlay2",
...

Jangan lupa direstart Dockernya seperti ini:

systemctl restart docker

Agar otomatis start ketika reboot atau ada mati listrik, cukup jalankan perintah ini:

systemctl enable docker

MODPROBE & SYSCTL

Jalankan perintah modprobe seperti ini:

modprobe overlay
modprobe br_netfilter

Sesuaikan juga file /etc/sysctl.conf seperti ini:

net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.bridge.bridge-nf-call-iptables = 1

Apply dengan perintah:

sysctl -p

Tambah Repository K8S (Kubernetes Google)

Untuk menambahkan cukup jalankan perintah ini:

zypper addrepo --type yum --gpgcheck-strict --refresh https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 google-k8s

Jangan lupa untuk menambahkan gpg key-nya agar dapat terinstall:

rpm --import https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
rpm --import https://packages.cloud.google.com/yum/doc/yum-key.gpg

Refresh repository:

zypper refresh google-k8s

INSTALL KUBEADM,KUBECTL & KUBELET

Setelah tambah repo, yang mesti kita lakukan adalah install kubeadm, kubectl dan kubelet seperti ini:

zypper in kubelet-1.15.4-0 kubernetes-cni kubeadm-1.15.4-0 cri-tools kubectl-1.15.4-0 socat

Abaikan dependensi yang tidak sesuai:

Solution 2: break kubelet-1.15.4-0.x86_64 by ignoring some of its dependencies Choose from above solutions by number or skip, retry or cancel [1/2/s/r/c] (c): 2
...
Solution 3: break kubelet-1.13.3-0.x86_64 by ignoring some of its dependencies Choose from above solutions by number or skip, retry or cancel [1/2/3/s/r/c] (c): 3

Disable SWAP dan Enable Start On Boot service kubelet

Seperti yang diketahui secara umum, bahwa kubernetes tidak support menggunakan swap. Jadi kalau mau melanjutkan proses instalasi, kita mesti disable swap dulu. Perintahnya cukup mudah, cukup jalankan seperti ini:

Check swap:

swapon -s

Disable semua swap yang ada:

swapoff -a

Jangan lupa untuk start on boot service kubelet dengan perintah:

systemctl enable kubelet

Note:
Oiya, mulai dari setup server sampai dengan sini. Semua perintahnya dilakukan di Master maupun Worker ya, sebelum lanjut ke yang lainnya.

Lakukan di Master

Setelah install kubeadm selesai, tahap selanjutnya adalah melakukan inisialisasi awal kubernetes cluster, caranya dengan perintah seperti ini:

kubeadm init --pod-network-cidr=10.244.14.0/16

Jangan lupa jalankan perintah ini jika proses sebelumnya sudah selesai:

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

Oiya, jangan lupa mencopy-paste perintah kubeadm yang ada setelah selesai kubeadm init karena akan digunakan untuk menghubungi worker ke master.

Lihat pods yang sedang terbuat maupun yang sedang diproses dengan perintah:

kubectl get pods --all-namespaces --watch

Nah tahap selanjutnya adalah instalasi flannel, flannel ini berfungsi untuk menhubungkan antara node master dengan node worker. Cara mudahnya flannel ini bekerja seperti Jembatan untuk menghubungkan suatu tempat ke tempat lain. Cara installnya seperti ini:

wget https://raw.githubusercontent.com/coreos/flannel/m aster/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

Tunggu hingga semua proses Running, bisa dilihat dengan perintah:

kubectl get pods --all-namespaces --watch

Lakukan di Worker

Jika sudah running semua service beserta flannel, maka tahap selanjutnya cukup jalankan perintah:

kubeadm join 192.168.99.101:6443 --token x8wb20.f8czwt7sdxbvprdh --discovery-token-ca-cert-hash sha256:5226d23fa710d7ca86443ca52665c5b7d0526aced2985da4b88b3cfdcd0deb97

Jika sudah join, kembali ke node Master kemudian jalankan perintah:

kubectl get nodes

Selesai

Nah kalau sudah dapat running 2 nodes berarti kubernetes cluster siap digunakan, untuk menambahkan worker lainnya cukup lakukan instalasi yang sama persis dengan worker yang sudah join. Kemudian perintah join yang sudah kita copy-paste tadi jalankan ulang di worker yang baru tersebut.

Okay selesai sampai disini, jika ada pertanyaan silakan tulis di kolom komentar dibawah ini..

See you next article~~

Gravatar Image
Seorang warga negara Indonesia biasa. Pengguna MAC dan develop server Ubuntu & CentOS. Contact : admin [at] nugi.biz

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.