Penyiapan: Instal Rancher ke Cluster Kubernetes yang Ada untuk Ketersediaan Tinggi
Ada banyak tutorial tentang Rancher yang diinstal pada Docker. Atau Penerapan Kubernetes dalam Rancher. Namun, sangat sedikit tentang Rancher yang diinstal pada Kluster Kubernetes yang Ada. Tutorial ini akan membantu mengatasinya.
Berikut prasyarat sebelum menginstal rancher ke klaster Kubernetes yang ada:
- Pengaturan SSH & Konfigurasi IP Statis untuk setiap node
- Pengaturan Keepalived
- Pengaturan Kubernetes v1.24 (diperlukan)
- Pengaturan Calico
- Pengaturan Nginx Ingress
- Pengaturan Metallb
Panduan ini mengasumsikan bahwa Anda melakukan pengaturan Kubernetes baremetal.
Saat artikel ini ditulis, Rancher mengharuskan versi server Kubernetes kurang dari v1.25. Anda dapat mengetahui versi Anda dengan mengetik:
kubectl versi --short
root@kmaster1:/# kubectl version --short
Flag --short telah ditinggalkan, dan akan dihapus di masa mendatang. Output --short akan menjadi default.
Versi Klien: v1.24.0
Versi Kustomisasi: v4.5.4
Versi Server: v1.24.11
Jika Anda tidak memiliki < v1.25, instalasi rancher ini tidak akan berfungsi. Jadi, Anda harus menyesuaikan versi Kubernetes Anda hingga muncul tulisan < v1.25. Saya sarankan untuk memulai ulang dari awal jika Anda tidak memiliki banyak hal yang terinstal. Saya tidak dapat menurunkan versi dengan benar, jadi saya memulai ulang dari awal.
Perintah untuk menghancurkan seluruh kluster kubernetes dan memulai ulangnya adalah sebagai berikut. Anda harus melakukannya pada setiap node:
Bahasa Indonesia: setel ulang kubeadm
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*
sudo dpkg --remove --force-all kubeadm kubectl kubelet kubernetes-cni kube*
sudo apt-get autoremove
sudo rm -rf ~/.kube
sudo reboot
Saat saya menginstal ulang Kubernetes, inilah yang saya ketik untuk memastikan versi yang benar terinstal
sudo apt perbarui
sudo apt-get install -y kubelet=1.24.0-00 kubeadm=1.24.0-00 kubectl=1.24.0-00 --izinkan-penurunan-versi --izinkan-perubahan-paket-yang-dipegang
sudo apt-mark hold kubelet kubeadm kubectl
Setelah itu, saya memasang paket-paket lainnya. Paket yang paling menonjol adalah Metallb. Paket ini diperlukan (atau beberapa penugasan IP eksternal lainnya) agar Rancher dapat berfungsi. Jika Anda tidak memiliki Penugasan IP eksternal di Kluster Kubernetes Anda, berikut adalah langkah-langkah untuk menyiapkannya.
mkdir /metallb-config
kubectl terapkan -f https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/namespace.yaml
kubectl terapkan -f https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/metallb.yaml
kubectl buat rahasia generik -n metallb-system daftar anggota - dari-literal=kunci rahasia="$(openssl rand -base64 128)"
nano /metallb-config/metallb-config.yaml
Salin dan tempel berkas bernama metallb-config.yaml dari repositori ke komputer lokal Anda dan edit rentang IP agar sesuai dengan lingkungan Anda. Kemudian terapkan konfigurasi ke kluster.
File tersebut akan terlihat sangat mirip dengan ini. Salin dan tempel file tersebut ke dalam file yaml yang muncul saat Anda menjalankan perintah terakhir:
apiVersion: v1
jenis: ConfigMap
metadata:
nama: konfigurasi
namespace: metallb-system
data:
konfigurasi: |
address-pools:
- nama:
protokol default: layer2
alamat:
- 192.168.1.120-192.168.1.250
Saya ingin menarik perhatian pada baris yang bertuliskan 192.168.1.120–192.168.1.250. Ini adalah bagian di mana Anda harus mencari tahu rentang alamat IP yang dapat diterima oleh router (server dns) Anda. Biasanya, cara untuk mengetahuinya adalah dengan melakukan semacam pemindaian IP, lalu mengetahui 3 blok pertama. Jadi misalnya, saya tahu bahwa router saya akan menerima 192.168.1 sebagai alamat yang valid. Blok terakhir, 120–250, adalah alamat yang saya izinkan untuk ditetapkan Metallb sebagai alamat IP eksternal yang valid untuk semua layanan yang ingin saya gunakan sebagai IP eksternal di kluster kubernetes. Karena Rancher memerlukan IP eksternal, inilah alasan kita memerlukan Metallb.
Setelah itu, terapkan metallb-config ke dalam kluster kubernetes.
kubectl terapkan -f /metallb-config/metallb-config.yaml
Hal terakhir yang perlu diperhatikan sebelum kita mulai menyiapkan Rancher adalah Nginx-Ingress Controller. Berikut ini adalah perintah untuk menyiapkannya:
Bahasa Indonesia: git klon https://github.com/nginxinc/kubernetes-ingress.git --branch v3.0.2
cd kubernetes-ingress/deployments/helm-chart
helm repo tambahkan nginx-stabil https://helm.nginx.com/stabil
helm repo perbarui
helm instal nginx-ingress nginx-stabil/nginx-ingress --namespace=nginx-ingress --create-namespace=true
helm instal nginx-ingress .
kubectl terapkan -f crds/ --namespace=nginx-ingress
helm tingkatkan nginx-ingress nginx-stabil/nginx-ingress --namespace=nginx-ingress
Mari kita mulai menyiapkan rancher:
Pertama Anda membutuhkan helm:
curl -fsSL -o dapatkan_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 dapatkan_helm.sh
./get_helm.sh
Kemudian kita akan menyiapkan namespace untuk semua hal yang terkait dengan rancher. Kita akan menyebutnya Cattle-system. Alasan kita melakukannya dengan cara ini adalah untuk memastikan setiap layanan terpasang dengan rapi dan terorganisasi di tempat yang tepat.
helm repo tambahkan rancher-stabil https://releases.rancher.com/server-charts/stabil
helm repo perbarui
kubectl hapus namespace sistem-ternak
kubectl buat namespace sistem-ternak
Saya ingin memanggil baris: kubectl delete namespace cow-system
Alasan saya membuat hal tersebut di atas adalah untuk memastikan bahwa saya menghapus versi sebelumnya dari sistem ternak yang saya miliki sebelum membuat ulang. Dengan cara seperti ini saya memastikan bahwa saya tidak memiliki versi sebelumnya yang tersisa dari penginstalan ulang apa pun. Merupakan kebiasaan yang baik untuk melakukan ini sehingga Anda tidak berakhir dengan versi sebelumnya yang rusak. Hal ini akan terjadi lagi di seluruh sisa artikel ini.
Selanjutnya kita akan menginstal cert-manager
Bahasa Indonesia: kubectl terapkan --validasi=false -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml
kubectl buat namespace cert-manager
helm repo tambahkan jetstack https://charts.jetstack.io
helm repo perbarui
helm instal \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--versi v1.7.1
kubectl dapatkan pod --namespace cert-manager
Berikutnya kita akan membuat loadbalancer untuk rancher:
Bahasa Indonesia: mkdir -p /var/lib/rancher
mkdir -p /kubernetes_config/rancher/
kubectl hapus -f /kubernetes_config/rancher/rancher-loadbalancer.yml
rm /kubernetes_config/rancher/rancher-loadbalancer.yml
sudo nano /kubernetes_config/rancher/rancher-loadbalancer.yml
Salin dan tempel file yaml berikut untuk rancher-loadbalancer.yml
apiVersion: v1
jenis: Layanan
metadata:
nama: rancher-loadbalancer
namespace: sistem-ternak
anotasi:
nginx.ingress.kubernetes.io/proxy-protocol: "true"
spesifikasi:
pemilih:
aplikasi: rancher
port:
- nama: http
protokol: TCP
port: 80
targetPort: 80
- nama: https
protokol: TCP
port: 443
targetPort: 443
jenis: LoadBalancer
---
apiVersion: networking.k8s.io/v1
jenis: Masuk
metadata:
nama: rancher-ingress
namespace: sistem-ternak
anotasi:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spesifikasi:
aturan:
- host: rancher.example.com
http:
jalur:
- jalur: /
pathType: Awalan
backend:
layanan:
nama: rancher
port:
nama: http
Pastikan untuk mengubah “rancher.example.com” ke url apa pun yang Anda inginkan. URL tersebut tidak harus berupa url publik yang valid.
Kemudian terapkan perubahan ke Kubernetes Cluster:
kubectl terapkan -f /kubernetes_config/rancher/rancher-loadbalancer.yml
Ketika saya menjalankan perintah berikut untuk melihat apakah saya menerapkan loadbalancer dengan benar:
kubectl -n sistem ternak dapatkan semuanya
Tampilannya akan sangat mirip dengan:
NAMA JENIS CLUSTER-IP IP EKSTERNAL PORT(S) USIA
layanan/peternakan-loadbalancer LoadBalancer 10.109.90.178 192.168.1.121 80:32600/TCP,443:31603/TCP 74m
Perhatikan bahwa di bawah IP EKSTERNAL, ia memiliki Alamat IP yang ditetapkan padanya. Itu berarti Metallb berfungsi dengan baik. Jika Anda tidak memiliki IP Eksternal di bawahnya. Maka Metallb tidak terinstal dengan benar. Jika ia bolak-balik antara menampilkan ip eksternal dan tertunda (ketika Anda menjalankan ulang perintah get all), itu berarti ada penugasan ip eksternal lain dan keduanya memperebutkan kendali atasnya. Jadi Anda perlu menyelesaikannya.
Jika Anda mendapatkan ip eksternal, berarti Anda baik-baik saja. Kita bisa melanjutkan dari sana. Perlu diingat bahwa itulah ip eksternal yang akan didapatkan peternak.
Selanjutnya kita akan menginstal rancher:
helm instal rancher rancher-stable/rancher \
--namespace sistem-ternak \
--atur nama-host=peternak.contoh.com
Ini akan memakan waktu yang sangat lama. Saya butuh waktu sekitar 15 menit agar semuanya berjalan dengan baik. Anda dapat memeriksa status penyebaran dengan cara ini:
kubectl -n peluncuran status sistem ternak deploy/peternak
Anda dapat mengetahui bahwa rancher telah berhasil diterapkan ketika Anda mendapatkan ini:
penyebaran "rancher" berhasil diluncurkan
Anda juga dapat memeriksa apakah rancher berhasil diterapkan dengan menjalankan:
kubectl -n sistem ternak dapatkan semuanya
Perhatikan pod dari output di bawah ini. Jika Anda melihat Ready 1/1 pada semua pod rancher, dan ip eksternal dari rancher-loadbalancer. Anda baik-baik saja. Seharusnya terlihat sangat mirip dengan output tersebut.
NAMA SIAP STATUS MULAI ULANG USIA
pod/rancher-6757f6b675-687rc 1/1 Berjalan 3 (66m lalu) 74m
pod/rancher-6757f6b675-wvvmw 1/1 Berjalan 1 (71m lalu) 74m
pod/rancher-6757f6b675-zwnsl 1/1 Berjalan 1 (71m lalu) 74m
pod/rancher-webhook-577b778f8f-trkqw 1/1 Berjalan 0 62m
NAMA JENIS IP-KLUSTER IP-EKSTERNAL PORT USIA
service/rancher ClusterIP 10.106.146.246 <none> 80/TCP,443/TCP 74m
service/rancher-loadbalancer LoadBalancer 10.109.90.178 192.168.1.121 80:32600/TCP,443:31603/TCP 74m
layanan/rancher-webhook ClusterIP 10.110.173.40 <none> 443/TCP 62m
layanan/webhook-layanan ClusterIP 10.104.1.120 <none> 443/TCP 62m NAMA SIAP TERBARU TERSEDIA USIA deployment.apps/rancher 3/3 3 3 74m deployment.apps/rancher-webhook 1/1 1 1 62m NAMA YANG DIINGINKAN USIA SIAP
SAAT INI replicaset.apps/rancher-6757f6b675 3 3 3 74m replicaset.apps/rancher-webhook-577b778f8f 1 1 1 62m
Setelah sekitar 15 menit penyebarannya. Anda dapat membuka browser dan mengetik alamat ip eksternal rancher-loadbalancer. Dalam kasus saya, alamatnya adalah 192.168.1.121. MILIK ANDA AKAN BERBEDA. Jadi, Anda tinggal menyalin dan menempelkan alamat ip eksternal Anda ke browser.
Begitu Anda melihat halaman tersebut. Anda telah menginstal rancher dengan benar!
Jika Anda mengalami masalah, Anda dapat menggunakan perintah berikut untuk mencoba mendiagnosis masalah dengan memeriksa log:
kubectl dapatkan acara --all-namespaces --sort-by='.metadata.creationTimestamp'
kubectl -n sistem-ternak jelaskan pod
kubectl -n sistem-ternak dapatkan semua
kubectl -n sistem-ternak dapatkan pod
kubectl -n sistem-ternak log <nama-pod>
Perlu diingat bahwa jika Anda ingin mengatur url untuk rancher dengan benar, Anda perlu mengelola url dengan server DNS, baik secara internal maupun eksternal.
Untuk penggunaan internal, cukup gunakan Pi-Hole. Saya mencoba Bind9 enterprise dan terus-menerus mengalami masalah. Jadi, untuk menghindari sakit kepala, gunakan saja Pi-Hole. Membuat rancher.example.com berfungsi dengan baik adalah artikel terpisah.
Tidak ada komentar:
Posting Komentar