Kubernetes (k8s) adalah alat orkestrasi wadah sumber terbuka dan gratis. Ini digunakan untuk menyebarkan, menskalakan, dan mengelola aplikasi berbasis kemas. Pada artikel ini kami akan mendemonstrasikan cara menginstal Kubernetes Cluster di Ubuntu 20.04 LTS Server (Focal Fossa) menggunakan kubeadm . Dalam pengaturan lab saya, saya telah menggunakan tiga mesin server Ubuntu 20.04 LTS. Berikut adalah persyaratan sistem pada setiap sistem Ubuntu.
- Minimal RAM 2 GB
- 2 Inti (2 vCPU)
- Ruang Kosong 15 GB di /var
- Pengguna istimewa dengan hak sudo
- Koneksi Internet Stabil
Berikut adalah detail penyiapan lab saya:
- Mesin 1 (Server Ubuntu 20.04 LTS) – K8s-master – 192.168.1.40
- Mesin 2 (Server Ubuntu 20.04 LTS) – K8s-node-0 – 192.168.1.41
- Mesin 3 (Server Ubuntu 20.04 LTS) – K8s-node-1 – 192.168.1.42
Sekarang mari kita masuk ke langkah-langkah instalasi Kubernetes
Langkah1) Tetapkan nama host dan tambahkan entri di file /etc/hosts
Gunakan perintah hostnamectl untuk mengatur nama host pada setiap node, contoh ditunjukkan di bawah ini:
$ sudo hostnamectl set-hostname "k8s-master" // Jalankan perintah ini pada master node$ sudo hostnamectl set-hostname "k8s-node-0" // Jalankan perintah ini pada node-0$ sudo hostnameectl set-hostname "k8s-node-1" // Jalankan perintah ini di node-1
Tambahkan entri berikut di file /etc/hosts di setiap node,
192.168.1.40 k8s-master192.168.1.41 k8s-node-0192.168.1.42 k8s-node-1
Langkah 2) Instal Docker (Container Runtime) di ketiga node
Login ke setiap node dan jalankan perintah berikut untuk menginstal docker,
$ sudo apt update$ sudo apt install -y docker.io
Sekarang mulai dan aktifkan layanan buruh pelabuhan pada setiap node menggunakan perintah systemctl di bawah,
$ sudo systemctl aktifkan docker.service --now
Jalankan perintah berikut untuk memverifikasi status layanan buruh pelabuhan dan versinya,
$ systemctl status docker$ docker --version
Langkah 3) Nonaktifkan swap dan aktifkan penerusan IP di semua node
Untuk menonaktifkan swap, edit file /etc/fstab dan beri komentar pada baris yang menyertakan entri baik partisi swap atau file swap.
$ sudo vi /etc/fstab
Simpan &keluar dari file
Jalankan perintah swapoff untuk menonaktifkan swap dengan cepat
$ sudo swapoff -a
Untuk mengaktifkan penerusan ip secara permanen, edit file “/etc/sysctl.conf” dan cari baris “net.ipv4.ip_forward=1 ” dan batalkan komentarnya. Setelah membuat perubahan pada file, jalankan perintah berikut
$ sudo sysctl -pnet.ipv4.ip_forward =1$
Langkah 4) Instal Kubectl, kubelet dan kubeadm di semua node
Jalankan perintah berikut pada ketiga node untuk menginstal utilitas kubectl , kubelet dan kubeadm
$ sudo apt install -y apt-transport-https curl$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"$ sudo apt update$ sudo apt install -y kubelet kubeadm kubectl
Catatan : Pada saat penulisan artikel ini , repositori Kubernetes Ubuntu 16.04 (Xenial Xerus ) telah tersedia tetapi di masa depan, ketika repositori kubernetes tersedia untuk Ubuntu 20.04 maka ganti xenial dengan kata fokus di atas perintah 'apt-add-repository'.
Langkah 4) Inisialisasi Cluster Kubernetes menggunakan kubeadm (dari master node)
Login ke master node Anda (k8s-master) dan jalankan di bawah perintah ‘kubeadm init‘ untuk menginisialisasi cluster Kubernetes,
$ sudo kubeadm init
Setelah cluster berhasil diinisialisasi, kita akan mendapatkan output berikut
Untuk mulai menggunakan cluster sebagai pengguna biasa, mari kita jalankan perintah berikut, perintah sudah ada di output cukup salin tempel.
[email protected]:~$ mkdir -p $HOME/.kube[email protected]:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[email protected]:~ $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Sekarang Join node pekerja (k8s-node-0/1) ke cluster, perintah untuk bergabung dengan cluster sudah ada di output. Copy perintah “kubeadm join” dan paste di kedua node (worker node).
Login ke Node-0 dan jalankan perintah berikut,
[email protected]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa986f82973>preaed458dc22973>preaed458d82973>preaed458d82973
Login ke Node-1 dan jalankan perintah berikut untuk bergabung dengan cluster,
[email protected]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa986f82973>preaed458dc22973>preaed458d82973>preaed458d82973
Dari master node jalankan perintah “kubectl get nodes” untuk memverifikasi status node
[email protected]:~$ kubectl get nodesNAME STATUS PERAN USIA VERSIONk8s-master NotReady master 27m v1.18.3k8s-node-0 NotReady 8mnde. 18.3[dilindungi email]:~$ Seperti yang kita lihat, node pekerja dan node master telah bergabung dengan cluster, tetapi status setiap node adalah “Tidak Siap ”. Untuk membuat status “Siap ” kita harus menerapkan add-on jaringan Pod berbasis Container Network Interface (CNI) seperti calico , kube-router dan weave-net . Seperti namanya, add-on jaringan pod memungkinkan pod untuk saling berkomunikasi.
Langkah 5) Terapkan Add-on Jaringan Calico Pod (Master Node)
Dari master node, jalankan perintah berikut untuk menginstal add-on jaringan Calico pod,
[email protected]:~$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
Setelah berhasil di-deploy maka status node akan siap, mari kita jalankan kembali perintah kubectl untuk memverifikasi status node
[email protected]:~$ kubectl get nodesNAME STATUS PERAN USIA VERSIONk8s-master Siap master 39m v1.18.3k8s-node-0 Siap19m v1.18 [email protected]:18.3[dilindungi email]:~$Jalankan perintah di bawah ini untuk memverifikasi status pod dari semua namespace
Sempurna, di atas menegaskan bahwa semua pod berjalan dan dalam keadaan sehat. Mari kita coba men-deploy pod, layanan, dan penerapan untuk melihat apakah cluster Kubernetes kita berfungsi dengan baik atau tidak.
Catatan: Untuk mengaktifkan fitur penyelesaian bash pada node master Anda, jalankan yang berikut
[email protected]:~$ echo 'source <(kubectl completion bash)'>>~/.bashrc[email protected]:~$ source .bashrcLangkah 6) Uji dan Verifikasi Cluster Kubernetes
Mari kita buat deployment bernama nginx-web dengan image container nginx di namespace default, jalankan perintah kubectl berikut dari node master,
[email protected]:~$ kubectl create deployment nginx-web --image=nginxdeployment.apps/nginx-web created[email protected]:~$Jalankan perintah di bawah ini untuk memverifikasi status penerapan
[email protected]:~$ kubectl get deployments.appsNAME READY UP-TO-DATE TERSEDIA AGEnginx-web 1/1 1 1 41s[email kubectl] [dapatkan email protected] -Date Tersedia Kontain Usia Gambar SelectOrginx-WEB 1/1 1 1 56S Nginx Nginx App =nginx-web [Email Dilindungi]:~ $ [Email Dilindungi]:~ $ Kubectl Dapatkan PodsName Siap Status Restart Agenginx-WEB-7748F7F978-NK8B2 1B2 1 /1 Berjalan 0 2m50[email protected]:~$Seperti yang kita lihat, penerapan telah berhasil dibuat dengan replika default.
Mari tingkatkan penerapan, setel replika sebagai 4. Jalankan perintah berikut,
[email protected]:~$ kubectl scale --replicas=4 penerapan nginx-webdeployment.apps/nginx-web scaled[email protected]:~$Sekarang verifikasi status penerapan Anda menggunakan perintah berikut,
[email protected]:~$ kubectl get deployments.apps nginx-webNAME READY UP-TO-DATE TERSEDIA AGEnginx-web 4/4 4 4 $[e-mail][dilindungi] deployments.apps nginx-web
Di atas mengonfirmasi bahwa penerapan berbasis nginx telah berhasil ditingkatkan.
Mari lakukan satu pengujian lagi, buat pod bernama “http-web” dan ekspos melalui layanan bernama “http-service” dengan port 80 dan NodePort sebagai tipenya.
Jalankan perintah berikut untuk membuat pod,
[email protected]:~$ kubectl run http-web --image=httpd --port=80pod/http-web created[email protected]:~$Buat layanan menggunakan perintah di bawah dan ekspos pod yang dibuat di atas pada port 80,
[email protected]:~$ kubectl expose pod http-web --name=http-service --port=80 --type=NodePortservice/http-service expose[email protected]:~$[email protected]:~$ kubectl get service http-serviceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEhttp-service NodePort 10.101.152.138> 80
Dapatkan IP Node atau nama host tempat http-web pod di-deploy, lalu akses server web melalui NodePort (31098)
[email dilindungi]:~ $ Kubectl dapatkan pod http-web -o widename status siap restart usia ip node nominasi node kesiapan gateshtp-web 1/1 berjalan 0 59m 172.16.11.196 k8s-node-0 >[email protected]:~$[email protected]:~$ curl http://k8s-node-0:31098 Berhasil!
[dilindungi email]:~$Sempurna, itu bekerja dengan baik seperti yang diharapkan. Ini mengakhiri artikel dan mengonfirmasi bahwa kami telah berhasil mengatur cluster Kubernetes di Ubuntu 20.04 LTS Server.
Baca Juga :Cara Menyetel Pengontrol Ingress NGINX di Kubernetes
Baca Juga : Cara Menyetel Registri Docker Pribadi di Kubernetes (k8s)
Cara Menginstal dan Mengkonfigurasi Nginx di Ubuntu 18.04 / Debian 9 Cara Install KVM di Server Ubuntu 20.04 LTS (Focal Fossa)Ubuntu