Instal dan Deploy Cluster Kubernetes di Ubuntu 20.04

Selamat datang di tutorial kami tentang cara menginstal dan men-deploy Kubernetes Cluster di Ubuntu 20.04. Kubernetes, menurut kubernetes.io adalah platform orkestrasi kontainer tingkat produksi sumber terbuka. Ini memfasilitasi penerapan otomatis, penskalaan, dan pengelolaan aplikasi dalam container.

Instal dan Deploy Kubernetes di Ubuntu 20.04

Dalam tutorial ini, kita akan men-deploy cluster Kubernetes dua node. Di bawah ini adalah detail simpul kami.

Node Hostname IP Address vCPUs RAM (GB) OS
Menguasai master.kifarunix-demo.com 192.168.56.101 2 2 Ubuntu 20.04 LTS
pekerja 1 wk01.kifarunix-demo.com 192.168.57.6 2 2 Ubuntu 20.04 LTS
pekerja 2 wk02.kifarunix-demo.com 192.168.58.6 2 2 Ubuntu 20.04 LTS

Jalankan Pembaruan Sistem

Untuk memulainya, pastikan bahwa paket sistem Anda mutakhir;

apt update apt upgrade

Nonaktifkan Tukar

Menjalankan Kubernetes mengharuskan Anda menonaktifkan swap.

Periksa apakah swap diaktifkan.

swapon --show
NAME TYPE SIZE USED PRIO /swap.img file 2G 0B -2

Jika tidak ada output, maka swap tidak diaktifkan. Jika diaktifkan seperti yang ditunjukkan pada output di atas, jalankan perintah di bawah ini untuk menonaktifkannya.

swapoff -v /swap.img

Atau sederhananya

swapoff -a

Untuk menonaktifkan swap secara permanen, beri komentar atau hapus baris swap pada file /etc/fstab.

vim /etc/fstab
... #       # / was on /dev/sda2 during curtin installation /dev/disk/by-uuid/f3d575c6-e940-4472-b406-30da6b66965a / ext4 defaults 0 0 #/swap.img none swap sw 0 0

atau Hapus saja;

sed "-i.bak" '/swap.img/d' /etc/fstab

Instal Docker Container Runtime di Ubuntu 20.04

Kubernetes menggunakan runtime container untuk menjalankan container di Pod. Ini mendukung beberapa runtime kontainer termasuk Docker,  containerd,  CRI-O. DALAM demo ini, kami akan menggunakan Docker CE. Oleh karena itu, pada semua node, master dan pekerja, Anda perlu menginstal Docker.

Ikuti tautan di bawah ini untuk mempelajari cara menginstal Docker CE di Ubuntu 20.04.

Instal Docker CE di Ubuntu 20.04

Anda dapat memverifikasi instalasi Docker;

docker --version
Docker version 19.03.11, build 42e35e61f3

Instal Kubernetes di Ubuntu 20,04

Ada sejumlah komponen node, yang diperlukan untuk menyediakan lingkungan runtime Kubernetes yang perlu diinstal pada setiap node. Ini termasuk:

  • kubelet: berjalan sebagai agen pada setiap node dan memastikan bahwa container berjalan di dalam sebuah Pod.
  • kubeadm: Cluster Bootstraps Kubernetes
  • kubectl: Digunakan untuk menjalankan perintah terhadap cluster Kubernetes. 

Komponen-komponen ini tersedia di repo default Ubuntu 20.04. Jadi, Anda perlu menginstal repo Kubernetes untuk menginstalnya.

Instal Kunci Penandatanganan GPG Repositori Kubernetes

Jalankan perintah di bawah ini untuk menginstal kunci GPG repo Kubernetes.

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

Instal Repositori Kubernetes di Ubuntu 20.04

Selanjutnya instal repositori Kubernetes;

echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kurbenetes.list

Instal komponen Kubernetes

apt update
apt install kubelet kubeadm kubectl

Inisialisasi Control Plane Kubernetes

Setelah penginstalan runtime container serta komponen Kubernetes, sekarang saatnya untuk menginisialisasi master node Kubernetes. Master Kubernetes bertanggung jawab untuk mempertahankan status yang diinginkan untuk cluster Anda.

Jalankan perintah di bawah ini pada master node untuk mem-bootstrap node control-plane Kubernetes.

kubeadm init --apiserver-advertise-address=192.168.56.101 --pod-network-cidr=172.16.0.0/16

Catatan;

  • –apiserver-advertise-address: Menentukan alamat IP yang akan diiklankan oleh Server API yang sedang didengarkannya. Jika tidak disetel, interface jaringan default akan digunakan.
  • –pod-network-cidr: Menentukan kisaran alamat IP untuk jaringan pod. Jika disetel, bidang kontrol akan secara otomatis mengalokasikan CIDR untuk setiap node.You use this to define your preferred network range if there is gonna be a collision between your network plugin’s preferred Pod network and some of your host networks.

Setelah inisialisasi selesai, Anda seharusnya dapat melihat output yang mirip dengan yang di bawah ini;

... 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 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/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.56.101:6443 --token v573ma.gf8iyl3a8mtd35rb  --discovery-token-ca-cert-hash sha256:a110e087527d1eeb48389f1e9ac8540ee52e237f940a6813ca9c033fe0fafa71

Seperti yang disarankan pada output di atas, Anda menjalankan perintah di bawah ini pada master node untuk mulai menggunakan cluster Anda.

Pastikan untuk menjalankan perintah sebagai user biasa, dengan hak sudo.

su - koromicha

Selanjutnya, buat direktori cluster Kubernetes.

mkdir -p $HOME/.kube

Copy file konfigurasi admin Kubernetes ke direktori cluster yang dibuat di atas.

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

Tetapkan kepemilikan yang tepat untuk file konfigurasi cluster.

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Verifikasi status cluster Kubernetes;

kubectl get nodes
NAME STATUS ROLES AGE VERSION master.kifarunix-demo.com NotReady master 17m v1.18.3

Seperti yang Anda lihat, cluster belum siap.

Deploy Jaringan Pod Cluster Kubernetes

Pod adalah grup dari satu atau lebih container terkait dalam cluster Kubernetes. Mereka berbagi siklus hidup, penyimpanan/jaringan yang sama. Agar Pod dapat berkomunikasi satu sama lain, Anda harus menerapkan  add-on jaringan Pod berbasis Container Network Interface (CNI).

Untuk men-deploy jaringan CNI Pod, jalankan perintah di bawah ini pada master node;

kubectl apply -f [podnetwork].yaml

Di mana [podnetwork].yamladalah jalur ke CNI pilihan Anda. Dalam demo ini, kami menggunakan Flanel. Flanneladalah jaringan virtual yang menempelkan alamat IP ke wadah.

Deploy jaringan Flanel dengan menjalankan p
erintah di bawah ini. Similarly, execute the command as the user with which you created the Kubernetes cluster on its home directory.

[email protected]:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Berbagai jenis CNI dijelaskan di halaman add- on Kubernetes.

Setelah perintah selesai, Anda dapat membuat daftar Pod di ruang nama dengan menjalankan perintah di bawah ini;

kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-66bff467f8-9j4q5 1/1 Running 0 17m kube-system coredns-66bff467f8-blggv 1/1 Running 0 17m kube-system etcd-master.kifarunix-demo.com 1/1 Running 0 17m kube-system kube-apiserver-master.kifarunix-demo.com 1/1 Running 0 17m kube-system kube-controller-manager-master.kifarunix-demo.com 1/1 Running 0 17m kube-system kube-flannel-ds-amd64-nw2rw 1/1 Running 0 7m6s kube-system kube-proxy-srmgx 1/1 Running 0 17m kube-system kube-scheduler-master.kifarunix-demo.com 1/1 Running 0 17m

Periksa status simpul;

kubectl get nodes
NAME STATUS ROLES AGE VERSION master.kifarunix-demo.com Ready master 23m v1.18.3

Tambahkan Node Lain ke Cluster Kubernetes

Anda sekarang dapat menambahkan node lain ke cluster Kubernetes menggunakan kubeadm joinperintah sebagai berikut.

Masuk ke node pekerja dan jalankan perintah di bawah ini pada masing-masing node untuk menambahkannya ke cluster.

Perhatikan bahwa perintah ini ditampilkan setelah menginisialisasi bidang kontrol di atas dan harus dijalankan sebagai user root.

sudo kubeadm join 192.168.56.101:6443 --token an2ocw.6zx0pc0dgw3wj3jl  --discovery-token-ca-cert-hash sha256:5fb8fc688dd88f3c7d450a5461705e6dc0014631050313f7b9ce199b538658a6

Jika Anda tidak menyimpan perintah bergabung Cluster Kubernetes, Anda dapat mencetak kapan saja menggunakan perintah di bawah ini;

kubeadm token create --print-join-command

Setelah perintah berjalan, Anda akan mendapatkan output yang mirip dengan di bawah ini;

... [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. * Kubelet was informed of the new secure connection details. Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

Pada control plane (master) Kubernetes, jalankan perintah di bawah ini untuk memverifikasi bahwa node telah bergabung dengan cluster.

kubectl get nodes
NAME STATUS ROLES AGE VERSION master.kifarunix-demo.com Ready master 40m v1.18.3 wk01.kifarunix-demo.com Ready  4m11s v1.18.3 wk02.kifarunix-demo.com Ready  3m51s v1.18.3

Seperti yang Anda lihat, kami sekarang memiliki sebuah cluster. Jalankan perintah di bawah ini untuk mendapatkan informasi cluster.

kubectl cluster-info
Kubernetes master is running at https://192.168.56.101:6443 KubeDNS is running at https://192.168.56.101:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Anda sekarang siap untuk men-deploy aplikasi di cluster Kubernetes.

Itu menandai akhir dari panduan kami tentang cara menginstal dan menyebarkan Kubernetes Cluster di Ubuntu 20.04. Dalam tutorial berikutnya, kita akan mempelajari cara men-deploy aplikasi di cluster Kubernetes.

Bacaan lebih lanjut

Memulai Kubernetes

Tutorial lainnya

Anda juga dapat memeriksa tutorial kami yang lain

Konfigurasikan HAProxy yang Sangat Tersedia dengan Keepalive di Ubuntu 20.04

Instal dan Atur HAProxy di Ubuntu 20.04

Instal dan Konfigurasi Filebeat di CentOS 8

Instal dan Konfigurasi NXLog CE di Ubuntu 20.04