Distributed Cloud für Symcloud Storage konfigurieren

Standardmäßig können Arbeitslasten, die auf einem Google Distributed Cloud Connected-Rackknoten ausgeführt werden, nicht auf den lokalen Speicher eines anderen Distributed Cloud Connected-Rackknotens zugreifen. Sie können jedoch Distributed Cloud Connected-Racks so konfigurieren, dass sie Rakuten Symcloud Storage verwenden. Diese Drittanbieterlösung fungiert als lokale Speicherabstraktionsschicht auf jedem Distributed Cloud Connected-Knoten und stellt den lokalen Speicher für Arbeitslasten zur Verfügung, die auf anderen Distributed Cloud Connected-Knoten ausgeführt werden. Symcloud Storage ist die Standard- und einzige Speicheroption auf mit Google Distributed Cloud verbundenen Servern.

Symcloud Storage wird über den Google Cloud Marketplace bereitgestellt und unterliegt den dort angegebenen Bedingungen. Google bietet nur eingeschränkten Support für die Verwendung von Symcloud Storage mit Distributed Cloud Connected und wendet sich möglicherweise an den Drittanbieter, um Unterstützung zu erhalten. Softwareupdates für Symcloud Storage sind in den Softwareupdates für Distributed Cloud enthalten.

Symcloud Storage-Klassen

In diesem Abschnitt werden die Speicherklassen beschrieben, die Symcloud Storage in Ihrem mit Distributed Cloud verbundenen Cluster aktivieren kann. Symcloud Storage in Distributed Cloud Connected unterstützt weder die Speicherklasse robin-rwx noch benutzerdefinierte RWX-Dateisystemmodus-Volumes. Weitere Informationen zu Symcloud-Speicherklassen finden Sie unter Robin CNS in Kubernetes verwenden.

Speicherklasse robin

Die Speicherklasse robin ist eine einfache RWO-Speicherklasse (Read Write-Once). Das folgende Beispiel zeigt die Instanziierung der Klasse:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: robin
    labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

Speicherklasse robin-immediate

Die StorageClass robin-immediate ist dieselbe wie robin, mit der Ausnahme, dass das nichtflüchtige Volume sofort nach dem Erstellen des entsprechenden Anspruchs auf ein nichtflüchtiges Volume erstellt wird. Das folgende Beispiel veranschaulicht die Instanziierung der Klasse:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: robin-immediate
    labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate

Speicherklasse robin-repl-3

robin-repl-3 ist eine RWO-Speicherklasse mit drei Replikaten, die sich über mehrere Distributed Cloud-Knoten erstrecken. Das folgende Beispiel veranschaulicht die Instanziierung der Klasse:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: robin-repl-3
    labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
    replication: "3"
    faultdomain: host

Vorbereitung

Führen Sie zuerst die folgenden Schritte aus:

  1. Logging und Monitoring für das verbundene Zielprojekt von Distributed Cloud konfigurieren.
  2. Zielcluster für Distributed Cloud Connected erstellen
  3. Konfigurieren Sie Ihr Distributed Cloud-Netzwerk so, dass Pods im Zielcluster, der mit Distributed Cloud verbunden ist, das Rechenzentrum Google Cloud erreichen können.
  4. Binden Sie jedes local-block-Persistent Volume auf jedem Distributed Cloud-Knoten, das nicht von Symcloud Storage abstrahiert werden soll. Wenn Sie ein gebundenes nichtflüchtiges local-block-Volume entbinden, werden bei der Installation von Symcloud Storage die Inhalte dieses nichtflüchtigen Volumes gelöscht. Eine Anleitung finden Sie in der Kubernetes-Dokumentation unter Binding.

Symcloud Storage auf einem mit Distributed Cloud verbundenen Knoten installieren

So installieren Sie Symcloud Storage auf einem mit Distributed Cloud verbundenen Knoten:

  1. Verwenden Sie den folgenden Befehl, um die Symcloud Storage-Lizenz auf Ihren Cluster anzuwenden. Ersetzen Sie LICENSE_FILE durch den vollständigen Pfad und Namen der Symcloud Storage-Lizenzdatei.

    kubectl apply -f LICENSE_FILE -n robin-admin
    
  2. Verwenden Sie den folgenden Befehl, um den Status des RobinCluster-Dienstes und aller Symcloud Storage-Knoten zu prüfen:

    kubectl describe robinclusters -n robinio
    

    Die Ausgabe des Befehls sieht in etwa so aus:

    [...]
    Status:
    [...]
    Phase:              Ready
    robin_node_status:
    [...]
     Status:           Ready
    [...]
     Status:           Ready
    [...]
     Status:           Ready
    [...]
    

    Der erwartete Status für den Dienst und die Knoten ist Ready.

Symcloud Storage als Standardspeicherklasse festlegen

Verwenden Sie den folgenden Befehl, um Symcloud Storage als Standardspeicherklasse in Ihrem mit Distributed Cloud verbundenen Cluster festzulegen. Ersetzen Sie STORAGE_CLASS durch eine der Symcloud-Speicherklassen.

kubectl patch storageclass STORAGE_CLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Weitere Informationen zum Festlegen der Standardspeicherklasse finden Sie in der Kubernetes-Dokumentation unter Standardspeicherklasse ändern.

Abstrakte Symcloud Storage-Volumes für Arbeitslasten konfigurieren

In diesem Abschnitt finden Sie Beispiele für die Verwendung von Symcloud Storage-Klassen zum Konfigurieren von abstrahiertem Speicher für Ihre mit Distributed Cloud verbundenen Arbeitslasten. Weitere Informationen zum Konfigurieren von Symcloud Storage-Volumes finden Sie unter Robin CNS in Kubernetes verwenden.

ext4-RWO-Volume im Dateisystemmodus konfigurieren

Das folgende Beispiel veranschaulicht, wie Sie einen Anspruch auf ein persistentes Volume für ein RWO-Volume im Dateisystemmodus mit dem ext4-Dateisystem konfigurieren. Ersetzen Sie STORAGE_CLASS durch eine der Symcloud-Speicherklassen.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-fs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

RWO-Volume im Blockmodus konfigurieren

Das folgende Beispiel veranschaulicht, wie Sie einen PersistentVolumeClaim für ein RWO-Volume im Blockmodus konfigurieren. Ersetzen Sie STORAGE_CLASS durch eine der Symcloud Storage-Klassen.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-block-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS
  volumeMode: Block

Konfiguration eines vorhandenen Volumes ändern

Im folgenden Beispiel wird veranschaulicht, wie Sie die Konfiguration eines vorhandenen Symcloud Storage-RWO-Volumes mit LZ4-Komprimierung mithilfe von Annotationen ändern. Ersetzen SieSTORAGE_CLASS durch eine der Symcloud-Speicherklassen.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: compressed-rwo-fs-pvc
  annotations:
    robin.io/compression: LZ4
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

Das folgende Beispiel zeigt, wie Sie die Konfiguration eines vorhandenen Symcloud Storage-RWO-Volumes mit dem xfs-Dateisystem mithilfe von Annotationen ändern. Ersetzen SieSTORAGE_CLASS durch eine der Symcloud-Speicherklassen.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rwo-xfs-pvc
  annotations:
    robin.io/fstype: xfs
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: STORAGE_CLASS

Symcloud Storage-Befehlszeilenclient konfigurieren

Symcloud Storage bietet einen Befehlszeilenclient (CLI), mit dem Sie Ihre Symcloud Storage-Konfiguration verwalten können. Führen Sie die folgenden Schritte aus, um den Client in Ihrem mit Distributed Cloud verbundenen Cluster zu konfigurieren:

  1. Rufen Sie den Symcloud Storage-Imagepfad ab, der von der RobinCluster-Dienstinstanz verwendet wird, die in Ihrem mit Distributed Cloud verbundenen Cluster bereitgestellt wird, und legen Sie Ihre Umgebungsvariablen so fest:

    image_robin=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_robin}')
    image_registry_path=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_registry_path}')
    ROBIN_CNS_IMAGE="$image_registry_path/$image_robin"
    
  2. Erstellen Sie eine robincli-Ressource mit folgendem Inhalt:

    kind: Deployment
    apiVersion: apps/v1
    metadata:
     name: robincli
     namespace: default
     labels:
       name: robincli
    spec:
     replicas: 1
     selector:
       matchLabels:
         name: robincli
     template:
       metadata:
         annotations:
           product: robin
         labels:
           name: robincli
       spec:
         containers:
         - name: robincli
           image: ROBIN_CNS_IMAGE
           workingDir: /root
           command: ["/bin/bash","-c","mkdir -p /root/.robin; ln -s -t /usr/lib/python3.7/site-packages/ /opt/robin/current/python3/site-packages/robincli /opt/robin/current/python3/site-packages/stormgr_def.py /opt/robin/current/python3/site-packages/stormgr_lib.py; /opt/robin/current/bin/robin client add-context robin-master.robinio --set-current; while true; do sleep 10000; done"]
           resources:
             requests:
               memory: "10Mi"
               cpu: "100m"
    

    Ersetzen Sie ROBIN_CNS_IMAGE durch den vollständigen Repository-Pfad und Namen des Images, das Sie in Schritt 1 abgerufen haben.

  3. Wenden Sie die robincli-Ressource auf Ihren mit Distributed Cloud verbundenen Cluster an.

  4. Bei der Erstinstallation generiert Symcloud Storage im Namespace robinio ein default-admin-user-Secret mit einem zufälligen Passwort. Verwenden Sie die folgenden Befehle, um diese Anmeldedaten zu erhalten:

    1. Rufen Sie den Nutzernamen ab:

      kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -d
      
    2. Passwort abrufen:

       
      kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
      
  5. Melden Sie sich im neu erstellten Pod an und führen Sie den Client aus:

    kubectl exec -it robincli -- bash
    

Einschränkungen von Symcloud Storage

Wenn Sie Symcloud Storage mit Distributed Cloud Connected verwenden, können Sie nur dann eine hohe Verfügbarkeit erreichen, wenn Ihr Distributed Cloud Connected-Cluster aus mindestens drei Distributed Cloud Connected-Knoten besteht.

Knoten, die Symcloud Storage verwenden, aus einem Cluster entfernen

Symcloud Storage-Volumenreplikate werden auf Worker-Knoten in Ihrem verbundenen Distributed Cloud-Cluster gespeichert. Wenn Sie einen Knoten aus dem Cluster entfernen, sind die auf diesem Knoten gespeicherten Symcloud Storage-Volumedaten nicht mehr verfügbar. Um dies zu verhindern, müssen Sie einen der folgenden Schritte ausführen:

  • Wenn Sie den gesamten Cluster entfernen, entfernen Sie die Arbeitslasten und die zugehörigen persistenten Symcloud Storage-Volumes, bevor Sie den Cluster selbst entfernen.

  • Wenn Sie bestimmte Knoten aus dem Cluster entfernen, müssen Sie die auf diesen Knoten gespeicherten Arbeitslastdaten migrieren, bevor Sie die Knoten aus dem Cluster entfernen. Eine Anleitung finden Sie unter Volumes von einem Laufwerk evakuieren.