Cara Install Cluster Kubernetes di CentOS 8


Proses instalasi Kubernetes Cluster di CentOS 8 hampir mirip dengan CentOS 7 (yang dapat Anda lalui di sini), namun proses di sini memiliki beberapa perubahan. Perubahan ini sebagian besar berkisar pada instalasi Docker.

Dimulai dari CentOS 8 (dan dengan ekstensi RHEL 8), buruh pelabuhan kini telah digantikan oleh podman dan buildah yang merupakan alat dari Redhat. Faktanya, paket buruh pelabuhan kini telah dihapus dari repositori paket default.

Dengan langkah ini, tim Redhat bertujuan untuk menyederhanakan proses pembuatan dan penggunaan container, tanpa memerlukan izin khusus, sekaligus menjaga kompatibilitas dengan image buruh pelabuhan dan mengoperasikannya tanpa memerlukan daemon. Podman berjanji untuk menawarkan lebih banyak fleksibilitas saat dijalankan di lingkungan Kubernetes, namun juri tetap berada di luar sana.

Untuk artikel ini, kita akan menjalankan proses instalasi Kubernetes pada platform CentOS 8, yang berjalan pada Docker-CE (Komunitas Edisi). Di artikel selanjutnya, kita juga akan menjalankan instalasi serupa, menggunakan podman untuk container kita.

Prasyarat

  1. Tiga server yang menjalankan CentOS 8 – 1 Master Node dan 2 Worker Node.
  2. Disarankan agar node Anda memiliki setidaknya 2 CPU dengan RAM 2 GB atau lebih per mesin. Ini bukan persyaratan ketat namun sebagian besar didorong oleh kebutuhan aplikasi yang ingin Anda jalankan.
  3. Konektivitas internet di semua node Anda. Kita akan mengambil paket Kubernetes dan buruh pelabuhan dari repositori. Demikian pula, Anda perlu memastikan bahwa pengelola paket DNF diinstal secara default dan dapat mengambil paket dari jarak jauh.
  4. Semua node Anda juga harus dapat terhubung satu sama lain, baik di jaringan pribadi atau publik, mana saja yang tersedia.
  5. Anda juga memerlukan akses ke akun dengan hak sudo atau root. Dalam tutorial ini, saya akan menggunakan akun root saya.

Pencegahan

Kebanyakan node umumnya dilengkapi dengan alamat MAC yang unik, namun, dalam beberapa kasus unik, beberapa Mesin Virtual mungkin memiliki alamat MAC yang sama. Oleh karena itu disarankan agar Anda mengonfirmasi bahwa Product_UUID dan alamat MAC tidak sama di node mana pun.

Kubernetes menggunakan nilai-nilai ini untuk mengidentifikasi node di cluster secara unik. Jika nilai-nilai ini tidak unik untuk setiap node, proses instalasi mungkin gagal.

Untuk memeriksa alamat MAC antarmuka jaringan dan membandingkannya.

ip link

Untuk memeriksa product_uuid dan membandingkannya, jalankan perintah berikut.

cat /sys/class/dmi/id/product_uuid 

Arsitektur Logis

Instalasi kami dirancang agar Node-Master mengendalikan Node Pekerja. Di akhir instalasi ini, arsitektur logis kita akan terlihat seperti ini.

Node Master – Mesin ini umumnya bertindak sebagai sarana kontrol dan menjalankan database cluster dan server API (yang berkomunikasi dengan kubectl CLI).

Kluster Kubernetes 3-node kita akan terlihat seperti ini:

Instalasi Cluster Kubernetes pada Master-Node

Agar Kubernetes dapat berfungsi, Anda memerlukan mesin containerisasi. Seperti yang disebutkan, kami akan menggunakan Docker-CE.

Institusi berikut akan dijalankan di CentOS 8 Master-Node.

Langkah 1: Siapkan Nama Host, Firewall, dan SELinux

Pada Node Master CentOS 8 Anda, atur nama host sistem dan perbarui DNS di file /etc/hosts Anda.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Selanjutnya, lakukan ping ke worker-node-1 dan worker-node-2 Anda untuk memeriksa apakah file host yang diperbarui berfungsi dengan benar menggunakan perintah ping.

ping 192.168.0.48
ping 192.168.0.49

Selanjutnya, nonaktifkan Selinux, karena hal ini diperlukan agar container dapat mengakses sistem file host, yang diperlukan oleh jaringan pod dan layanan lainnya.

setenforce 0

Menyetel setenforce ke 0 secara efektif menyetel SELinux ke permisif, yang secara efektif menonaktifkan SELinux hingga reboot berikutnya. Untuk menonaktifkannya sepenuhnya, gunakan perintah di bawah ini dan reboot.

sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Kubernetes menggunakan berbagai port untuk komunikasi dan akses dan port ini harus dapat diakses oleh Kubernetes dan tidak dibatasi oleh firewall.

Konfigurasikan aturan firewall pada port.

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Langkah 2: Instal Docker-CE di CentOS 8

Anda perlu menambahkan repositori Docker terlebih dahulu karena repositori tersebut tidak lagi ada dalam daftar paket default menggunakan perintah dnf config-manager berikut.

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Instal juga paket containerd.io yang tersedia sebagai daemon yang mengelola seluruh siklus hidup container sistem hostnya, mulai dari transfer gambar dan penyimpanan hingga eksekusi dan pengawasan container hingga penyimpanan tingkat rendah hingga lampiran jaringan dan seterusnya .

dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Sekarang instal versi terbaru paket docker-ce.

dnf install docker-ce

Anda sekarang dapat mengaktifkan dan memulai layanan buruh pelabuhan.

systemctl enable docker
systemctl start docker

Langkah 3: Instal Kubernetes (Kubeadm) di CentOS 8

Selanjutnya, Anda perlu menambahkan repositori Kubernetes secara manual karena repositori tersebut tidak diinstal secara default di CentOS 8.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Kubeadm membantu Anda melakukan bootstrap pada cluster Kubernetes minimum yang layak dan sesuai dengan praktik terbaik. Dengan kubeadm, cluster Anda harus lulus uji Kesesuaian Kubernetes.

Kubeadm juga mendukung fungsi siklus hidup klaster lainnya, seperti peningkatan, penurunan versi, dan pengelolaan token bootstrap. Kubeadm juga ramah integrasi dengan alat orkestrasi lain seperti Ansible dan Terraform.

Dengan repo paket yang sudah siap, Anda dapat melanjutkan dan menginstal paket kubeadm.

dnf install kubeadm -y 

Ketika instalasi berhasil diselesaikan, aktifkan dan mulai layanan.

systemctl enable kubelet
systemctl start kubelet

Langkah 4: Buat Master bidang kendali dengan kubeadm

Master Kubernetes yang bertindak sebagai bidang kendali untuk cluster menjalankan beberapa layanan penting yang diperlukan untuk cluster. Oleh karena itu, proses inisialisasi akan melakukan serangkaian pemeriksaan awal untuk memastikan bahwa mesin siap menjalankan Kubernetes. Pemeriksaan awal ini memaparkan peringatan dan keluar dari kesalahan. kubeadm init lalu mengunduh dan menginstal komponen bidang kendali cluster.

Sekarang saatnya menginisialisasi master Kubernetes, namun sebelum itu, Anda harus menonaktifkan swap agar dapat menjalankan perintah “kubeadm init”.

swapoff -a

Inisialisasi master Kubernetes adalah proses yang sepenuhnya otomatis dan dikendalikan oleh perintah “kubeadm init” seperti yang ditunjukkan.

kubeadm init

Selanjutnya, salin perintah berikut dan simpan di suatu tempat, karena kita perlu menjalankan perintah ini pada node pekerja nanti.

kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash ha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Kiat: Terkadang perintah di atas mungkin memunculkan kesalahan tentang argumen yang diteruskan, jadi untuk menghindari kesalahan, Anda perlu menghapus karakter '\' dan perintah terakhir Anda akan terlihat seperti ini.

kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Setelah Kubernetes berhasil diinisialisasi, Anda harus memungkinkan pengguna Anda untuk mulai menggunakan cluster. Dalam skenario kami, kami akan menggunakan pengguna root. Anda juga dapat memulai cluster menggunakan pengguna sudo seperti yang ditunjukkan.

Untuk menggunakan root, jalankan:

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

Untuk menggunakan pengguna berkemampuan sudo, jalankan:

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

Sekarang konfirmasikan bahwa perintah kubectl telah diaktifkan.

kubectl get nodes

Saat ini, Anda akan melihat status node master adalah 'Belum Siap'. Hal ini karena kami belum men-deploy jaringan pod ke cluster.

Jaringan pod adalah jaringan overlay untuk cluster, yang disebarkan di atas jaringan node yang ada. Ini dirancang untuk memungkinkan konektivitas di seluruh pod.

Langkah 5: Siapkan Jaringan Pod Anda

Menyebarkan cluster jaringan adalah proses yang sangat fleksibel tergantung pada kebutuhan Anda dan ada banyak pilihan yang tersedia. Karena kami ingin instalasi kami sesederhana mungkin, kami akan menggunakan plugin Weavenet yang tidak memerlukan konfigurasi atau kode tambahan apa pun dan menyediakan satu alamat IP per pod yang sangat bagus untuk kami. Jika Anda ingin melihat opsi lainnya, silakan periksa di sini.

Perintah-perintah ini penting untuk menyiapkan jaringan pod.

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Sekarang jika Anda memeriksa status master-node Anda, seharusnya statusnya ‘Siap’.

kubectl get nodes

Selanjutnya, kita menambahkan node pekerja ke cluster.

Menambahkan Node Pekerja ke Cluster Kubernetes

Instruksi berikut akan dijalankan pada setiap node pekerja saat bergabung dengan cluster Kubernetes.

Langkah 1: Siapkan Nama Host, Firewall, dan SELinux

Pertama-tama tetapkan nama host pada worker-node-1 dan worker-node-2 Anda, lalu tambahkan entri host ke /etc/hosts mengajukan.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Selanjutnya, lakukan ping ke node master Anda dari node pekerja untuk mengonfirmasi bahwa file host yang diperbarui berfungsi dengan baik menggunakan perintah ping.

192.168.0.47

Selanjutnya, nonaktifkan SElinux dan perbarui aturan firewall Anda.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Langkah 2: Siapkan Docker-CE dan Kubernetes Repo

Tambahkan repositori Docker terlebih dahulu menggunakan DNF config-manager.

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Selanjutnya, tambahkan paket containerd.io.

dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Setelah kedua paket ini terinstal, instal versi terbaru docker-ce.

dnf install docker-ce

Aktifkan dan mulai layanan buruh pelabuhan.

systemctl enable docker
systemctl start docker

Anda perlu menambahkan repositori Kubernetes secara manual karena repositori tersebut tidak diinstal sebelumnya di CentOS 8.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Langkah 3: Instal Kubeadm di CentOS 8

Dengan paket repo yang sudah siap, Anda dapat melanjutkan dan menginstal kubeadm.

dnf install kubeadm -y 

Mulai dan aktifkan layanan.

systemctl enable kubelet
systemctl start kubelet

Langkah 4: Bergabunglah dengan Node Pekerja ke Cluster Kubernetes

Kami sekarang memerlukan token yang dihasilkan kubeadm init untuk bergabung dengan cluster. Anda dapat menyalin dan menempelkannya ke node-1 dan node-2 jika Anda telah menyalinnya di suatu tempat.

kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf78

Seperti yang disarankan pada baris terakhir, kembali ke node-master Anda dan verifikasi apakah node-1 pekerja dan node-2 pekerja telah bergabung dengan cluster menggunakan perintah berikut.

kubectl get nodes

Jika semua langkah berhasil dijalankan, Anda akan melihat node-1 dan node-2 dalam status siap di master-node. Pada titik ini, Anda telah berhasil menerapkan cluster Kubernetes di CentOS 8.

Bacaan yang Direkomendasikan: Cara Men-deploy Nginx di Cluster Kubernetes

Beberapa Keterbatasan

Cluster yang kita buat di sini memiliki satu Node Master, dan dengan demikian, jika Node Master gagal, cluster Anda mungkin kehilangan data dan mungkin perlu dibuat ulang dari awal.

Untuk alasan ini, saya merekomendasikan pengaturan Sangat Tersedia.