|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Harvester Cloud-Anbieter
Sie können RKE2 Cluster in Rancher mit dem integrierten Harvester Node Driver bereitstellen. Harvester bietet Lastenausgleich und Harvester Cluster Speicher-Passthrough Unterstützung für den Gast-Kubernetes-Cluster.
Hinweis zur Abwärtskompatibilität
|
Bitte beachten Sie ein bekanntes Problem mit der Abwärtskompatibilität, wenn Sie die Harvester-Cloud-Anbieter-Version v0.2.2 oder höher verwenden. Wenn Ihre Harvester-Version unter v1.2.0 liegt und Sie beabsichtigen, neuere RKE2-Versionen (d.h. >= Für eine detaillierte Unterstützungs-Matrix beziehen Sie sich bitte auf den Abschnitt Harvester CCM & CSI Driver mit RKE2-Versionen der offiziellen Website. |
Bereitstellung
Voraussetzungen
-
Der Kubernetes-Cluster basiert auf Harvester-VMs.
-
Die Harvester-VMs, die als Gast-Kubernetes-Knoten fungieren, befinden sich im selben Namespace.
-
Die Hostnamen der Harvester-VM-Gäste stimmen mit den entsprechenden Namen der Harvester-VMs überein. Gast-Cluster-Harvester-VMs dürfen beim Einsatz des Harvester-CSI-Treibers keine anderen Hostnamen als ihre Harvester-VM-Namen haben. Wir hoffen, diese Einschränkung in einer zukünftigen Version von Harvester zu entfernen.
|
Jede Harvester-VM muss das Um zu überprüfen, ob das Kernel-Modul verfügbar ist, greifen Sie auf die VM zu und führen Sie die folgenden Befehle aus:
Das Kernel-Modul fehlt wahrscheinlich, wenn Folgendes auftritt:
Standardmäßig ist das Um die Notwendigkeit manueller Eingriffe nach der Bereitstellung des Gastclusters zu beseitigen, erstellen Sie Ihre eigenen Cloud-Images mit dem openSUSE Build Service (OBS). Sie müssen das |
Bereitstellung im RKE2-Cluster mit dem Harvester-Knotentreiber
Beim Erstellen eines RKE2-Clusters mit dem Harvester-Knotentreiber wählen Sie den Harvester Cloud-Anbieter aus. Der Knotentreiber hilft dann automatisch bei der Bereitstellung sowohl des CSI-Treibers als auch des CCM.
Ab Rancher v2.9.0 können Sie über das Feld Datenverzeichnis-Konfigurationspfad ein bestimmtes Verzeichnis für Cloud-Konfigurationsdaten festlegen.
Manuelle Bereitstellung im RKE2-Cluster
-
Generieren Sie Cloud-Konfigurationsdaten mit dem Skript
generate_addon.shund platzieren Sie die Daten dann auf jedem benutzerdefinierten Knoten (Verzeichnis:/etc/kubernetes/cloud-config).curl -sfL https://raw.githubusercontent.com/harvester/cloud-provider-harvester/master/deploy/generate_addon.sh | bash -s <serviceaccount name> <namespace>Das Skript hängt von
kubectlundjqab, wenn der Harvester-Cluster betrieben wird, und funktioniert nur, wenn es Zugriff auf dieHarvester Clusterkubeconfig-Datei hat.Sie finden die
kubeconfigDatei in einem der Harvester-Management-Knoten im/etc/rancher/rke2/rke2.yamlPfad. Die Server-IP muss durch die VIP-Adresse ersetzt werden.Beispiel für Inhalt:
apiVersion: v1 clusters: - cluster: certificate-authority-data: <redacted> server: https://127.0.0.1:6443 name: default # ...Sie müssen den Namespace angeben, in dem der Gastcluster erstellt wird.
Beispiel für Ausgabe:
########## cloud config ############ apiVersion: v1 clusters: - cluster: certificate-authority-data: <CACERT> server: https://HARVESTER-ENDPOINT/k8s/clusters/local name: local contexts: - context: cluster: local namespace: default user: harvester-cloud-provider-default-local name: harvester-cloud-provider-default-local current-context: harvester-cloud-provider-default-local kind: Config preferences: {} users: - name: harvester-cloud-provider-default-local user: token: <TOKEN> ########## cloud-init user data ############ write_files: - encoding: b64 content: <CONTENT> owner: root:root path: /etc/kubernetes/cloud-config permissions: '0644' -
Auf der Seite zur Erstellung des RKE2-Clusters gehen Sie zum Bildschirm Cluster-Konfiguration und setzen Sie den Wert von Cloud-Anbieter auf Extern.
-
Kopieren Sie den Inhalt von
cloud-init user dataund fügen Sie ihn in Maschinenpools > Erweiterte Optionen anzeigen > Benutzerdaten ein.
-
Fügen Sie die
HelmChartCRD fürharvester-cloud-providerzu Cluster-Konfiguration > Add-On-Konfiguration > Zusätzliche Manifestdatei hinzu.Sie müssen
<cluster-name>durch den Namen Ihres Clusters ersetzen.apiVersion: helm.cattle.io/v1 kind: HelmChart metadata: name: harvester-cloud-provider namespace: kube-system spec: targetNamespace: kube-system bootstrap: true repo: https://raw.githubusercontent.com/rancher/charts/dev-v2.9 chart: harvester-cloud-provider version: 104.0.2+up0.2.6 helmVersion: v3 valuesContent: |- global: cattle: clusterName: <cluster-name>
-
Um den Lastenausgleich zu erstellen, fügen Sie die Annotation
cloudprovider.harvesterhci.io/ipam: <dhcp|pool>hinzu.
Bereitstellung im RKE2 benutzerdefinierten Cluster (experimentell)
-
Generieren Sie Cloud-Konfigurationsdaten mit dem Skript
generate_addon.shund platzieren Sie die Daten dann auf jedem benutzerdefinierten Knoten (Verzeichnis:/etc/kubernetes/cloud-config).curl -sfL https://raw.githubusercontent.com/harvester/cloud-provider-harvester/master/deploy/generate_addon.sh | bash -s <serviceaccount name> <namespace>Das Skript hängt von
kubectlundjqab, wenn der Harvester-Cluster betrieben wird, und funktioniert nur, wenn es Zugriff auf dieHarvester Clusterkubeconfig-Datei hat.Sie finden die
kubeconfigDatei in einem der Harvester-Management-Knoten im/etc/rancher/rke2/rke2.yamlPfad. Die Server-IP muss durch die VIP-Adresse ersetzt werden.Beispiel für Inhalt:
apiVersion: v1 clusters: - cluster: certificate-authority-data: <redacted> server: https://127.0.0.1:6443 name: default # ...Sie müssen den Namespace angeben, in dem der Gastcluster erstellt wird.
Beispiel für Ausgabe:
########## cloud config ############ apiVersion: v1 clusters: - cluster: certificate-authority-data: <CACERT> server: https://HARVESTER-ENDPOINT/k8s/clusters/local name: local contexts: - context: cluster: local namespace: default user: harvester-cloud-provider-default-local name: harvester-cloud-provider-default-local current-context: harvester-cloud-provider-default-local kind: Config preferences: {} users: - name: harvester-cloud-provider-default-local user: token: <TOKEN> ########## cloud-init user data ############ write_files: - encoding: b64 content: <CONTENT> owner: root:root path: /etc/kubernetes/cloud-config permissions: '0644' -
Erstellen Sie eine VM im Harvester-Cluster mit den folgenden Einstellungen:
-
Grundlagen Registerkarte: Die Mindestanforderungen sind 2 CPUs und 4 GiB RAM. Der erforderliche Speicherplatz hängt vom VM-Image ab.
-
Netzwerke Registerkarte: Geben Sie einen Netzwerknamen im Format
nic-<number>an.
-
Erweiterte Optionen Registerkarte: Kopieren Sie den Inhalt des Bildschirms Cloud Config User Data und fügen Sie ihn ein.
-
-
Wählen Sie auf der Registerkarte Grundlagen des Bildschirms Cluster-Konfiguration Harvester als Cloud-Anbieter aus und wählen Sie dann Erstellen, um den Cluster zu starten.
-
Führen Sie auf der Registerkarte Registrierung die erforderlichen Schritte aus, um den RKE2-Registrierungsbefehl auf der VM auszuführen.
Bereitstellung im K3s-Cluster mit Harvester-Knotentreiber (experimentell)
Beim Starten eines K3s-Clusters mit dem Harvester-Knotentreiber können Sie die folgenden Schritte ausführen, um den Harvester-Cloud-Anbieter bereitzustellen:
-
Verwenden Sie
generate_addon.sh, um die Cloud-Konfiguration zu generieren.curl -sfL https://raw.githubusercontent.com/harvester/cloud-provider-harvester/master/deploy/generate_addon.sh | bash -s <serviceaccount name> <namespace>
Die Ausgabe sieht wie folgt aus:
########## cloud config ############ apiVersion: v1 clusters: - cluster: certificate-authority-data: <CACERT> server: https://HARVESTER-ENDPOINT/k8s/clusters/local name: local contexts: - context: cluster: local namespace: default user: harvester-cloud-provider-default-local name: harvester-cloud-provider-default-local current-context: harvester-cloud-provider-default-local kind: Config preferences: {} users: - name: harvester-cloud-provider-default-local user: token: <TOKEN> ########## cloud-init user data ############ write_files: - encoding: b64 content: <CONTENT> owner: root:root path: /etc/kubernetes/cloud-config permissions: '0644' -
Kopieren Sie den Inhalt von
cloud-init user dataund fügen Sie ihn in Maschinenpools > Erweiterte Optionen anzeigen > Benutzerdaten ein.
-
Fügen Sie das folgende
HelmChartyaml vonharvester-cloud-providerzu Cluster-Konfiguration > Add-On-Konfiguration > Zusätzliches Manifest hinzu.apiVersion: helm.cattle.io/v1 kind: HelmChart metadata: name: harvester-cloud-provider namespace: kube-system spec: targetNamespace: kube-system bootstrap: true repo: https://charts.harvesterhci.io/ chart: harvester-cloud-provider version: 0.2.2 helmVersion: v3
-
Deaktivieren Sie den
in-treeCloud-Anbieter auf folgende Weise:-
Klicken Sie auf die Schaltfläche
Edit as YAML.
-
Deaktivieren Sie
servicelbund setzen Siedisable-cloud-controller: true, um den Standard-K3s-Cloud-Controller zu deaktivieren.machineGlobalConfig: disable: - servicelb disable-cloud-controller: true -
Fügen Sie
cloud-provider=externalhinzu, um den Harvester-Cloud-Anbieter zu verwenden.machineSelectorConfig: - config: kubelet-arg: - cloud-provider=external protect-kernel-defaults: false
-
Mit diesen Einstellungen sollte ein K3s-Cluster erfolgreich bereitgestellt werden, während der externe Cloud-Anbieter verwendet wird.
Upgrade des Cloud-Anbieters
Upgrade RKE2
Der Cloud-Anbieter kann durch ein Upgrade der RKE2-Version vorgenommen werden. Sie können den RKE2-Cluster über die Rancher-Benutzeroberfläche wie folgt upgraden:
-
Klicken Sie auf ☰ > Clusterverwaltung.
-
Suchen Sie den Gast-Cluster, den Sie aktualisieren möchten, und wählen Sie ⋮ > Konfiguration bearbeiten aus.
-
Wählen Sie Kubernetes-Version aus.
-
Klicken Sie auf Speichern.
Upgrade von K3s
K3s-Cloud-Anbieter über die Rancher-Benutzeroberfläche upgraden, wie folgt:
-
Klicken Sie auf ☰ > K3s-Cluster > Apps > Installierte Apps.
-
Suchen Sie das Cloud-Anbieter-Diagramm und wählen Sie ⋮ > Bearbeiten/Upgrade aus.
-
Wählen Sie Version aus.
-
Klicken Sie auf Nächster Schritt > Aktualisieren.
|
Der Aktualisierungsprozess für einen einzelnen Gast-Cluster kann ins Stocken geraten, wenn das neue Für weitere Informationen siehe diesen GitHub-Issue-Kommentar. Um das Problem zu beheben, löschen Sie manuell den alten |
Lastenausgleichsunterstützung
Sobald Sie den Harvester-Cloud-Anbieter bereitgestellt haben, können Sie den Kubernetes LoadBalancer Dienst nutzen, um einen Microservice innerhalb des Gastclusters der Außenwelt zugänglich zu machen. Die Erstellung eines Kubernetes LoadBalancer Dienstes weist dem Dienst einen dedizierten Harvester-Load Balancer zu, und Sie können Anpassungen über das Add-on Config in der Rancher-Benutzeroberfläche vornehmen.
IPAM
Der integrierte Lastenausgleich von Harvester bietet sowohl DHCP als auch Pool Modi, und Sie können ihn konfigurieren, indem Sie die Annotation cloudprovider.harvesterhci.io/ipam: $mode zu seinem entsprechenden Dienst hinzufügen. Beginnend mit dem Harvester-Cloud-Anbieter >= v0.2.0 führt er auch einen einzigartigen Share-IP-Modus ein. Ein Dienst teilt in diesem Modus seine Lastenausgleichs-IP mit anderen Diensten.
-
DHCP: Ein DHCP-Server ist erforderlich. Der Harvester-Load-Balancer wird eine IP-Adresse vom DHCP-Server anfordern.
-
Pool: Sie müssen zuerst einen IP-Pool erstellen, entweder über die SUSE Virtualization Benutzeroberfläche oder die Rancher Benutzeroberfläche (siehe Best Practices für Informationen über die Unterschiede zwischen den beiden Methoden). Der SUSE Virtualization Lastenausgleichscontroller wird eine IP für den Lastenausgleichsdienst gemäß der IP-Pool-Auswahlrichtlinie zuweisen.
-
Share IP: Bei der Erstellung eines neuen Lastenausgleichsdienstes können Sie eine vorhandene Lastenausgleichsdienst-IP wiederverwenden. Der neue Dienst wird als sekundärer Dienst bezeichnet, während der derzeit gewählte Dienst der primäre ist. Um den primären Dienst im sekundären Dienst anzugeben, können Sie die Annotation
cloudprovider.harvesterhci.io/primary-service: $primary-service-namehinzufügen. Es gibt jedoch zwei bekannte Einschränkungen:-
Dienste, die dieselbe IP-Adresse teilen, können nicht denselben Port verwenden.
-
Sekundäre Dienste können ihre IP nicht mit zusätzlichen Diensten teilen.
-
|
Das Ändern des |
Zustandsprüfungen
Beginnend mit der Harvester-Cloud-Anbieter-Version v0.2.0 sind zusätzliche Zustandsprüfungen des LoadBalancer Dienstes innerhalb des Gast-Kubernetes-Clusters nicht mehr erforderlich. Stattdessen können Sie Liveness und readiness Prüfungen für Ihre Arbeitslasten konfigurieren. Folglich werden alle nicht verfügbaren Pods automatisch von den Endpunkten des Lastenausgleichs entfernt, um dasselbe gewünschte Ergebnis zu erzielen.