Standardmäßig können Arbeitslasten, die auf einem Google Distributed Cloud Rack-Knoten ausgeführt werden, nicht auf den lokalen Speicher eines anderen Distributed Cloud Rack-Knotens zugreifen. Sie können Google Distributed Cloud-Racks jedoch so konfigurieren, dass sie Rakuten Symcloud Storage verwenden. Diese Drittanbieterlösung fungiert als lokale Speicherebene auf jedem Distributed Cloud-Knoten und stellt den lokalen Speicher für Arbeitslasten zur Verfügung, die auf anderen Distributed Cloud-Knoten ausgeführt werden. Symcloud Storage ist die Standard- und einzige Speicheroption auf Google Distributed Cloud-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 und wendet sich möglicherweise an den Drittanbieter, um Unterstützung zu erhalten. Softwareupdates für Symcloud Storage sind in den Distributed Cloud-Softwareupdates enthalten.
Symcloud Storage-Klassen
In diesem Abschnitt werden die Speicherklassen beschrieben, die Symcloud Storage in Ihrem Distributed Cloud-Cluster aktivieren kann. Symcloud Storage in Distributed Cloud 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:
- Logging und Monitoring für das Distributed Cloud-Zielprojekt konfigurieren.
- Ziel-Distributed Cloud-Cluster erstellen
- Konfigurieren Sie das Netzwerk von Distributed Cloud so, dass Pods im Ziel-Distributed Cloud-Cluster das Google Cloud Rechenzentrum erreichen können.
- 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üchtigeslocal-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 Distributed Cloud-Knoten installieren
So installieren Sie Symcloud Storage auf einem Distributed Cloud-Knoten:
Verwenden Sie den folgenden Befehl, um die Symcloud Storage-Lizenz auf Ihren Cluster anzuwenden. Ersetzen Sie
LICENSE_FILEdurch den vollständigen Pfad und Namen der Symcloud Storage-Lizenzdatei.kubectl apply -f LICENSE_FILE -n robin-admin
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 Distributed Cloud-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 Distributed Cloud-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 Distributed Cloud-Cluster zu konfigurieren:
Rufen Sie den Symcloud Storage-Imagepfad ab, der von der
RobinCluster-Dienstinstanz verwendet wird, die in Ihrem Distributed Cloud-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"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_IMAGEdurch den vollständigen Repository-Pfad und Namen des Images, das Sie in Schritt 1 abgerufen haben.Wenden Sie die
robincli-Ressource auf Ihren Distributed Cloud-Cluster an.Bei der Erstinstallation generiert Symcloud Storage im Namespace
robinioeindefault-admin-user-Secret mit einem zufälligen Passwort. Verwenden Sie die folgenden Befehle, um diese Anmeldedaten zu erhalten:Rufen Sie den Nutzernamen ab:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -dPasswort abrufen:
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
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 verwenden, können Sie nur dann eine hohe Verfügbarkeit erreichen, wenn Ihr Distributed Cloud-Cluster aus mindestens drei Distributed Cloud-Knoten besteht.