Distribuzione del driver CSI BeeGFS
Istruzioni per la distribuzione del driver BeeGFS CSI in un ambiente Kubernetes.
Dispiegamento con intercapedine d'aria
Per eseguire una distribuzione Air-Gapped (offline), è necessario scaricare in anticipo sia i file di configurazione YAML di Kubernetes sia le immagini dei container richieste su un sistema con accesso a Internet. Questi file devono quindi essere trasferiti al/ai nodo/i di destinazione in cui verrà installato il driver CSI.
Recupera il driver e le immagini
Per distribuire il driver CSI BeeGFS in un ambiente air-gapped, procedere come segue.
-
Clona il repository GitHub del driver BeeGFS CSI sul tuo sistema con accesso a Internet:
git clone https://github.com/ThinkParQ/beegfs-csi-driver.git -
Acquisisci e registra i tag delle versioni più recenti delle immagini elencate di seguito. Puoi visitare i registri ufficiali o le release GitHub per ciascuna immagine per determinare i tag della versione più recente:
Nome dell'immagine URL/riferimento del registro driver beegfs-csi
https://github.com/ThinkParQ/beegfs-csi-driver/pkgs/container/beegfs-csi-driver
csi-provisioner
https://github.com/kubernetes-csi/external-provisioner/releases
csi-resizer
sonda di vitalità
csi-node-driver-registrar
https://github.com/kubernetes-csi/node-driver-registrar/releases
-
Estrai ogni immagine sul tuo sistema usando containerd, assicurandoti di sostituire
<latest-tag>con l'ultimo tag effettivo per ogni immagine:ctr -n k8s.io images pull ghcr.io/thinkparq/beegfs-csi-driver:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-provisioner:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-resizer:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/livenessprobe:<latest-tag> ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-node-driver-registrar:<latest-tag> -
Ogni immagine estratta deve essere esportata separatamente
.tarfile. Ciò è necessario per trasferire le immagini nell'ambiente Air-Gapped e importarle in containerd sul sistema di destinazione. Per esempio:ctr -n k8s.io images export beegfs-csi-driver_<latest-tag>.tar ghcr.io/thinkparq/beegfs-csi-driver:<latest-tag> ctr -n k8s.io images export csi-provisioner_<latest-tag>.tar registry.k8s.io/sig-storage/csi-provisioner:<latest-tag> ctr -n k8s.io images export csi-resizer_<latest-tag>.tar registry.k8s.io/sig-storage/csi-resizer:<latest-tag> ctr -n k8s.io images export livenessprobe_<latest-tag>.tar registry.k8s.io/sig-storage/livenessprobe:<latest-tag> ctr -n k8s.io images export csi-node-driver-registrar_<latest-tag>.tar registry.k8s.io/sig-storage/csi-node-driver-registrar:<latest-tag>Ripetere questo comando di esportazione per ogni immagine richiesta, sostituendo il nome dell'immagine e il tag come appropriato.
-
Copia il repository del driver CSI BeeGFS e tutti i file esportati
.tarfile nel tuo ambiente Air-Gapped utilizzando il metodo che preferisci. Per questa configurazione, salva ilbeegfs-csi-driverfile a/home/<User>/beegfs-csi-drivere le immagini a/home/<User>/beegfs-csi-images.
Importa le immagini richieste
-
Vai al
/home/<User>/beegfs-csi-imagesdirectory in cui vengono salvate le immagini e importare ciascuna immagine utilizzando containerd. Per esempio:ctr -n k8s.io images import beegfs-csi-driver_<latest-tag>.tar ctr -n k8s.io images import csi-provisioner_<latest-tag>.tar ctr -n k8s.io images import csi-resizer_<latest-tag>.tar ctr -n k8s.io images import livenessprobe_<latest-tag>.tar ctr -n k8s.io images import csi-node-driver-registrar_<latest-tag>.tar -
Eseguire il seguente comando per verificare che le immagini siano state caricate in containerd:
crictl images
Configurare e distribuire le sovrapposizioni del driver CSI
-
Vai al
/home/<User>/beegfs-csi-driverelenco. -
Per impostazione predefinita, le configurazioni di sovrapposizione sono pensate per le distribuzioni online. Per eseguire una distribuzione air-gapped è necessario modificare la configurazione dell'overlay. Copia la cartella di sovrapposizione "predefinita" in una nuova sovrapposizione, ad esempio
beegfs-overlay:cp -r deploy/k8s/overlays/default deploy/k8s/overlays/beegfs-overlay -
Modifica il
deploy/k8s/overlays/beegfs-overlay/kustomization.yamlfile. Rimuovi il commento e aggiorna ilimagessezione con i tag esatti che hai scaricato:- name: ghcr.io/thinkparq/beegfs-csi-driver newTag: <latest-tag> # digest: sha256:eb7ff01259e6770d0103f219e11b7ff334c9d9102a29ea0af95a3c0d7aec1ae3 - name: k8s.gcr.io/sig-storage/csi-provisioner newName: registry.k8s.io/sig-storage/csi-provisioner newTag: <latest-tag> - name: k8s.gcr.io/sig-storage/csi-resizer newName: registry.k8s.io/sig-storage/csi-resizer newTag: <latest-tag> - name: k8s.gcr.io/sig-storage/livenessprobe newName: registry.k8s.io/sig-storage/livenessprobe newTag: <latest-tag> - name: k8s.gcr.io/sig-storage/csi-node-driver-registrar newName: registry.k8s.io/sig-storage/csi-node-driver-registrar newTag: <latest-tag> -
Imposta Kubernetes per utilizzare le immagini caricate localmente in containerd modificando la policy di pull delle immagini da
AlwaysANever. Crea un file denominatoimage-pull-policy.yamlnel tuodeploy/k8s/overlays/beegfs-overlay/directory con il seguente contenuto:# Patch for controller kind: StatefulSet apiVersion: apps/v1 metadata: name: csi-beegfs-controller spec: template: spec: containers: - name: beegfs imagePullPolicy: Never - name: csi-provisioner imagePullPolicy: Never - name: csi-resizer imagePullPolicy: Never # Patch for node kind: DaemonSet apiVersion: apps/v1 metadata: name: csi-beegfs-node spec: template: spec: containers: - name: beegfs imagePullPolicy: Never - name: node-driver-registrar imagePullPolicy: Never - name: liveness-probe imagePullPolicy: NeverCollocamento imagePullPolicy: Nevergarantisce che Kubernetes utilizzi le immagini caricate in containerd e non tenti di estrarle da registri esterni. -
Aprire
deploy/k8s/overlays/beegfs-overlay/kustomization.yamle aggiungere la seguente sezione:patchesStrategicMerge: - image-pull-policy.yamlIL patchesStrategicMergesezione consente di applicare patch personalizzate, ad esempio modificando ilimagePullPolicysopra i manifesti Kubernetes di base. Verifica il percorso versoimage-pull-policy.yamlè corretto rispetto al tuokustomization.yamlfile.
Installa il driver CSI BeeGFS
-
Installa il driver BeeGFS CSI utilizzando la tua sovrapposizione personalizzata. Questo passaggio applica tutte le modifiche alla configurazione, incluso l'uso di immagini importate localmente e la policy di estrazione delle immagini aggiornata.
Dalla radice del repository del driver CSI BeeGFS clonato, esegui:
kubectl apply -k deploy/k8s/overlays/beegfs-overlay -
Procedere alDistribuisci l'applicazione di esempio sezione per distribuire e convalidare la configurazione del driver BeeGFS CSI.
Distribuzione online
Se i nodi Kubernetes hanno accesso a Internet, è possibile distribuire direttamente il driver BeeGFS CSI senza dover scaricare o trasferire manualmente le immagini dei container. Una volta distribuiti, i pod scaricheranno automaticamente le immagini da image-hub e attiveranno i servizi richiesti.
Recupera il repository dei driver
-
Clona il repository GitHub del driver CSI BeeGFS sul tuo sistema locale:
git clone https://github.com/ThinkParQ/beegfs-csi-driver.git
Configurare il driver
-
Passare alla directory del repository clonato e, se necessario, aggiornare i file di configurazione nella directory di overlay predefinita:
ls deploy/k8s/overlays/default/Dovresti vedere file come:
csi-beegfs-config.yaml csi-beegfs-connauth.yaml kustomization.yaml namespace.yaml patches/
-
Se il file di configurazione del client BeeGFS non è denominato
/etc/beegfs/beegfs-client.conf, crea un collegamento simbolico con questo nome esatto che punti al tuo file di configurazione:ln -s /path/to/your/beegfs-client.conf /etc/beegfs/beegfs-client.confIl driver CSI richiede che il file di configurazione si trovi in /etc/beegfs/beegfs-client.confe avere esattamente quel nome. -
Se è necessario personalizzare impostazioni quali classi di archiviazione, segreti o autenticazione della connessione, modificare i file pertinenti in
deploy/k8s/overlays/default/prima della distribuzione.
Installa il driver CSI BeeGFS
-
Installa l'overlay predefinito utilizzando
kubectl. In questo modo verranno automaticamente estratte le immagini richieste dai rispettivi registri e create tutte le risorse Kubernetes necessarie:kubectl apply -k deploy/k8s/overlays/default -
Verificare che le risorse siano state create e che i pod siano in esecuzione:
kubectl get pods -n beegfs-csi -
Esempio di output:
namespace/beegfs-csi created serviceaccount/csi-beegfs-controller-sa created serviceaccount/csi-beegfs-node-sa created role.rbac.authorization.k8s.io/csi-beegfs-privileged-scc-role created clusterrole.rbac.authorization.k8s.io/csi-beegfs-provisioner-role created rolebinding.rbac.authorization.k8s.io/csi-beegfs-privileged-scc-binding created clusterrolebinding.rbac.authorization.k8s.io/csi-beegfs-provisioner-binding created configmap/csi-beegfs-config-kkc8fg68fh created secret/csi-beegfs-connauth-b8kbm2mmm2 created statefulset.apps/csi-beegfs-controller created daemonset.apps/csi-beegfs-node created csidriver.storage.k8s.io/beegfs.csi.netapp.com created
Utilizzo kubectl apply -kper sovrapposizioni (directory contenenti unkustomization.yamlfile). Utilizzokubectl apply -fper manifesti YAML semplici o directory di manifesti. -
Procedere alDistribuisci l'applicazione di esempio sezione per convalidare la configurazione del driver BeeGFS CSI.
Distribuisci l'applicazione di esempio
Dopo aver installato il driver BeeGFS CSI (Air-Gapped o Online), è possibile distribuire l'applicazione di esempio per convalidare la configurazione. Questo esempio include StorageClass, PersistentVolumeClaim (PVC) e un pod che utilizza il driver BeeGFS CSI.
Prima della distribuzione:
-
Ottieni l'indirizzo IP del nodo di gestione BeeGFS:
BeeGFS 7.4
beegfs-check-serversBeeGFS 8
beegfs health networkRisultato previsto:
Management ========== mgmt [ID: 1]: reachable at 192.1.18.1:8008 (protocol: TCP)
-
Aggiorna l'IP del nodo di gestione in
examples/k8s/dyn/dyn-sc.yaml. -
Aggiorna il valore per
volDirBasePath. Impostalo su un valore univoco (ad esempio il nome del cluster k8s) per impedire a più cluster di effettuare il provisioning dinamico dei volumi nello stesso percorso BeeGFS.Esempio di frammento StorageClass:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-beegfs-dyn-sc provisioner: beegfs.csi.netapp.com parameters: sysMgmtdHost: 192.1.18.1 volDirBasePath: user_id_k8s reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true
Distribuire
-
Distribuisci i file dell'applicazione di esempio:
kubectl apply -f examples/k8s/dynRisultato previsto:
pod/csi-beegfs-dyn-app created persistentvolumeclaim/csi-beegfs-dyn-pvc created storageclass.storage.k8s.io/csi-beegfs-dyn-sc created
-
Verificare che il pod e il PVC di esempio siano in esecuzione e associati:
kubectl get pod csi-beegfs-dyn-app kubectl get pvc csi-beegfs-dyn-pvc
|
|
I passaggi di distribuzione dell'applicazione di esempio sono identici sia per le distribuzioni Air-Gapped che per quelle online. Assicurati di aver aggiornato l'IP del nodo di gestione e volDirBasePath nel manifesto StorageClass prima della distribuzione.
|