Memasang Cluster Kubernetes yang Dikelola oleh Cozystack: Panduan Lengkap oleh Gohost dan Ænix
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:
- VPS 2G/2CPU (meskipun PC rumahan biasa juga dapat digunakan) — 1 unit.
- 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).
- 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.
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_name
direktori (default adalah /opt/cozystack
), dan file konfigurasi yang diperlukan, seperti patch-controlplane.yaml
dan 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:
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).
Kami menetapkan alamat jaringan — Anda dapat menentukan beberapa DNS dan Time Server (dimasukkan dipisahkan oleh spasi atau koma). Klik “Simpan.”
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-bootstrap
tanpa parameter apa pun untuk mendapatkan informasi bantuan.
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 cozystack
yang Anda tentukan sendiri jika Anda belum menentukan nama Anda sendiri).
Tetapkan jaringan di mana node akan dicari.
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.)
Pada tahap ini, pilih opsi “ControlPlane” dan klik OK (ketiga node dalam cluster telah diatur sebagai Control Plane).
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.
Memilih disk untuk menginstal sistem — bagi saya, itu sda
.
Setelah itu, antarmuka kita dengan alamat IP yang telah dikonfigurasi sebelumnya akan muncul (dalam kasus saya, ini adalah eno4
). Setujui dan klik "OK".
Pilih gateway kami, lalu setujui.
Jendela untuk memasukkan alamat server DNS akan muncul; Anda dapat menambahkannya dengan dipisahkan spasi. Setelah itu, klik “OK”.
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.
Setelah itu, akan muncul jendela dengan alamat IP kita. Setujui lagi.
Berikutnya, skrip akan menampilkan pengaturan yang diterapkan pada node master.
Klik “OK” dan tunggu hingga instalasi selesai. Selama proses instalasi, baris serupa akan muncul di node kita:
Pada host manajemen di konsol lain, Anda dapat mengamati peningkatan konsumsi lalu lintas (menggunakan utilitas nload) — ini berarti bahwa gambar sedang diunduh dari 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.
Setelah menginstal node pertama cluster, kita diminta untuk menginstal etcd. Klik “Yes”.
Node yang tersisa dipasang dengan cara yang sama, kecuali untuk langkah kedua hingga terakhir. Jadi, mari kita lanjutkan dengan memasang node yang tersisa.
Sekarang kita memiliki simpul pertama dari klaster masa depan kita.
Setelah instalasi, file baru akan muncul di /opt/your_name
direktori — ls
perintah tersebut akan menghasilkan output berikut:
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_file
di 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:
Setelah memasang node yang tersisa, kami telah menyelesaikan pengaturan awal klaster. Pada titik ini, klaster hanya berisi beberapa komponen sistem, dan node berada dalam NotReady
keadaan 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 manifests
dan tempatkan file bernama cozystack-config.yaml
di 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:
kubectl create ns cozy-system
membuat namespace baru di Kubernetes bernamacozy-system
. Namespace digunakan untuk mengatur sumber daya dalam kluster Kubernetes.kubectl apply -f cozystack-config.yaml
menerapkan konfigurasi dari berkas yang ditentukan, merinci data konfigurasi yang disebutkancozystack
dalamcozy-system
namespace. Berkas ini menguraikan jaringan yang akan digunakan dalam kluster.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 READY
menjadi True
dalam semua NAMESPACE
s.
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/nvme1n1
dan /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:
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:
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.
Klik “tenant-root”:
Klik “Upgrade” untuk menerapkan ulang aplikasi dengan parameter yang kita butuhkan:
Jika halaman tidak segera diperbarui, tekan F5.
Masukkan nilai Anda; kita akan mengetik kuber.gohost.kz
di bidang host, gerakkan slider dari false
ke true
, dan klik “DEPLOY”.
Anda akan diarahkan ke halaman tempat Anda dapat melihat nilai yang dikonfigurasi:
Sekarang, masukkan perintah berikut di konsol untuk melihat daftar semua PersistentVolumeClaims (PVC) di namespace yang ditentukan tenant-root
di kluster:
kubectl dapatkan pvc -n penyewa-root
Jika output Anda mirip dengan output saya, maka semuanya baik-baik saja:
Kembali ke antarmuka web di halaman utama, Anda akan melihat sesuatu seperti ini:
Memeriksa pod
Untuk memeriksa pod, jalankan perintah standar:
kubectl dapatkan pod -n penyewa-root
Outputnya akan terlihat seperti ini:
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:
Klik tombol “Upgrade”. Di kolom host, verifikasi nilai Anda (misalnya, grafana.kuber.gohost.kz
). Anda dapat memperoleh kredensial dengan melihat atau menyalin password
dan user
.
Untuk mengakses antarmuka web, Anda perlu memperbarui /etc/hosts
file 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.
Sebagai hasil dari langkah-langkah yang telah kami ambil, kami telah mencapai hal berikut:
- Sebuah klaster tiga node yang berbasis pada Talos Linux.
- Penyimpanan yang menyertakan LINSTOR dengan ZFS dan DRBD.
- Antarmuka yang mudah digunakan.
- 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
- Cozystack di Talos Linux, Andrei Kvapil, Talos Linux Instal Fest'24
- DIY: Buat Cloud Anda Sendiri dengan Kubernetes (Bagian 1)
- DIY: Buat Cloud Anda Sendiri dengan Kubernetes (Bagian 2)
- DIY: Buat Cloud Anda Sendiri dengan Kubernetes (Bagian 3)
- Komunitas Cozystack
- Pertemuan komunitas Cozystack (kalender)
- Dokumentasi Cizystack
Tidak ada komentar:
Posting Komentar