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:
- Minimal punya 2 VM openSUSE Leap 15.1 (Kalau sudah pakai openSUSE Leap 15.1, bisa buat 1 VM tambahan tidak perlu 2)
- Minimal 2vCPU
- Minimal 2 GB RAM
- Harddisk 50GB lebih dari cukup
- 1 LAN masing masing VM
- 1 IP Private masing masing VM
- 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:
- International: https://download.opensuse.org/distribution/leap/15.1/iso/openSUSE-Leap-15.1-DVD-x86_64.iso
- Lokal Indonesia: https://repo.opensuse.id/distribution/leap/15.1/iso/openSUSE-Leap-15.1-DVD-x86_64.iso
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~~