Jumat, 11 Oktober 2024

K8S-management kubernetes dg cozystack

 

Memasang Cluster Kubernetes yang Dikelola oleh Cozystack: Panduan Lengkap oleh Gohost dan Ænix

https://medium.com/aenix-io/installing-a-kubernetes-cluster-managed-by-cozystack-a-detailed-guide-by-gohost-and-%C3%A6nix-2b2d2e0ddbdb
Timur Tukaev
Anix

Mengikuti

Bahasa Indonesia:

Artikel ini ditulis oleh Vladislav Karabasov dari perusahaan hosting Kazakhstan gohost , oleh karena itu narasinya akan disampaikan sebagai orang pertama.

Pada saat saya pindah ke gohost.kz, perusahaan tersebut telah beroperasi di pasar Kazakhstan selama 15 tahun, menyediakan serangkaian layanan standar kepada klien: VPS/VDC, IaaS, hosting virtual, dll. Akan tetapi, klien mengembangkan kebutuhan baru, jadi saya ditugaskan untuk mengembangkan arah Kubernetes sebagai Layanan.

Begitulah awal mula "kenalan 2.0" saya dengan sistem *nix (kali ini dengan Talos Linux ), serta dengan dunia kontainer (melalui Kubernetes). Saat mengerjakan tugas peluncuran dan pengembangan arah baru ini, saya menemukan platform Open Source Cozystack dan berkenalan dengan para pengembangnya, Andrey Kvapil dan Georg Gaal. Kami berbincang, dan saya memutuskan untuk menerapkan kluster Kubernetes yang dikelola oleh Cozystack, yang berbasis pada Talos Linux.

Berikut ini hal yang membuat saya tertarik dengan Cozystack:

  • Platform ini memungkinkan penerapan kluster Kubernetes dalam kluster yang sudah ada tanpa menggunakan virtualisasi untuk menjalankan bidang kontrol Kubernetes, sekaligus menjalankan pekerja sebagai VM dalam kluster Kubernetes yang sudah ada. Hal ini memungkinkan pemanfaatan sumber daya yang optimal tanpa mengorbankan keamanan.
  • Talos Linux, yang menjadi dasar platform ini, memiliki tingkat keamanan yang sangat tinggi.
  • Selain itu, pembuat platform adalah anggota aktif komunitas Kubernetes dan memberikan kontribusi signifikan terhadap Open Source, termasuk mengorganisasi komunitas untuk mengembangkan etcd-operator mereka sendiri .

Ternyata, gohost telah berpartisipasi dalam proyek Open Source ini sejak hari pertama, dan saat ini kami tengah aktif menguji platform tersebut dan bersiap untuk menyebarkannya ke operasi industri, yang berarti menyediakan layanan berdasarkan Cozystack kepada klien hosting kami.

Saya termotivasi untuk menulis artikel ini karena beberapa alasan: Saya ingin mensistematisasikan pengetahuan yang telah saya peroleh, berbagi pengalaman saya dalam menginstal Cozystack di Talos Linux dengan komunitas, dan berbicara tentang pengalaman saya bekerja dengan berbagai alat di ekosistem Kubernetes. Selain itu, tidak diragukan lagi ada pembaca yang akan menganggap materi ini bermanfaat untuk pekerjaan mereka — secara umum, ini adalah upaya sederhana saya untuk memberikan sesuatu kembali kepada komunitas. Jadi, mari kita mulai.

Topologi Cluster

Meskipun Cozystack dapat digunakan pada perangkat keras hanya dalam beberapa menit, platform tersebut juga dapat diluncurkan di lingkungan virtual mana pun. Misalnya, saya mulai dengan menggunakan kluster di Proxmox dan KVM .

Namun, dalam artikel ini, saya akan membahas pengalaman saya memasangnya pada perangkat keras sungguhan. Mari kita mulai dengan pengaturannya — berikut adalah peralatan yang saya miliki:

  1. VPS 2G/2CPU (meskipun PC rumahan biasa juga dapat digunakan) — 1 unit.
  2. Sakelar — 2 unit (dalam mode agregasi — mode ini memungkinkan peningkatan toleransi kesalahan, bandwidth, dan penyeimbangan beban, Gbr. 1) atau 1 unit (tanpa agregasi, Gbr. 2).
  3. Server dengan penyimpanan lokal pada disk NVMe (untuk kontainer) dan disk SSD (untuk sistem operasi). Jumlah minimum server dalam kluster untuk memastikan toleransi kesalahan adalah 3 unit.

Anda juga dapat menggunakan penyimpanan yang terpasang ke jaringan (NAS), misalnya, dengan kombinasi DRBD + Linstor (kami menggunakan NAS semacam itu di lingkungan produksi kami untuk VPS, tetapi mengonfigurasinya adalah topik untuk artikel besar yang terpisah, jadi dalam kasus ini, kami akan membatasi diri ke server).

Berikut ini adalah diagram pengaturan peralatan untuk menggunakan Cozystack dalam kasus saya (Gbr. 1). Saya tidak akan membahas konfigurasi switching di sini.

Gambar 1. Topologi dengan Agregasi Port
Gambar 2. Topologi tanpa Agregasi Port

Saat mengatur topologi kluster, penting untuk memastikan akses ke Internet (SRV1, SRV2, SRV3). Dalam kasus saya, akses dikelola melalui host manajemen. SRV1, SRV2, dan SRV3 menggunakan host manajemen sebagai gateway default-nya. Selain itu, perutean diaktifkan pada host manajemen dengan aturan iptables yang sesuai. Namun, Anda dapat menggunakan gateway lain jika diinginkan — host manajemen hanya diperlukan untuk pengaturan kluster awal.

Persiapan Host Manajemen

Pertama, mari kita konfigurasikan management-host, yang akan digunakan untuk menyebarkan cluster Kubernetes yang dikelola oleh Cozystack. Dengan asumsi Anda sudah tahu cara menyiapkan host dengan sistem operasi, saya akan melewatkan detailnya — dalam kasus saya, saya menggunakan Ubuntu 22.04.

Mari kita lanjutkan dengan penerapan management-host. Untuk ini, saya mengusulkan penggunaan skrip bash saya, yang menghilangkan rutinitas pencarian dan pemasangan paket, dan mengotomatiskan konfigurasi host. Pada saat penulisan artikel ini, versi paket berikut digunakan: talosctl v1.7.1 dan kubectl v1.30.1.

Bahasa Indonesia: #!/bin/bash

MERAH= '\033[0;31m'
HIJAU= '\033[0;32m'
KUNING= '\033[1;33m'
NC= '\033[0m' # Tidak Ada Warna

apt update
apt upgrade -y
apt -y install ntp bind9 curl jq nload

service ntp restart
#service ntp status
sed -i -r 's/listen-on-v6/listen-on/g' /etc/bind/named.conf.options
sed -i '/listen-on/a \\tallow-query { any; };' /etc/bind/named.conf.options
apt -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | Bahasa Indonesia: sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch= $(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stabil" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt update
apt install -y docker-ce snapd make dialog nmap
#systemctl status docker
#curl -sL https://talos.dev/install | sh

releases=$(curl -s https://api.github.com/repos/siderolabs/talos/releases | jq -r '.[].tag_name' | head -n 10)
echo -e " ${YELLOW} Pilih versi yang akan diunduh: ${NC} "
pilih versi di $releases ; do
if [[ -n " ​​$version " ]]; then
echo "Anda telah memilih versi $version "
break
else
echo -e " ${RED} Pilihan salah. Silakan coba lagi. ${NC} "
fi
done
url= "https://github.com/siderolabs/talos/releases/download/ $version /talosctl-linux-amd64"
wget $url -O talosctl
chmod +x talosctl
sudo mv talosctl /usr/local/bin/
#kubectl
releases=$(curl -s https://api.github.com/repos/kubernetes/kubernetes/releases | jq -r '.[].tag_name' | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 10)
echo -e " ${YELLOW} Pilih versi kubectl yang akan diunduh:${NC} "
pilih versi di $releases; lakukan
jika [[ -n " ​​$version " ]]; lalu
echo "Anda telah memilih versi $version "
break
else
echo -e " ${RED} Pilihan salah. Silakan coba lagi. ${NC} "
fi
done
url= "https://storage.googleapis.com/kubernetes-release/release/ $version /bin/linux/amd64/kubectl"
wget $url -O kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

curl -LO https://github.com/kvaps/kubectl-node-shell/raw/master/kubectl-node_shell
chmod +x ./kubectl-node_shell
sudo mv ./kubectl-node_shell /usr/local/bin/kubectl-node_shell

curl -LO https://github.com/aenix-io/talm/releases/download/v0.5.7/talm-linux-amd64
chmod +x ./talm-linux-amd64
sudo mv ./talm-linux-amd64 /usr/local/bin/talm


echo "Tentukan nama direktori untuk berkas konfigurasi,"
echo -e "direktori akan ditempatkan di katalog ${GREEN} /opt/ ${NC} . Secara default: ${GREEN} /opt/cozystack ${NC} "
echo -e " ${YELLOW} "
read -p "Masukkan nama direktori: " cozystack
echo -e " ${NC} "
if [ -z " $cozystack " ]; lalu
cozystack= "cozystack"
fi
mkdir -p /opt/ $cozystack
curl -LO https://github.com/aenix-io/talos-bootstrap/raw/master/talos-bootstrap
mv talos-bootstrap /opt/ $cozystack
chmod +x /opt/ $cozystack /talos-bootstrap
snap install yq
echo -e " ${YELLOW} Tentukan jaringan IP untuk etcd dan kubelet ${NC} "
echo -e "Default: ${GREEN} 192.168.100.0/24 ${NC} "
read -p "Jaringan IP (jaringan/masker):" IPEK
kalauBahasa Indonesia: [ -z " $IPEK " ]; maka
IPEK= "192.168.100.0/24"
fi
#TAMBAHKAN TERUSKAN (TERKAIT,DIJUAL)
rule1= "-d $IPEK -m state --state TERKAIT,DIJUAL -m komentar --komentar $cozystack -j TERIMA"
jika ! iptables-save | grep -q -- "-A TERUSKAN $rule1 " ; maka
iptables -I TERUSKAN -d $IPEK -m state --state TERKAIT,DIJUAL -m komentar --komentar $cozystack -j TERIMA
fi
# TAMBAHKAN TERUSKAN
rule2= "-s $IPEK -m komentar --komentar $cozystack -j TERIMA"
jika ! iptables-save | grep -q -- "-A TERUSKAN $rule2 " ; Bahasa Indonesia: lalu
iptables -I FORWARD -s $IPEK -m comment --comment $cozystack -j ACCEPT
fi # TAMBAHKAN aturan
NAT3 = "-s $IPEK -m comment --comment $cozystack -j MASQUERADE" jika ! iptables-save | grep -q -- "-A POSTROUTING $rule3 " ; lalu iptables -t nat -I POSTROUTING -s $IPEK -m comment --comment $cozystack -j MASQUERADE fi #sysctl -w net.ipv4.ip_forward=1 jika ! grep -qF " $REQUIRED_SETTING " " $FILE " ; lalu echo "net.ipv4.ip_forward = 1" | sudo tee -a "/etc/sysctl.conf" > /dev/null fi sysctl -p apt -y install iptables-persistent cat > /opt/ $cozystack /patch.yaml << Mesin EOT : kubelet: nodeIP: validSubnets: - $IPEK extraConfig: maxPods: 512 kernel: modul: - nama: openvswitch - nama: drbd parameter: - usermode_helper=dinonaktifkan - nama: zfs - nama: spl instal: gambar: ghcr.io/aenix-io/cozystack/talos:v1.7.1 berkas: - konten: | [plugin] [plugin."io.containerd.grpc.v1.cri"] kepemilikan_perangkat_dari_konteks_keamanan = benar


































jalur: /etc/cri/conf.d/20-customization.part
op: buat
klaster:
jaringan:
cni:
nama: tidak ada
dnsDomain: cozy.local
podSubnets:
- 10.244.0.0/16
serviceSubnets:
- 10.96.0.0/16
EOT


cat > /opt/ $cozystack /patch-controlplane.yaml << klaster EOT : allowSchedulingOnControlPlanes: benar controllerManager: extraArgs: bind-address: 0.0.0.0 scheduler: extraArgs: bind-address: 0.0.0.0 apiServer: certSANs: - 127.0.0.1 proxy: dinonaktifkan: benar discovery: diaktifkan: salah etcd: advertisedSubnets: - $IPEK EOT




















echo -e " ${YELLOW} ========== Biner terpasang =========== ${NC} "
echo "helm in Bahasa Indonesia: folder" $( which helm)
echo "yq di folder" $( which yq)
echo "kubectl di folder" $( which kubectl)
echo "docker di folder" $( which docker)
echo " talosctl di folder" $( which talosctl )
echo "dialog di folder" $( which dialog)
echo "nmap di folder" $( which nmap)
echo "talm di folder" $( which talm)
echo "node_shell di folder" $( which kubectl-node_shell)
echo -e " ${YELLOW} ========== layanan yang berjalan =========== ${NC} "
echo "DNS Bind9" ; systemctl aktif bind9
echo "NTP" ; systemctl aktif ntp
echo -e " ${YELLOW} ========== TAMBAHKAN Aturan Iptables =========== ${NC} "
iptables -S | grep $cozystack
iptables -t nat -S | grep $cozystack
echo -e " ${RED} !!! Harap ubah katalog agar berfungsi dengan talos-bootstrap !!!${NC} "
gema -e " ${HIJAU} cd /opt/$cozystack ${NC} "

Cara kerja skrip: mengunduh dan memasang berbagai alat, termasuk helm, yq, kubectl, docker, talosctl, dialog, nmap, make, kubectl-node-shell, dan talm (utilitas sumber terbuka lain yang praktis dari pengembang Cozystack untuk mengonfigurasi Talos Linux — semacam Helm untuk Talos). Kemudian, skrip tersebut menempatkannya ke dalam direktori yang sesuai. Seluruh proses diotomatisasi dan mencakup dialog yang bermakna. Selain itu, skrip tersebut menyiapkan layanan waktu NTP, layanan DNS bind9, dan membuat aturan untuk mengaktifkan akses internet dari kluster melalui host manajemen.

Sebagai hasil dari eksekusi skrip, skrip talos-bootstrap untuk penyebaran kluster diunduh ke /opt/your_namedirektori (default adalah /opt/cozystack), dan file konfigurasi yang diperlukan, seperti patch-controlplane.yamldan patch.yaml, dibuat. File-file ini menentukan modul kernel yang akan dimuat dan image tempat instalasi akan dilakukan.

Pada akhirnya, isi direktori akan terlihat seperti ini:

Gbr. 3. Direktori /opt/cozystack

Host manajemen siap untuk pekerjaan lebih lanjut.

Booting dari Citra Sistem Talos Linux

Sistem operasi yang menjadi dasar Cozystack adalah Talos Linux. Ada beberapa cara untuk menginstal Cozystack:

  • PXE — untuk instalasi menggunakan server DHCP dan PXE sementara yang berjalan dalam kontainer Docker.
  • ISO — untuk instalasi menggunakan citra ISO.
  • Hetzner — untuk instalasi pada server Hetzner.

Kami akan menggunakan berkas ISO untuk instalasi. Pengembang Cozystack membuat dan menguji citra platform yang siap pakai dengan semua perangkat lunak yang diperlukan. Semua perangkat lunak juga menjalani pengujian kompatibilitas dengan platform dan distribusi Talos Linux.

Konfigurasi Sistem Awal

Setelah melakukan booting dari image, tampilan layarnya seperti ini. Sekarang, kita perlu mengonfigurasi pengaturan jaringan — untuk melakukannya, tekan F3 (jika menggunakan instalasi PXE, pengalamatan pada node dikonfigurasi secara otomatis).

Gambar 4. Layar Talos Linux setelah dimuat

Kami menetapkan alamat jaringan — Anda dapat menentukan beberapa DNS dan Time Server (dimasukkan dipisahkan oleh spasi atau koma). Klik “Simpan.”

Gbr. 5. Layar pengaturan Talos Linux

Demikian pula, konfigurasikan node yang tersisa. Saya menggunakan pengalamatan saya sendiri, jadi beberapa alamat IP dalam tangkapan layar akan diburamkan.

Memulai Instalasi dengan talos-bootstrap

Jalankan berkas ./talos-bootstraptanpa parameter apa pun untuk mendapatkan informasi bantuan.

Gbr. 6. talos-bootstrap (awal mula)

Setelah itu, jalankan ./talos-bootstrap install, dan pada jendela dialog pertama, ia akan menyarankan nama kluster default — yang cocok dengan direktori tempat skrip berada (secara default, nama akan menjadi nama cozystackyang Anda tentukan sendiri jika Anda belum menentukan nama Anda sendiri).

Gbr. 7. talos-bootstrap (penamaan kluster)

Tetapkan jaringan di mana node akan dicari.

Gbr. 8. talos-bootstrap (mencari node dalam jaringan yang ditentukan)

Skrip akan secara otomatis menemukan node dan menampilkannya — seperti yang dapat kita lihat, ketiga node kita ditemukan. Pada satu titik, penemuan node berhenti berfungsi pada host manajemen yang menjalankan AlmaLinux, tetapi saya tidak memecahkan masalah ini dan hanya beralih ke Ubuntu.

Anda juga dapat mencari node secara manual menggunakan perintah: nmap -Pn -n -p 50000 your_ip_network -vv | awk ‘/Discovered open port/ {print $NF}’.(Ini akan menghasilkan daftar IP.)

Gbr. 9. talos-bootstrap (memilih node untuk instalasi)

Pada tahap ini, pilih opsi “ControlPlane” dan klik OK (ketiga node dalam cluster telah diatur sebagai Control Plane).

Gbr. 10. talos-bootstrap (pilih peran node)

Selanjutnya, skrip mengambil semua pengaturan dari node (kami mengonfigurasinya saat kami mengatur pengaturan jaringan di Talos Linux, Gambar 5) dan menampilkannya ke konsol. Kami hanya perlu mengonfirmasi bahwa semuanya sudah benar.

Gbr. 11. talos-bootstrap (sebutkan nama host)

Memilih disk untuk menginstal sistem — bagi saya, itu sda.

Gbr. 12. talos-bootstrap (memilih disk untuk menginstal)

Setelah itu, antarmuka kita dengan alamat IP yang telah dikonfigurasi sebelumnya akan muncul (dalam kasus saya, ini adalah eno4). Setujui dan klik "OK".

Gbr. 13. talos-bootstrap (memilih antarmuka jaringan)

Pilih gateway kami, lalu setujui.

Gbr. 14. talos-bootstrap (gateway akan digunakan untuk akses Internet)

Jendela untuk memasukkan alamat server DNS akan muncul; Anda dapat menambahkannya dengan dipisahkan spasi. Setelah itu, klik “OK”.

Gbr. 15. talos-bootstrap (tentukan server DNS atau setujui yang disarankan)

Di jendela berikutnya, Anda perlu memasukkan IP mengambang. Mekanisme di Talos ini sangat mirip dengan cara kerja VRRP, tetapi alih-alih menggunakan protokol jaringan tingkat rendah untuk pemeriksaan status, mekanisme ini menggunakan kluster etcd yang disebarkan pada node Control Plane. IP mengambang digunakan untuk memastikan ketersediaan kluster yang tinggi di jaringan: IP ini "mengambang" di antara node, yang memungkinkan alamat IP berpindah tanpa mengubah konfigurasi. Masukkan IP gratis apa pun dari ruang alamat jaringan kami di sini (Anda dapat menggunakan IP yang sama seperti pada diagram topologi, misalnya, 192.168.100.10) — ini akan menjadi IP kluster.

Gbr. 16. talos-bootstrap (masukkan IP mengambang)

Setelah itu, akan muncul jendela dengan alamat IP kita. Setujui lagi.

Gambar 17. talos-bootstrap (API untuk kubelet)

Berikutnya, skrip akan menampilkan pengaturan yang diterapkan pada node master.

Gbr. 18. talos-bootstrap (konfigurasi akhir untuk memulai instalasi)

Klik “OK” dan tunggu hingga instalasi selesai. Selama proses instalasi, baris serupa akan muncul di node kita:

Gbr. 19. talos-bootstrap (layar Talos Linux)

Pada host manajemen di konsol lain, Anda dapat mengamati peningkatan konsumsi lalu lintas (menggunakan utilitas nload) — ini berarti bahwa gambar sedang diunduh dari jaringan.

Gbr. 20. nload (monitor beban jaringan)

Setelah instalasi, node akan di-boot ulang, dan bilah kemajuan akan menunjukkan 20%, lalu 50%, lalu 70%. Node akan di-boot ulang saat mencapai 70%. Tunggu lagi — kecepatan koneksi internet akan menentukan waktu tunggu: semakin cepat internet, semakin cepat unduhan.

Gambar 21. talos-bootstrap (proses instalasi)

Setelah menginstal node pertama cluster, kita diminta untuk menginstal etcd. Klik “Yes”.

Gbr. 22. talos-bootstrap (instalasi etcd)

Node yang tersisa dipasang dengan cara yang sama, kecuali untuk langkah kedua hingga terakhir. Jadi, mari kita lanjutkan dengan memasang node yang tersisa.

Gbr. 23. talos-bootstrap (proses instalasi sudah selesai)

Sekarang kita memiliki simpul pertama dari klaster masa depan kita.

Setelah instalasi, file baru akan muncul di /opt/your_namedirektori — lsperintah tersebut akan menghasilkan output berikut:

Gbr. 24. File baru di direktori

Di direktori ini, Anda perlu menjalankan serangkaian perintah — perintah tersebut akan membuat direktori dengan berkas konfigurasi di direktori pengguna. Berkas ini diperlukan agar kubectl dan talosctl dapat berfungsi.

mkdir  $HOME /.kube/ 
mkdir $HOME /.talos/
cp -i kubeconfig $HOME /.kube/ konfigurasi
cp -i talosconfig $HOME /.talos/konfigurasi

Jika Anda tidak melakukan ini, Anda harus memuat berkas konfigurasi secara manual: untuk talosctl, gunakan perintah talosctl --talosconfig=config_file, dan untuk kubectl, Anda harus menjalankannya KUBECONFIG=config_filedi konsol pengguna (yang hanya akan berlaku untuk sesi saat ini) atau secara konsisten menentukan berkas konfigurasi dengan kubectl --kubeconfig=config_file.

Selanjutnya, jalankan perintah:

kubectl dapatkan node

Dan Anda akan mendapatkan output berikut:

Gbr. 25. Node dalam cluster kami

Setelah memasang node yang tersisa, kami telah menyelesaikan pengaturan awal klaster. Pada titik ini, klaster hanya berisi beberapa komponen sistem, dan node berada dalam NotReadykeadaan seperti ini karena kami menonaktifkan pemasangan CNI dan kube-proxy dalam konfigurasi Talos. Komponen-komponen ini akan disediakan dan dikelola oleh Cozystack.

Menginstal Cozystack

Buat direktori bernama manifestsdan tempatkan file bernama cozystack-config.yamldi dalamnya:

apiVersion: v1 
jenis: ConfigMap
metadata:
nama: cozystack
namespace : cozy-system
data:
nama-bundel: "paas-full"
ipv4-pod-cidr: "10.244.0.0/16"
ipv4-pod-gateway: "10.244.0.1"
ipv4-svc-cidr: "10.96.0.0/16"
ipv4- join -cidr: "100.64.0.0/16"

Jalankan perintah berikut secara berurutan:

  1. kubectl create ns cozy-systemmembuat namespace baru di Kubernetes bernama cozy-system. Namespace digunakan untuk mengatur sumber daya dalam kluster Kubernetes.
  2. kubectl apply -f cozystack-config.yamlmenerapkan konfigurasi dari berkas yang ditentukan, merinci data konfigurasi yang disebutkan cozystackdalam cozy-systemnamespace. Berkas ini menguraikan jaringan yang akan digunakan dalam kluster.
  3. kubectl apply -f https://github.com/aenix-io/cozystack/raw/v0.7.0/manifests/cozystack-installer.yaml — perintah ini menerapkan konfigurasi dari URL yang ditentukan. Dalam kasus ini, URL mengarah ke file manifest di GitHub untuk menginstal Cozystack.
kubectl buat ns cozy-system 
kubectl terapkan -f cozystack-config.yaml
kubectl terapkan -f https://github.com/aenix-io/cozystack/raw/v0.7.0/manifests/cozystack-installer.yaml

Jalankan yang berikut ini:

whatch -n1 kubectl dapatkan hr -A

Dan sekarang, tunggu sampai negara READYmenjadi Truedalam semua NAMESPACEs.

Gambar 26. Instalasi komponen dalam proses cluster

Jika ini terjadi, kita dapat melanjutkan.

Konfigurasi subsistem disk

Jalankan perintah berikut:

alias linstor='kubectl exec -n cozy-linstor deploy/linstor-controller — linstor' 
daftar simpul linstor

Kita seharusnya mendapatkan keluaran berikut:

+-------------------------------------------------------+ 

| Node | NodeType | Alamat | Negara |

|==========================================================|

| srv1 | SATELIT | 192.168.100.11:3367 (SSL) | Daring |

| srv2 | SATELIT | 192.168.100.12:3367 (SSL) | Daring |

| srv3 | SATELIT | 192.168.100.13:3367 (SSL) | Daring |

+-------------------------------------------------------+
linstor daftar penyimpanan-fisik
+--------------------------------------+

| Ukuran | Rotasi | Node |

|============================================| |

107374182400 | Benar | srv3[/dev/nvme1n1,/dev/nvme0n1 ] |

| | | srv1[/dev/nvme1n1,/dev/nvme0n1] |

| | | srv2[/dev/nvme1n1,/dev/nvme0n1] |

+--------------------------------------------+

Buat kumpulan penyimpanan. Dalam kasus saya, ini adalah disk /dev/nvme1n1dan /dev/nvme0n1, tetapi Anda mungkin memiliki yang berbeda:

Bahasa Indonesia: linstor ps cdp zfs srv1 /dev/nvme1n1 /dev/nvme0n1 — data nama-kolam — data kolam penyimpanan 
linstor ps cdp zfs srv2 /dev/nvme1n1 /dev/nvme0n1 - data nama-kolam - data kolam penyimpanan
linstor ps cdp zfs srv3 /dev/nvme1n1 /dev/nvme0n1 - data nama-kolam - data kolam penyimpanan

Masukkan perintah:

linstor sp l

Mari kita lihat apa yang kita punya:

Gbr. 27. Daftar kolam penyimpanan

Sekarang mari kita buat kelas penyimpanan untuk penyimpanan persisten: sementara penyimpanan dasar kita sudah dikonfigurasi, kita perlu memberi tahu Kubernetes bahwa ia dapat membuat volume dalam penyimpanan ini. Ini dilakukan dengan menggunakan sumber daya StorageClass. Jadi, kita akan membuat dua kelas:

  • local— untuk penyimpanan lokal.
  • replicated— untuk data yang memerlukan replikasi.
kubectl  create  -f-  <<EOT 

---
apiVersion: storage.k8s.io/v1
jenis: StorageClass
metadata:
nama: lokal
anotasi:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: linstor.csi.linbit.com
parameter:
linstor.csi.linbit.com/storagePool: "data"
linstor.csi.linbit.com/layerList: "storage"
linstor.csi.linbit.com/allowRemoteVolumeAccess: "false"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
---
apiVersion: storage.k8s.io/v1
jenis: StorageClass
metadata:
nama: direplikasi
provisioner: linstor.csi.linbit.com
parameter:
linstor.csi.linbit.com/storagePool: "data"
linstor.csi.linbit.com/autoPlace: "3"
linstor.csi.linbit.com/layerList: "penyimpanan drbd"
linstor.csi.linbit.com/allowRemoteVolumeAccess: "true"
properti.linstor.csi.linbit.com/DrbdOptions/auto-quorum: suspend-io
properti.linstor.csi.linbit.com/DrbdOptions/Resource/on-no-data-accessible: suspend-io
properti.linstor.csi.linbit.com/DrbdOptions/Resource/on-suspended-primary-outdated: force-secondary
properti.linstor.csi.linbit.com/DrbdOptions/Net/rr-conflict: coba-sambungkan kembali
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
EOT

Masukkan perintah:

kubectl dapatkan kelas penyimpanan

Mari kita lihat apa yang kita punya:

Gbr. 28. Daftar kelas penyimpanan

Konfigurasi Jaringan

Tetapkan pool untuk mengalokasikan alamat IP dari subnet yang telah kita tentukan sebelumnya (lihat Gambar 1). Catatan: Jika Anda memiliki ruang alamat yang berbeda (misalnya, 192.168.100.200/192.168.100.250), Anda perlu membuat perubahan pada konfigurasi karena pengaturan di sini diterapkan segera tanpa membuat file. Namun, Anda dapat menyimpan konfigurasi ke file dan menerapkan manifest menggunakan kubectl apply -f path_to_file.

kubectl  create  -f-  <<EOT 
---
apiVersion: metallb.io/v1beta1
jenis: L2Advertisement
metadata:
nama: cozystack
namespace: cozy-metallb
spesifikasi:
ipAddressPools:
- cozystack
---
apiVersion: metallb.io/v1beta1
jenis: IPAddressPool
metadata:
nama: cozystack
namespace: cozy-metallb
spesifikasi:
alamat:
- 192.168 .100 .200 -192.168 .100 .250
autoAssign: benar
hindariBuggyIPs: salah
EOT

Konfigurasi Akses untuk UI Web Cluster

Ambil tokennya:

kubectl dapatkan rahasia -n penyewa-root penyewa-root -o go-template='{{ printf “%s\n” (indeks .data “token” | base64decode) }}'printf “%s\n” (indeks .data “token” | dekode base64) }}'

Catatan: Dengan menjalankan perintah ini pada host manajemen, kita akan mendapatkan token yang harus digunakan untuk mengakses antarmuka web Cozystack dari host manajemen yang sama. Untuk melakukannya, jalankan perintah berikut pada host manajemen:

kubectl port-forward -n cozy-dashboard svc/dashboard 8000:80

Sekarang, buka tautan http://localhost:8000 dan masukkan token yang dibuat sebelumnya.

Gbr. 29. Jendela otorisasi

Klik “tenant-root”:

Gbr. 30. Pilih tenant-root

Klik “Upgrade” untuk menerapkan ulang aplikasi dengan parameter yang kita butuhkan:

Gbr. 31. Lanjutkan untuk memperbarui tenant-root

Jika halaman tidak segera diperbarui, tekan F5.

Gbr. 32. Jendela untuk membuat perubahan pada tenant-root

Masukkan nilai Anda; kita akan mengetik kuber.gohost.kzdi bidang host, gerakkan slider dari falseke true, dan klik “DEPLOY”.

Gbr. 33. Menambahkan komponen dan memperbarui tenant-root

Anda akan diarahkan ke halaman tempat Anda dapat melihat nilai yang dikonfigurasi:

Gbr. 34. tenant-root diperbarui

Sekarang, masukkan perintah berikut di konsol untuk melihat daftar semua PersistentVolumeClaims (PVC) di namespace yang ditentukan tenant-rootdi kluster:

kubectl dapatkan pvc -n penyewa-root

Jika output Anda mirip dengan output saya, maka semuanya baik-baik saja:

Gbr. 35. Daftar PVC

Kembali ke antarmuka web di halaman utama, Anda akan melihat sesuatu seperti ini:

Gbr. 36. Halaman utama Cozystack

Memeriksa pod

Untuk memeriksa pod, jalankan perintah standar:

kubectl dapatkan pod -n penyewa-root

Outputnya akan terlihat seperti ini:

Gbr. 37. Daftar semua pod di namespace `tenant-root`

Sekarang jalankan perintah berikut:

kubectl dapatkan svc -n penyewa-root root-ingress-controller

Pada output, kita akan melihat alamat IP publik dari pengontrol ingress:

NAMA JENIS CLUSTER-IP IP EKSTERNAL PORT(S) USIA 
root-ingress-controller LoadBalancer 10.96.58.227 192.168.100.200 80:30149/TCP,443:32152/TCP 7d8h

Pemantauan

Setelah memasang platform Cozystack, kami telah mengonfigurasikan pemantauan berdasarkan Grafana. Kami menyiapkan pemantauan selama pemutakhiran tenant-root (Gambar 27–31). Mari kita verifikasi pengaturan pemantauan.

Untuk memulai, pilih ubin “pemantauan” di halaman utama:

Gbr. 38. Akses ke pemantauan

Klik tombol “Upgrade”. Di kolom host, verifikasi nilai Anda (misalnya, grafana.kuber.gohost.kz). Anda dapat memperoleh kredensial dengan melihat atau menyalin passworddan user.

Gbr. 38. Mengambil data otorisasi

Untuk mengakses antarmuka web, Anda perlu memperbarui /etc/hostsfile pada host manajemen dengan data berikut.

192.168.100.200 gafana.kuber.gohost.kz

Pada host ini, buka peramban web dan masukkan grafana.kuber.gohost.kz. Ini akan membuka antarmuka Grafana.

Gbr. 39. Jendela login sistem pemantauan

Sebagai hasil dari langkah-langkah yang telah kami ambil, kami telah mencapai hal berikut:

  1. Sebuah klaster tiga node yang berbasis pada Talos Linux.
  2. Penyimpanan yang menyertakan LINSTOR dengan ZFS dan DRBD.
  3. Antarmuka yang mudah digunakan.
  4. Pemantauan yang telah dikonfigurasikan sebelumnya.

Dalam artikel berikutnya dari seri ini, kita akan menjelajahi Kubernetes di Kubernetes, memahami cara kerja Kubernetes as a Service di Cozystack, dan memeriksa katalog aplikasi, tempat aplikasi dapat disebarkan hanya dengan beberapa klik. Kita akan menetapkan alamat IP asli ke kluster dan mengaturnya untuk akses jaringan publik.

Dan selesailah sudah — kami telah berhasil memasang cluster Cozystack! Nantikan informasi lebih lanjut… 😊

Tautan tambahan

Tidak ada komentar:

Posting Komentar