Minggu, 06 Oktober 2024

K8S-install rancher

 

Penyiapan: Instal Rancher ke Cluster Kubernetes yang Ada untuk Ketersediaan Tinggi

https://oopflow.medium.com/setup-install-rancher-onto-existing-kubernetes-cluster-for-high-availability-7351f0284592
Mengalir

Mengikuti

Waktu baca 7 menit

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:

  1. Pengaturan SSH & Konfigurasi IP Statis untuk setiap node
  2. Pengaturan Keepalived
  3. Pengaturan Kubernetes v1.24 (diperlukan)
  4. Pengaturan Calico
  5. Pengaturan Nginx Ingress
  6. 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