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.

iSCSI Volumes

In Rancher gestartete Kubernetes-Cluster, die Daten auf iSCSI-Volumes speichern, kann es zu einem Problem kommen, bei dem kubelets nicht automatisch mit iSCSI-Volumes verbunden werden können. Dieser Fehler ist wahrscheinlich auf ein Kompatibilitätsproblem mit dem iSCSI-Initiator-Tool zurückzuführen. Sie können dieses Problem lösen, indem Sie das iSCSI-Initiator-Tool auf jedem Ihrer Cluster-Knoten installieren.

Rancher gestartete Kubernetes-Cluster, die Daten auf iSCSI-Volumes speichern, nutzen das iSCSI-Initiator-Tool, das im rancher/hyperkube Docker-Image des kubelets eingebettet ist. Von jedem kubelet (d.h. dem Initiator) entdeckt das Tool und startet Sitzungen mit einem iSCSI-Volume (d.h. dem Ziel). In einigen Fällen stimmen jedoch die Versionen des iSCSI-Initiator-Tools, die auf dem Initiator und dem Ziel installiert sind, möglicherweise nicht überein, was zu einem Verbindungsfehler führt.

Wenn Sie auf dieses Problem stoßen, können Sie es umgehen, indem Sie das Initiator-Tool auf jedem Knoten in Ihrem Cluster installieren. Sie können das iSCSI-Initiator-Tool installieren, indem Sie sich bei Ihren Cluster-Knoten anmelden und einen der folgenden Befehle eingeben:

Plattform Paketname Installationsbefehl

Ubuntu/Debian

open-iscsi

sudo apt install open-iscsi

RHEL

iscsi-initiator-utils

yum install iscsi-initiator-utils -y

Nachdem Sie das Initiator-Tool auf Ihren Knoten installiert haben, bearbeiten Sie die YAML für Ihren Cluster und ändern Sie die kubelet-Konfiguration, um die iSCSI-Binärdatei und die Konfiguration einzubinden, wie im folgenden Beispiel gezeigt.

Anmerkungen
  • Stellen Sie sicher, dass entweder das open-iscsi (deb) oder das iscsi-initiator-utils (yum) Paket auf Ihren Cluster-Knoten installiert ist, bevor Sie Ihr Kubernetes-YAML aktualisieren, um die iSCSI-Binärdatei und die Konfiguration einzubinden. Wenn dieses Paket nicht installiert ist bevor die Bind-Mounts in Ihrem Kubernetes-YAML erstellt werden, wird Docker automatisch die Verzeichnisse und Dateien auf jedem Knoten erstellen und die Installation des Pakets wird nicht erfolgreich sein.

  • Das folgende Beispiel-YAML gilt nicht für K3s, sondern nur für RKE-Cluster. Da der K3s kubelet nicht in einem Container läuft, ist das Hinzufügen zusätzlicher Bind-Mounts nicht erforderlich. Alle iSCSI-Tools müssen jedoch weiterhin auf Ihren K3s-Knoten installiert sein.

services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"

Wenn Sie RHEL 7.9 verwenden, müssen Sie die Datei /usr/lib64/libcrypto.so.10 wie im folgenden Beispiel gezeigt einbinden.

services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"
      - "/usr/lib64/libcrypto.so.10:/usr/lib/libcrypto.so.10"

Wenn Sie RHEL 8.6 verwenden, müssen Sie die Datei /usr/lib64/libcrypto.so.1.1 wie im folgenden Beispiel einbinden.

services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"
      - "/usr/lib64/libcrypto.so.1.1:/usr/lib/libcrypto.so.1.1"

Um zu überprüfen, ob iscsiadm ordnungsgemäß funktioniert, können Sie den Befehl docker exec kubelet iscsiadm --version auf jedem Knoten ausführen.