GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menyebarkan Load Balancing Nginx di Cluster Kubernetes di Ubuntu 18.04 LTS

Kubernetes adalah sistem orkestrasi container gratis dan open-source yang dapat digunakan untuk men-deploy dan mengelola container. Ini dikembangkan oleh Google dan dirancang khusus untuk penskalaan otomatis dan penerapan otomatis. Kubernetes dapat berjalan di semua infrastruktur cloud dan bare metal. Kubernetes memungkinkan Anda untuk mendistribusikan beberapa aplikasi di seluruh cluster node. Kubernetes hadir dengan serangkaian fitur yang kaya termasuk, Penyembuhan otomatis, Skalabilitas otomatis, Penyeimbangan beban, Eksekusi batch, Penskalaan horizontal, Penemuan layanan, Orkestrasi penyimpanan, dan banyak lagi.

Dalam tutorial ini, kita akan mempelajari cara mengatur load balancing Nginx dengan Kubernetes di Ubuntu 18.04.

Persyaratan

  • Dua server dengan Ubuntu 18.04 terinstal.
  • Minimal 2 GB RAM terpasang di setiap server.
  • Kata sandi root dikonfigurasi di kedua server.

Memulai

Pertama, Anda perlu memperbarui kedua server dengan versi stabil terbaru. Anda dapat memperbaruinya dengan menjalankan perintah berikut:

apt-get update -y
apt-get upgrade -y

Setelah kedua server diperbarui, mulai ulang untuk menerapkan semua perubahan.

Secara default, Kuberenetes tidak mendukung memori swap dan tidak akan berfungsi jika swap aktif. Jadi, Anda perlu menonaktifkan memori swap di kedua server.

Untuk menonaktifkan memori swap sementara, jalankan perintah berikut:

swapoff -a

Untuk menonaktifkan memori swap secara permanen, buka file /etc/fstab:

nano /etc/fstab

Komentari baris terakhir:

# /etc/fstab:informasi sistem file statis.
#
# gunakan 'blkid' untuk mencetak pengenal unik universal untuk
# perangkat; ini dapat digunakan dengan uuid=sebagai cara yang lebih kuat untuk memberi nama perangkat
# yang berfungsi bahkan jika disk ditambahkan dan dihapus. lihat fstab(5).
#
# <sistem file> <titik pemasangan> <ketik> <opsi> <buang> <pass>
# / berada di /dev/sda1 selama instalasi
# swap aktif /dev/sda4 selama instalasi#UUID=65se21r-1d3t-3263-2198-e564c275e156 none swap sw 0 0

Simpan dan tutup file. Kemudian, jalankan perintah berikut untuk menerapkan perubahan konfigurasi:

mount -a

Selanjutnya, Anda perlu mengatur resolusi nama host di kedua server. Jadi, setiap server dapat berkomunikasi satu sama lain menggunakan nama host.

Untuk melakukannya, buka file /etc/hosts menggunakan editor pilihan Anda:

nano /etc/hosts

Tambahkan baris berikut:

192.168.0.103 master192.168.0.100 budak

Simpan dan tutup file, ketika Anda selesai. Kemudian, lanjutkan ke langkah berikutnya.

Instal Docker dan Kubernetes

Selanjutnya, Anda perlu menginstal alat Docker dan Kubernetes kubelet, kubeadm, dan kubectl di kedua server.

Pertama, instal paket yang diperlukan dan tambahkan kunci GPG dengan perintah berikut:

apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key tambahkan -

Selanjutnya, tambahkan repositori Docker CE di kedua server dengan menjalankan perintah berikut:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Selanjutnya, perbarui repositori dan instal Docker CE dengan perintah berikut:

apt-get update -y
apt-get install docker-ce -y

Setelah instalasi selesai, periksa status Docker CE dengan perintah berikut:

systemctl status buruh pelabuhan

Anda akan melihat output berikut:

? docker.service - Mesin Kontainer Aplikasi Docker Dimuat:dimuat (/lib/systemd/system/docker.service; diaktifkan; preset vendor:diaktifkan) Aktif:aktif (berjalan) sejak Jum 2019-07-19 07:05:50 UTC; 1 jam 24 menit yang lalu Dokumen:https://docs.docker.com PID Utama:3619 (dockerd) Tugas:8 CGroup:/system.slice/docker.service ??3619 /usr/bin/dockerd -H fd:// - -containerd=/run/containerd/containerd.sockJul 19 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.574491681Z" level=warning msg="Kernel Anda tidak mendukung memori swap limit"19 Juli 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575196691Z" level=warning msg="Kernel Anda tidak mendukung periode rt cgroup"19 Juli 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575733336Z" level=warning msg="Kernel Anda tidak mendukung cgroup rt runtime"19 Juli 07:05:48 master dockerd[3619]:waktu ="2019-07-19T07:05:48.582517104Z" level=info msg="Memuat wadah:mulai."19 Juli 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:49.391255541 Z" level=info msg="Jembatan default (docker0) ditetapkan dengan IP addJul 19 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:49.681478822Z" level=info msg="Memuat kon tainers:selesai."19 Juli 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.003776717Z" level=info msg="Docker daemon" commit=0dd43dd graphdriver(s)=overlaJul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.009892901Z" level=info msg="Daemon telah menyelesaikan inisialisasi"19 Juli 07:05:50 master systemd[1]:Memulai Docker Application Container Engine. 19 Juli 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.279284258Z" level=info msg="API mendengarkan di /var/run/docker.sock "

Paket Kubernetes tidak tersedia di repositori default Ubuntu 18.04. Jadi, Anda perlu menambahkan repositori Kubernetes di kedua server.

Anda dapat menambahkannya dengan perintah berikut:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo 'deb http://apt.kubernetes.io/ kubernetes-xenial main' | tee /etc/apt/sources.list.d/kubernetes.list

Selanjutnya, perbarui repositori dan instal paket Kubernetes dengan perintah berikut:

apt-get install kubelet kubeadm kubectl -y

Setelah semua paket terinstal, Anda dapat melanjutkan untuk mengkonfigurasi server Master.

Konfigurasi Server Master Kubernetes

Pertama, Anda perlu menginisialisasi cluster Anda dengan alamat IP pribadinya di server Master:

Anda dapat melakukannya dengan perintah kubeadm:

kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.0.103

Setelah Cluster berhasil diinisialisasi, Anda akan melihat output berikut:

Control-plane Kubernetes Anda telah berhasil diinisialisasi! Untuk mulai menggunakan cluster, Anda harus menjalankan perintah berikut sebagai pengguna biasa:mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $ HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configAnda sekarang harus men-deploy jaringan pod ke cluster. Jalankan "kubectl apply -f [podnetwork].yaml" dengan salah satu opsi yang tercantum di:https://kubernetes.io/docs/concepts/cluster-administration/addons/Kemudian Anda dapat bergabung dengan sejumlah node pekerja dengan menjalankan yang berikut pada masing-masing sebagai root:kubeadm join 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u \ --discovery-token-ca-cert-hash sha256:a720ae35d472162177f6ee39de758a5de40043f53e4a3e00aefd6f9832f3436c 

Selanjutnya, Anda perlu mengonfigurasi alat kubectl di server Master Anda. Anda dapat melakukannya dengan perintah berikut:

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

Selanjutnya, Anda perlu men-deploy Container Networking Interface (CNI) di server Anda. Sebab, cluster tersebut tidak memiliki CNI.

Anda dapat menerapkan CNI ke cluster Anda dengan perintah berikut:

kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

Anda akan melihat output berikut:

configmap/calico-config Createddaemonset.extensions/calico-etcd Createdservice/calico-etcd Createddaemonset.extensions/calico-node Createddeployment.extensions/calico-kube-controllers Createddeployment.extensions/calico-policy-controller Createdclusterrolebinding.rbac.authorization .k8s.io/calico-cni-plugin dibuatclusterrole.rbac.authorization.k8s.io/calico-cni-plugin dibuatlayananaccount/calico-cni-plugin dibuatclusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers dibuatclusterrole.rbac .authorization.k8s.io/calico-kube-controllers Createdserviceaccount/calico-kube-controllers Created

Anda sekarang dapat memeriksa ruang nama Anda dengan menjalankan perintah berikut:

kubectl dapatkan ruang nama

Jika semuanya berjalan dengan baik, Anda akan melihat output berikut:

NAME STATUS AGEdefault Aktif 4hkube-public Aktif 4hkube-system Aktif 4h

Selanjutnya, verifikasi apakah master node sekarang berjalan dengan baik dengan perintah berikut:

kubectl mendapatkan node

Anda akan melihat output berikut:

nama status peran usia versionmaster Siap master 12m v1.15.3

Tambahkan Slave ke Cluster Kubernetes

Selanjutnya, login ke server slave Anda dan jalankan perintah berikut untuk menambahkan slave ke cluster Kubernetes:

kubeadm join 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u --discovery-token-ca-cert-hash sha256:a720ae35d472162177f6ee39de758a5de40043f53e4a3e00aefd366c
 Selanjutnya, buka server master dan periksa apakah slave telah ditambahkan ke cluster Kubernetes Anda dengan perintah berikut:

kubectl mendapatkan node

Anda akan melihat output berikut:

nama status peran usia versionmaster ready master 25m v1.15.3slave ready 2m v1.15.3

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Menerapkan NGINX di Cluster Kubernetes

Cluster Kubernetes sekarang telah terinstal, terkonfigurasi, dan berfungsi dengan baik. Saatnya men-deploy Nginx di cluster Kubernetes.

Buka server Master dan buat penerapan Nginx dengan perintah berikut:

kubectl buat penerapan nginx --image=nginx

Anda sekarang dapat membuat daftar penerapan Nginx dengan perintah berikut:

kubectl dapatkan penerapan

Anda akan melihat output berikut:

NAME READY U-TO-DATE TERSEDIA AGEnginx 1/1 1 1 99s

Setelah Nginx di-deploy, aplikasi dapat diekspos dengan perintah berikut:

kubectl create service nodeport nginx --tcp=80:80

Anda sekarang dapat melihat alamat Layanan dan ClusterIP baru yang ditetapkan dengan perintah berikut:

kubectl dapatkan svc

Anda akan melihat output berikut:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.152.183.1  443/TCP 15mnginx ClusterIP 10.152.183.199  80:32456/TCP 60s  

Selamat! Anda telah berhasil men-deploy Nginx di cluster Kubernetes. Anda juga dapat menambahkan node lain ke cluster Kubernetes dengan mudah. Untuk informasi lebih lanjut, lihat dokumen resmi Kubernetes di Dokumen Kubernetes. Jangan ragu untuk bertanya kepada saya jika Anda memiliki pertanyaan.


Ubuntu
  1. Cara Menyebarkan Proksi Terbalik NGINX di Docker

  2. Cara Menyebarkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  3. Terapkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  1. Cara Menyebarkan Cluster Redis di Kubernetes

  2. Cara Menginstal Kubernetes di Ubuntu 18.04

  3. Cara Menginstal Docker Di Ubuntu 20.04 LTS Focal Fossa

  1. Cara Menginstal Docker di Ubuntu 22.04 / 20.04 LTS

  2. Cara Menginstal dan Mengonfigurasi Kubernetes dan Docker di Ubuntu 18.04 LTS

  3. Cara menggunakan Ghost Blog dengan Nginx di Ubuntu 18.04 LTS