Block Storage for Classic einrichten

IBM Cloud Block Storage for Classic ist ein persistenter, hochleistungsfähiger iSCSI-Speicher, den Sie mithilfe von persistenten Kubernetes-Datenträgern (Persistent Volumes, PVs) zu Ihren Apps hinzufügen können. Sie können unter vordefinierten Speichertiers mit GB-Größen und E/A-Operationen pro Sekunde (IOPS) wählen, die die Anforderungen Ihrer Workloads erfüllen. Um herauszufinden, ob IBM Cloud Block Storage for Classic die richtige Speicheroption für Sie ist, siehe Auswahl einer Speicherlösung.

Beachten Sie die folgenden Anforderungen, wenn Sie das IBM Cloud Block Storage for Classic-Plug-in verwenden.

Das IBM Cloud Block Storage for Classic-Plug-in ist nur für IBM Cloud Kubernetes Service-Standardcluster verfügbar, die in der klassischen Infrastruktur bereitgestellt werden. Wenn Sie über einen VPC-Cluster verfügen, finden Sie weitere Informationen unter Block Storage for Classic.

Wenn Ihr Cluster nicht auf das öffentliche Netz zugreifen kann, wie z. B. auf einen privaten Cluster hinter einer Firewall oder auf einen Cluster, in dem nur der private Cloud-Serviceendpunkt aktiviert ist, stellen Sie sicher, dass Sie das IBM Cloud Block Storage for Classic Plug-in Version 1.3.0 oder höher installiert haben, um über das private Netz eine Verbindung zu Ihrer Block Storage for Classic-Instanz herzustellen.

Block Storage for Classic Instanzen sind spezifisch für eine Multizonenregion mit einem Campus. Wenn Sie einen Mehrzonencluster haben, ziehen Sie Optionen für persistenten Speicher in mehreren Zonen in Betracht.

Klassische Infrastruktur

Die Schritte auf dieser Seite gelten nur für klassische Cluster. Auf VPC-Clustern ist das Cluster-Add-on „ Block Storage for VPC “ standardmäßig installiert. Weitere Informationen finden Sie unter Einrichten Einrichten Block Storage for VPC.

Schnelleinstieg für IBM Cloud Block Storage for Classic

In dieser Schnellstartanleitung erstellen Sie in Ihrem Cluster ein „ 24Gi “-Volume der Stufe „Silver“ Block Storage for Classic, indem Sie ein PVC anlegen, um das Volume dynamisch bereitzustellen. Anschließend erstellen Sie eine App-Bereitstellung, bei der der PVC anhängt wird.

Verwenden Sie zum ersten Mal Block Storage for Classic in Ihrem Cluster? Installieren Sie zunächst das Block Storage for Classic-Plug-in, bevor Sie von hier aus fortfahren.

  1. Speichern Sie die folgende PVC-Konfiguration (Persistent Volume Claim) in einer Datei mit dem Namen pvc.yaml.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: block-storage-pvc
      labels:
        billingType: "hourly"
        region: us-east
        zone: wdc07
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 45Gi
      storageClassName: ibmc-block-silver
    
  2. Wenden Sie die Konfiguration auf Ihren Cluster an, um den PVC zu erstellen.

    kubectl apply -f pvc.yaml
    
  3. Warten Sie, bis sich Ihr PVC im Status Bound befindet. Sie können den Status mit dem folgenden Befehl überprüfen.

    kubectl get pvc
    
  4. Wenn Ihr PVC Bound ist, erstellen Sie eine App-Bereitstellung, die Ihren PVC verwendet. Speichern Sie die folgende Implementierungskonfiguration in einer Datei namens deployment.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment
      labels:
        app: my-app
    spec:
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - image: nginx # Use the nginx image, or your own containerized app image.
            name: my-container
            command: ["/bin/sh"]
            args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"] # This app prints the timestamp, then sleeps.
            workingDir: /home
            imagePullPolicy: Always
            ports:
              - containerPort: 80
            volumeMounts:
            - name: my-volume
              mountPath: /mount-path
          volumes:
          - name: my-volume
            persistentVolumeClaim:
              claimName: block-storage-pvc
    
  5. Erstellen Sie die Bereitstellung in Ihrem Cluster.

    kubectl apply -f deployment.yaml
    
  6. Warten Sie, bis die Bereitstellung Ready lautet. Überprüfen Sie den Status der Implementierung, indem Sie den folgenden Befehl ausführen.

    kubectl get deployments
    

    Beispielausgabe

    NAME            READY   UP-TO-DATE   AVAILABLE   AGE
    my-deployment   1/1     1            1           3m19s
    
  7. Listen Sie Ihre Pods auf und prüfen Sie, ob der Pod my-deployment aktiv ist.

    kubectl get pods
    

    Beispielausgabe

    NAME                            READY   STATUS    RESTARTS   AGE
    my-deployment-ccdf87dfb-vzn95   1/1     Running   0          5m27s
    
  8. Rufen Sie die Pods-Protokolle ab, um zu überprüfen, ob die Zeitmarke geschrieben wurde.

    kubectl logs
    

    Beispielausgabe

    2022-01-21 14:18:59
    

Sie haben erfolgreich eine Bereitstellung erstellt, die Block Storage for Classic verwendet! Weitere Informationen enthalten die folgenden Abschnitte.

IBM Cloud Block Storage for Classic-Plug-in in Ihrem Cluster installieren

Installieren Sie das IBM Cloud Block Storage for Classic-Plug-in mit einem Helm-Chart, um vordefinierte Speicherklassen für Block Storage for Classic einzurichten. Mit diesen Speicherklassen können Sie einen PVC zum Bereitstellen von Block Storage for Classic für Ihre Apps erstellen.

Classic-Cluster, die IBM Cloud Kubernetes Service Version 1.24 oder höher verwenden, müssen das Plug-in IBM Cloud Block Storage for Classic nicht installieren. Der Treiber und das Plug-in werden standardmäßig auf diesen Clustern installiert.

Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

  1. Stellen Sie sicher, dass bei Ihrem Workerknoten das neueste Patch für Ihre Nebenversion angewendet wird, damit Ihre Workerknoten mit den neuesten Sicherheitseinstellungen ausgeführt werden. Die Patchversion stellt außerdem sicher, dass das Rootkennwort auf dem Workerknoten erneuert wird.

    Wenn Sie Ihren Workerknoten in den letzten 90 Tagen nicht aktualisiert oder neu geladen haben, läuft Ihr Rootkennwort auf dem Workerknoten ab und die Installation des Speicher-Plug-ins schlägt möglicherweise fehl.

    1. Zeigen Sie eine Liste mit der aktuellen Patchversionen auf Ihren Workerknoten auf.
        ibmcloud ks worker ls --cluster CLUSTER_NAME_OR_ID
        ```
        Beispielausgabe
        ```sh {: screen}
        OK
        ID                                                  Public IP        Private IP     Machine Type           State    Status   Zone    Version
        kube-dal10-crb1a23b456789ac1b20b2nc1e12b345ab-w26   169.xx.xxx.xxx    10.xxx.xx.xxx   b3c.4x16.encrypted     normal   Ready    dal10   1.35_1523*
        ```
        Wenn bei Ihrem Workerknoten nicht die neueste Patchversion angewendet wird, erscheint ein Sternchen (`*`) in der Spalte **Version** der CLI-Ausgabe.
    
    2. Lesen Sie die [Kubernetes-Versionsinformationen](/docs/containers?topic=containers-cs_versions), um die neuesten Änderungen zu finden.
    
    3. Wenden Sie die neueste Patchversion an, indem Sie Ihren Workerknoten erneut laden. Befolgen Sie die Anweisungen im [Befehl „ibmcloud ks worker reload“](/docs/containers?topic=containers-kubernetes-service-cli#worker-reload-cli), um alle laufenden Pods auf Ihrem Worker-Knoten sicher neu zu planen, bevor Sie Ihren Worker-Knoten neu laden. Während des erneuten Ladens wird Ihre Workerknotenmaschine mit dem neuesten Image aktualisiert und die Daten werden gelöscht, wenn sie nicht [außerhalb des Workerknotens gespeichert sind](/docs/containers?topic=containers-storage-plan).
    
    
  2. Befolgen Sie die Anweisungen zum Installieren von Version 3 des Helm-Clients auf Ihrer lokalen Maschine.

  3. Fügen Sie das IBM Cloud-Helm-Chart-Repository zu dem Cluster hinzu, in dem Sie das IBM Cloud Block Storage for Classic-Plug-in verwenden wollen.

    Wenn VRF und Serviceendpunkte in Ihrem IBM Cloud-Konto aktiviert sind, können Sie das private IBM Cloud Helm-Repository verwenden, um Ihren Image-Pull-Datenverkehr im privaten Netz beizubehalten. Wenn Sie VRF oder Serviceendpunkte in Ihrem Konto nicht aktivieren können, verwenden Sie die öffentliche Registry-Domäne: helm repo add iks-charts https://icr.io/helm/iks-charts.

    helm repo add iks-charts https://icr.io/helm/iks-charts
    
  4. Aktualisieren Sie das Helm-Repository, um die aktuelle Version aller Helm-Charts in diesem Repository abzurufen.

    helm repo update
    
  5. Installieren Sie das IBM Cloud Block Storage for Classic-Plug-in und geben Sie Ihrer Installation einen Namen. Beispiel: block-storage-plugin. Wenn Sie das Plug-in installieren, werden vordefinierte Blockspeicherklassen zu Ihrem Cluster hinzugefügt.

    helm install <name> iks-charts/ibmcloud-block-storage-plugin -n <namespace>
    

    Beispielausgabe

    NAME:   <name>
    LAST DEPLOYED: Wed Apr 18 10:02:55 2018
    NAMESPACE: default
    STATUS: DEPLOYED
    RESOURCES:
    ==> v1beta1/DaemonSet
    NAME                           DESIRED  CURRENT  READY  UP-TO-DATE  AVAILABLE  NODE SELECTOR  AGE
    ibmcloud-block-storage-driver  0        0        0      0           0          <none>         0s
    ==> v1beta1/Deployment
    NAME                           DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
    ibmcloud-block-storage-plugin  1        0        0           0          0s
    ==> v1/StorageClass
    NAME                      PROVISIONER        AGE
    ibmc-block-bronze         ibm.io/ibmc-block  0s
    ibmc-block-custom         ibm.io/ibmc-block  0s
    ibmc-block-gold           ibm.io/ibmc-block  0s
    ibmc-block-retain-bronze  ibm.io/ibmc-block  0s
    ibmc-block-retain-custom  ibm.io/ibmc-block  0s
    ibmc-block-retain-gold    ibm.io/ibmc-block  0s
    ibmc-block-retain-silver  ibm.io/ibmc-block  0s
    ibmc-block-silver         ibm.io/ibmc-block  0s
    ==> v1/ServiceAccount
    NAME                           SECRETS  AGE
    ibmcloud-block-storage-plugin  1        0s
    ==> v1beta1/ClusterRole
    NAME                           AGE
    ibmcloud-block-storage-plugin  0s
    ==> v1beta1/ClusterRoleBinding
    NAME                           AGE
    ibmcloud-block-storage-plugin  0s
    NOTES:
    Thank you for installing: ibmcloud-block-storage-plugin.   Your release is named: <name>
    
  6. Überprüfen Sie die Installation.

    kubectl get pod -n <namespace> | grep block
    

    Beispielausgabe

    ibmcloud-block-storage-driver-kh4mt                              1/1       Running   0          27d       10.118.98.19   10.118.98.19
    ibmcloud-block-storage-plugin-58c5f9dc86-pbl4t                   1/1       Running   0          14d       172.21.0.204   10.118.98.19
    

    Die Installation ist erfolgreich, wenn ein Pod des Typs ibmcloud-block-storage-plugin und ein oder mehrere Pods des Typs ibmcloud-block-storage-driver angezeigt werden. Die Anzahl der Pods des Typs ibmcloud-block-storage-driver entspricht der Anzahl der Workerknoten in Ihrem Cluster. Alle Pods müssen den Status Aktiv aufweisen.

  7. Überprüfen Sie, ob die Speicherklassen für Block Storage for Classic Ihrem Cluster hinzugefügt wurden.

    kubectl get sc | grep block
    

    Beispielausgabe

    ibmc-block-bronze                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-custom                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-gold                        ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-retain-bronze               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-custom               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-gold                 ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-silver               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-silver                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    
  8. Wiederholen Sie diese Schritte für jeden Cluster, in dem Sie Blockspeicher bereitstellen möchten.

Sie können jetzt mit dem Erstellen eines PVC zum Bereitstellen von Blockspeicher für Ihre App fortfahren.

IBM Cloud Block Storage-Plug-in aktualisieren

Sie können ein Upgrade des vorhandenen IBM Cloud Block Storage-Plug-ins auf die aktuelle Version durchführen.

Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

  1. Aktualisieren Sie das Helm-Repository, um die aktuelle Version aller Helm-Charts in diesem Repository abzurufen.

    helm repo update
    
  2. Optional: Laden Sie das aktuellste Helm-Chart auf Ihre lokale Maschine herunter. Extrahieren Sie anschließend das Paket und überprüfen Sie die Datei release.md auf die neuesten Releaseinformationen.

    helm pull iks-charts/ibmcloud-block-storage-plugin --untar
    
  3. Suchen Sie den Releasenamen und den Namensbereich des Blockspeicher-Helm-Charts, das Sie in Ihrem Cluster installiert haben.

    helm ls -A
    

    Beispielausgabe

    NAME            NAMESPACE   REVISION    UPDATED                             STATUS      CHART                                   APP VERSION
    block-plugin    default     1           2022-01-21 09:02:46.11622 -0500 EST deployed        bmcloud-block-storage-plugin-v2.1.5
    
  4. Führen Sie ein Upgrade des IBM Cloud Block Storage-Plug-ins auf die aktuelle Version durch. Geben Sie den Releasenamen und den Namensbereich an, die Sie zuvor abgerufen haben.

    helm upgrade RELEASE-NAME iks-charts/ibmcloud-block-storage-plugin -n NAMESPACE
    
  5. Optional: Wenn Sie das Plug-in aktualisieren, wird die Festlegung auf die Speicherklasse default aufgehoben. Wenn Sie statt der Speicherklasse 'standard' eine Speicherklasse Ihrer Wahl festlegen möchten, führen Sie den folgenden Befehl aus.

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

IBM Cloud Block Storage-Plug-in entfernen

Wenn Sie IBM Cloud Block Storage in Ihrem Cluster nicht bereitstellen und verwenden wollen, können Sie das Diagramm Helm deinstallieren.

Durch das Entfernen des Plug-ins werden keine vorhandenen PVCs, PVs oder Daten entfernt. Wenn Sie das Plug-in entfernen, werden alle zugehörigen Pods und Dämongruppen aus Ihrem Cluster entfernt. Sie können keinen neuen Blockspeicher für Ihren Cluster bereitstellen oder vorhandene PVCs und PVs für Blockspeicher verwenden, nachdem Sie das Plug-in entfernt haben.

Vorbereitende Schritte:

Gehen Sie wie folgt vor, um das Plug-in zu entfernen:

  1. Suchen Sie den Releasenamen und den Namensbereich des Blockspeicher-Helm-Charts, das Sie in Ihrem Cluster installiert haben.

    helm ls -A
    

    Beispielausgabe

    NAME            NAMESPACE   REVISION    UPDATED                             STATUS   CHART                                  APP VERSION
    block-plugin    default     1           2022-01-21 09:02:46.11622 -0500 EST deployed    ibmcloud-block-storage-plugin-v2.1.5
    
  2. Löschen Sie das IBM Cloud Block Storage-Plug-in.

    helm uninstall NAME -n kube-system
    
  3. Überprüfen Sie, dass die Blockspeicher-Pods entfernt wurden.

    kubectl get pods -n kube-system | grep block
    

    Das Entfernen der Pods war erfolgreich, wenn in Ihrer CLI-Ausgabe keine Pods angezeigt werden.

  4. Überprüfen Sie, dass die Blockspeicherklassen entfernt wurden. Das Entfernen der Speicherklassen war erfolgreich, wenn in Ihrer CLI-Ausgabe keine Speicherklassen angezeigt werden.

    kubectl get sc | grep block
    

Blockspeicherkonfiguration festlegen

IBM Cloud Kubernetes Service stellt vordefinierte Speicherklassen für Blockspeicher zur Verfügung, die Sie verwenden können, um Blockspeicher mit einer bestimmten Konfiguration bereitzustellen.

Jede Speicherklasse gibt den Typ des Blockspeichers an, den Sie bereitstellen, einschließlich der verfügbaren Größe, der E/A-Operationen pro Sekunde, des Dateisystems und der Aufbewahrungsrichtlinie.

Stellen Sie sicher, dass die Speicherkonfiguration sorgfältig ausgewählt ist, damit genügend Kapazität zum Speichern Ihrer Daten vorhanden ist. Nachdem Sie einen bestimmten Speichertyp mithilfe einer Speicherklasse bereitgestellt haben, können Sie den Typ oder die Aufbewahrungsrichtlinie für die Speichereinheit nicht ändern. Sie können jedoch die Größe und die E/A-Operationen pro Sekunde ändern, wenn Sie Ihre Speicherkapazität und die Leistung erhöhen möchten. Um den Typ und die Aufbewahrungsrichtlinie für Ihren Speicher zu ändern, müssen Sie eine neue Speicherinstanz erstellen und die Daten aus der alten Speicherinstanz in die neue kopieren.

  1. Listen Sie die in IBM Cloud® Kubernetes Service verfügbaren Speicherklassen auf.

    kubectl get sc | grep block
    

    Beispielausgabe

    ibmc-block-bronze                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-custom                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-gold                        ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-retain-bronze               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-custom               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-gold                 ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-silver               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-silver                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    
  2. Überprüfen Sie die Konfiguration einer Speicherklasse.

    kubectl describe storageclass STORAGECLASS
    

    Weitere Informationen zu den einzelnen Speicherklassen finden Sie in der Speicherklassenreferenz. Wenn Sie das Gewünschte nicht finden, ziehen Sie in Erwägung, eine eigene angepasste Speicherklasse zu erstellen. Prüfen Sie zunächst die Beispiele für angepasste Speicherklassen.

  3. Wählen Sie den Typ des Blockspeichers aus, den Sie bereitstellen möchten.

    • Speicherklassen 'bronze', 'silver' und 'gold': Diese Speicherklassen stellen Endurance-Speicher bereit. Mit dem Endurance-Speicher können Sie in vordefinierten Tiers für E/A-Operationen pro Sekunde die Größe des Speichers in Gigabyte auswählen.
    • Speicherklasse 'custom': Diese Speicherklasse stellt Leistungsspeicher bereit. Mit dem Leistungsspeicher können Sie die Größe des Speichers und der E/A-Operationen pro Sekunde besser steuern.
  4. Wählen Sie für Ihren Blockspeicher die Größe und die Anzahl E/A-Operationen pro Sekunde aus. Die Größe und die Anzahl der E/A-Operationen pro Sekunde definieren die Gesamtzahl der E/A-Operationen pro Sekunde, die als Indikator für die Geschwindigkeit des Speichers dient. Je höher die Anzahl der E/A-Operationen pro Sekunde für Ihren Speicher ist, desto höher ist dessen Verarbeitungsgeschwindigkeit für Lese- und Schreiboperationen.

    • Speicherklassen 'bronze', 'silver' und 'gold': Diese Speicherklassen haben eine feste Anzahl von pro Gigabyte angegebenen E/A-Operationen pro Sekunde und werden auf SSD-Festplatten bereitgestellt. Die Gesamtzahl der E/A-Operationen pro Sekunde hängt von der Größe des von Ihnen ausgewählten Speichers ab. Sie können innerhalb des zulässigen Größenbereichs eine beliebige ganze Zahl von Gigabyte auswählen, z. B. 20, 256 oder 11854 Gigabyte. Um die Gesamtzahl der E/A-Operationen pro Sekunde zu ermitteln, müssen Sie die E/A-Operationen pro Sekunde mit der ausgewählten Größe multiplizieren. Wenn Sie beispielsweise in der Speicherklasse 'silver', die 4 E/A-Operationen pro Sekunde aufweist, als Größe des Blockspeichers 1000 Gigabyte (1000Gi) auswählen, hat Ihr Speicher eine Gesamtzahl von 4000 E/A-Operationen pro Sekunde.
    Tabelle der Größenbereiche der Speicherklasse und der IOPS pro Gigabyte
    Speicherklasse IOPS pro Gigabyte Größenbereich in Gigabyte
    Bronze 2 IOPS/GB 20-12000 Gi
    Silber 4 IOPS/GB 20-12000 Gi
    Gold 10 IOPS/GB 20-4000 Gi
    • Speicherklasse 'custom': Wenn Sie diese Speicherklasse auswählen, können Sie die gewünschte Größe und Anzahl der E/A-Operationen pro Sekunde besser steuern. Als Größe können Sie eine beliebige ganze Zahl von Gigabyte innerhalb des zulässigen Größenbereichs auswählen. Die von Ihnen gewählte Größe legt den Bereich der für Sie verfügbaren E/A-Operationen pro Sekunde fest. Sie können einen IOPS auswählen, der ein Vielfaches von 100 innerhalb des angegebenen Bereichs ist. Der von Ihnen ausgewählte Wert für E/A-Operationen pro Sekunde ist statisch und wird nicht mit der Größe des Speichers skaliert. Wenn Sie beispielsweise 40 Gigabyte (40Gi) mit 100 E/A-Operationen pro Sekunde auswählen, bleibt die Gesamtzahl der E/A-Operationen pro Sekunde bei 100. Das Verhältnis zwischen der Anzahl E/A-Operationen pro Sekunde und Gigabyte bestimmt auch den Typ der Festplatte, die für Sie bereitgestellt wird. Wenn Sie beispielsweise 500Gi mit 100 E/A-Operationen pro Sekunde verwenden, beträgt das Verhältnis von E/A-Operationen pro Sekunde zu Gigabyte 0,2. Speicher mit einem Verhältnis von kleiner-gleich 0,3 wird auf SATA-Festplatten bereitgestellt. Wenn das Verhältnis größer als 0,3 ist, wird Ihr Speicher auf SSD-Festplatten bereitgestellt.
    Table class size ranges and IOPS
    Größenbereich in Gigabyte IOPS-Bereich in Vielfachen von 100
    20-39 Gi 100-1000 IOPS
    40-79 Gi 100-2000 IOPS
    80-99 Gi 100-4000 IOPS
    100-499 Gi 100-6000 IOPS
    500-999 Gi 100-10000 IOPS
    1000-1999 Gi 100-20000 IOPS
    2000-2999 Gi 200-40000 IOPS
    3000-3999 Gi 200-48000 IOPS
    4000-7999 Gi 300-48000 IOPS
    8000-9999 Gi 500-48000 IOPS
    10000-12000 Gi 1000-48000 IOPS
  5. Wählen Sie aus, ob Ihre Daten nach dem Löschen des Clusters oder des Persistent Volume Claim (PVC) beibehalten werden sollen.

    • Wenn Sie die Daten beibehalten möchten, wählen Sie eine Speicherklasse vom Typ retain aus. Beim Löschen des PVC wird nur der PVC gelöscht. Der persistente Datenträger, die physische Speichereinheit im Konto der IBM Cloud-Infrastruktur und Ihre Daten sind weiterhin vorhanden. Um den Speicher zurückzufordern und in Ihrem Cluster erneut zu verwenden, müssen Sie den persistenten Datenträger entfernen und die Schritte zum Verwenden von vorhandenem Blockspeicher ausführen.
    • Wenn Sie möchten, dass der persistente Datenträger, die Daten und Ihre physische Blockspeichereinheit beim Löschen des Persistent Volume Claim (PVC) gelöscht werden, müssen Sie eine Speicherklasse ohne retain auswählen.
  6. Wählen Sie aus, ob Sie die Abrechnung auf Stundenbasis oder monatlich erhalten möchten. Die Standardeinstellung ist stündliche Abrechnung.

Verschlüsselung für Block Storage for Classic einrichten

Sie können Verschlüsselung für Block Storage for Classic mithilfe von IBM Key Protect einrichten.

Anhand des folgenden Beispiels wird erläutert, wie Sie eine Service-ID mit den erforderlichen Zugriffsrollen für Key Protect und Ihren Cluster erstellen. Die Berechtigungsnachweise dieser Service-ID werden verwendet, um die Verschlüsselung für Ihre Block Storage for Classic-Datenträger zu aktivieren.

Sie können die Verschlüsselung aktivieren, indem Sie einen geheimen Kubernetes-Schlüssel erstellen, der Ihren persönlichen API-Schlüssel verwendet, sofern Sie über die Servicezugriffsrolle Reader (Leseberechtigter) für Ihre Key Protect-Instanz sowie über die Plattformzugriffsrolle Viewer (Anzeigeberechtigter) und die Servicezugriffsrolle Writer (Schreibberechtigter) für Ihren Cluster verfügen.

Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

  1. Vergewissern Sie sich, dass Ihnen die Plattformzugriffsrolle 'Editor' (Bearbeiter) und die Servicezugriffsrolle 'Writer' (Schreibberechtigter) für Key Protect zugewiesen wurden, damit Sie Ihren eigenen Rootschlüssel zum Verschlüsseln Ihrer Block Storage for Classic-Instanz erstellen können. Sie können Ihre IAM-Zugriffsrollen in der IAM-Konsole einsehen. Weitere Informationen zu IAM-Rollen finden Sie unter IAM-Zugriff.

  2. Wenn Sie nicht über eine Key Protect-Instanz verfügen, stellen Sie eine bereit.

  3. Erstellen Sie einen Rootschlüssel. Der Rootschlüssel wird standardmäßig ohne Ablaufdatum erstellt.

  4. Erstellen Sie eine IAM-Service-ID. Ersetzen Sie <service_ID_name> durch den Namen, den Sie Ihrer Service-ID zuordnen möchten. Diese Service-ID wird für den Zugriff auf Ihre Key Protect-Instanz von Ihrem Block Storage for Classic-Datenträger verwendet.

    ibmcloud iam service-id-create <service_ID_name>
    

    Beispielausgabe

    OK
    Service ID test-id is created successfully
    ID            ServiceId-a1a11111-bb11-1111-a11b-1111111a11ba   
    Name          test-id   
    Description      
    CRN           crn:v1:bluemix:public:iam-identity::a/1a1111aa2b11111aaa1a1111aa2aa111::serviceid:ServiceId-a1a11111-bb11-1111-a11b-1111111a11bb   
    Version       1-bb11aa11a0aa1a11a011a1aaaa11a1bb   
    Locked        false
    
  5. Erstellen Sie einen API-Schlüssel für Ihre Service-ID. Ersetzen Sie <api-key-name> durch einen Namen für Ihren API-Schlüssel und ersetzen Sie <service_ID_name> durch den Namen der Service-ID, die Sie erstellen. Speichern Sie Ihren API-Schlüssel, da er später nicht mehr abgerufen werden kann. Dieser API-Schlüssel wird in einem späteren Schritt in einem geheimen Kubernetes-Schlüssel in Ihrem Cluster gespeichert.

    ibmcloud iam service-api-key-create <api_key_name> <service_ID_name>
    
  6. Rufen Sie eine Liste der IAM-fähigen Services in Ihrem Konto ab und notieren Sie sich den Namen der Key Protect-Instanz, die Sie erstellt haben.

    ibmcloud resource service-instances
    
  7. Rufen Sie die GUID Ihrer Key Protect-Instanz ab. Die ID wird verwendet, um eine IAM-Servicerichtlinie für Ihre Service-ID zu erstellen.

    ibmcloud resource service-instance "<instance_name>" | grep GUID
    
  8. Erstellen Sie eine IAM-Servicerichtlinie, um Ihrer Service-ID Zugriff auf Ihre Key Protect-Instanz zu erteilen. Mithilfe des nachstehenden Befehls können Sie Ihrer Service-ID den Zugriff Reader (Leseberechtigter) auf Ihre Key Protect-Instanz erteilen. Die Zugriffsrolle 'Reader' ist die minimale Servicezugriffsrolle, die Ihre Service-ID haben muss, um Key Protect-Schlüsseln abrufen zu können. Weitere Informationen finden Sie unter Benutzerzugriff verwalten für Key Protect.

    ibmcloud iam service-policy-create <service_ID_name> --roles Reader --service-name kms --service-instance <service_instance_GUID>
    
  9. Erstellen Sie eine weitere IAM-Servicezugriffsrichtlinie, um Ihrer Service-ID Zugriff auf Ihren Cluster zu erteilen. Mit dem folgenden Befehl werden Ihrer Service-ID die Plattformzugriffsrolle Anzeigeberechtigter und die Servicezugriffsrolle Schreibberechtigter für Ihren Cluster erteilt. Sie können Ihre Cluster-ID abrufen, indem Sie ibmcloud ks cluster get <cluster_name> ausführen.

    ibmcloud iam service-policy-create <service_ID_name> --roles Writer,Viewer --service-name containers-kubernetes --service-instance <cluster_ID>
    
  10. Wenn Sie bereits das Helm-Chart ibmcloud-block-storage-plugin installiert haben, müssen Sie dieses Helm-Chart entfernen und eine neue Version installieren.

    Wenn Sie das Plug-in ohne Verwendung von Helm installiert haben, müssen Sie die Bereitstellung des Block Storage-Plug-ins sowie alle zugehörigen Ressourcen manuell entfernen, bevor Sie eine neue Version installieren.

    helm uninstall <name> <namespace>
    
  11. Installieren Sie das Helm-Chart ibmcloud-block-storage-plugin.

    helm install <name> iks-charts/ibmcloud-block-storage-plugin
    
  12. Erstellen Sie den Namensbereich ibm-block-secrets.

    kubectl create ns ibm-block-secrets
    
  13. Erstellen Sie im Namensbereich ibm-block-secrets eine Rollenbindung für das Block Storage-Plug-in.

    kubectl create rolebinding ibmcloud-block-storage-plugin-byok --clusterrole=ibmcloud-block-storage-plugin-byok --serviceaccount=kube-system:ibmcloud-block-storage-plugin --group system:nodes --namespace=ibm-block-secrets
    
  14. Erstellen Sie einen geheimen Kubernetes-Schlüssel namens secret.yaml, der die Berechtigungsnachweise für den Zugriff auf Ihren Rootschlüssel in Ihrer Key Protect-Serviceinstanz enthält.

    1. Erstellen Sie eine Konfigurationsdatei für den geheimen Schlüssel.
        apiVersion: v1
        kind: Secret
        metadata:
          labels:
            kmsConfig: kpc-secretLabel
          name: <secret_name> # Enter a name for your secret. Example: my_secret
          namespace: <namespace> # Enter the name of the namespace where you want to create the secret. The secret must be in same namespace where your app is deployed. Example: default
        stringData:
        config: |-
            {
                "api_key":"<service_id_api_key>", # Enter the API key for the service ID that you created. Example: "AA1aAAaA1a21AAaA1aAAaAa-AA-1AAaaA1aA1aAaaaAA"
                "iam_endpoint":"https://iam.cloud.ibm.com",
                "key_protect_endpoint":"https://<region>.kms.cloud.ibm.com", # Example: "https://us-east.kms.cloud.ibm.com"
                "root_key_crn":"<rook_key_crn>", # Example: "crn:v1:bluemix:public:kms:<region>:a/1ab011ab2b11111aaa1a1111aa1aa111:11aa111a-1111-11a1-a111-a11a111aa111:key:11a11111-1a1a-111a-111a-11111a1a1aa1",
                "version":""
            }
        type: ibm.io/kms-config
        ```
        `stringData.config.key_protect_endpoint`
        :   Geben Sie den regionalen Endpunkt Ihrer Key Protect-Instanz ein. Eine Liste der Key Protect-Endpunkte finden Sie unter [Regionen und Endpunkte](/docs/key-protect?topic=key-protect-regions).
    
        `stringData.config.root_key_crn`
        :   Geben Sie die Berechtigungsnachweise (CRN) des Rootschlüssels ein, den Sie erstellt haben. Führen Sie die folgenden Schritte aus, um Ihre Stammschlüssel-CRN abzurufen.
            1. Navigieren Sie zur Ressourcenliste in [IBM Cloud-Konsole](https://cloud.ibm.com/resources){: external}.
            2. Klicken Sie auf **Services** und klicken Sie anschließend auf Ihre Key Protect Instanz.
            3. Suchen Sie Ihren Rootschlüssel im **Aktionsmenü** und klicken Sie anschließend auf **CRN anzeigen**.
            4. Klicken Sie auf die Schaltfläche **Kopieren**, um den CRN zu kopieren.
    
    1. Erstellen Sie den geheimen Schlüssel in Ihrem Cluster.
    
    ```sh {: pre}
        kubectl apply -f secret.yaml
        ```
    1. Stellen Sie sicher, dass Ihr geheimer Schlüssel erstellt wurde.
    
    ```sh {: pre}
        kubectl get secrets
        ```
    
  15. Wählen Sie zwischen den folgenden Optionen, um eine „ Block Storage for Classic “-Instanz zu erstellen, die Daten mit Ihrem Root-Schlüssel verschlüsselt.

Verschlüsseln von Volume-Daten mithilfe einer eigenen Speicherklasse

Sie können Apps bereitstellen, die verschlüsselte Volumes verwenden, indem Sie zunächst eine eigene Speicherklasse erstellen.

Anhand der folgenden Schritte wird erläutert, wie eine angepasste, verschlüsselte Speicherklasse erstellt wird, die Sie verwenden können, um mehrere verschlüsselte Blockspeicherinstanzen mit derselben Konfiguration zu erstellen. Wenn Sie einen verschlüsselten PVC mithilfe einer von IBM bereitgestellten Speicherklasse erstellen wollen, können Sie zu diesem Zweck direkt in Ihrem PVC auf die Key Protect-Berechtigungsnachweise verweisen.

  1. Entscheiden Sie sich für eine Speicherkonfiguration.

  2. Erstellen Sie Ihre eigene Speicherklasse, die eine verschlüsselte Blockspeicherinstanz bereitstellt, indem Sie eine der von „ IBM “ bereitgestellten Speicherklassen als Grundlage verwenden. Sie können die Details einer Speicherklasse abrufen, indem Sie kubectl get sc <storageclass_name> -o yamlausführen. Das folgende Beispiel basiert auf der Speicherklasse ibmc-block-retain-bronze.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <name> # Enter the name of the storage class. Example: my_custom_storageclass
    parameters:
      billingType: hourly
      classVersion: "2"
      fsType: ext4
      iopsPerGB: "2"
      sizeRange: '[20-12000]Gi'
      type: Endurance
      encrypted: "true" # Enter "true" to enable encryption.
      encryptionKeySecret: <secret_name> # # #nter the name of the secret that you created earlier.Example: my_secret
      encryptionKeyNamespace: <namespace> # # #nter the namespace where you created your secret. Example: default
    provisioner: ibm.io/ibmc-block
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    
  3. Erstellen Sie die Speicherklasse in Ihrem Cluster.

    kubectl apply -f storageclass.yaml
    
  4. Fügen Sie „ Block Storage for Classic “ zu Ihrer App hinzu, indem Sie mithilfe Ihrer eigenen Speicherklasse ein PVC erstellen.

  5. Überprüfen Sie die Verschlüsselung Ihrer Block Storage for Classic-Datenträger.

Erstellen Sie einen PVC, der auf Ihren geheimen Block Storage for Classic-Schlüssel verweist.

Sie können eine verschlüsselte Instanz von Block Storage for Classic bereitstellen, indem Sie einen PVC erstellen, für den der geheime Kubernetes-Schlüssel angegeben wird, in dem Ihre Key Protect-Berechtigungsnachweise enthalten sind.

Die folgenden Schritte zeigen, wie Sie in Ihrem PVC auf Ihre Key Protect-Berechtigungsnachweise verweisen können, um eine verschlüsselte Block Storage for Classic-Instanz zu erstellen. Um mehrere verschlüsselte Datenträger zu erstellen, ohne die Key Protect-Berechtigungsnachweise in jedem einzelnen PVC anzugeben, können Sie eine angepasste, verschlüsselte Speicherklasse erstellen.

  1. Überprüfen Sie die bereitgestellten Block Storage for Classic-Speicherklassen, um zu ermitteln, welche Speicherklasse die Anforderungen Ihrer App am besten erfüllt. Wenn die bereitgestellten Speicherklassen Ihre App-Anforderungen nicht erfüllen, können Sie eine eigene individuelle Speicherklasse erstellen.

  2. Erstellen Sie eine PVC-Konfigurationsdatei namens pvc.yaml, die auf den geheimen Kubernetes-Schlüssel verweist, in dem Sie die Key Protect-Serviceberechtigungsnachweise gespeichert haben. Informationen zum Erstellen dieses geheimen Schlüssels finden Sie unter Verschlüsselung für Block Storage for Classic einrichten.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <pvc_name> # Enter a name for your PVC.
      annotations:
      volume.beta.kubernetes.io/storage-class: "<storage_class>" # Enter a storage class. To see a list of storageclasses run `kubectl get storageclasses`.
      labels:
        encrypted: "true"
        encryptionKeyNamespace: <namespace> # Enter the namespace where your secret was created.
        encryptionKeySecret: <secret_name> # Enter the name of the secret you created.
    spec:
      accessModes:
        - ReadWriteOnce
        resources:
        requests:
            storage: 20Gi
    
  3. Erstellen Sie die PVC in Ihrem Cluster.

    kubectl apply -f pvc.yaml
    
  4. Überprüfen Sie den Status Ihres PVC.

    kubectl get pvc
    
  5. Warten Sie, bis Ihr PVC gebunden worden ist, und erstellen Sie dann eine Bereitstellung, die Ihren PVC verwendet.

  6. Überprüfen Sie die Verschlüsselung Ihrer Block Storage for Classic-Datenträger.

Verschlüsselung Ihrer Block Storage for Classic-Datenträger überprüfen

Sie können die Verschlüsselung Ihrer Datenträger anhand des Datenträgermountpfads überprüfen.

  1. Melden Sie sich bei Ihrem App-Pod an. Ersetzen Sie <pod_name> durch den Namen des Pods, der Ihren verschlüsselten Block Storage for Classic-Datenträger anhängt.

    kubectl exec <pod_name> -it bash
    
  2. Listen Sie das Dateisystem Ihres Pods auf.

    df -h
    
  3. Überprüfen Sie den Dateisystempfad für Ihren verschlüsselten Block Storage for Classic-Datenträger.

    • Verschlüsselte Datenträger haben die Pfadstruktur /dev/mapper/<pvc-ID_encrypted>. In diesem Beispiel wird der verschlüsselte Datenträger an den Dateipfad /test in dem Pod angehängt.
        Filesystem                                            Size  Used Avail Use% Mounted on
        overlay                                                98G  8.2G   85G   9% /
        tmpfs                                                  64M     0   64M   0% /dev
        tmpfs                                                 2.0G     0  2.0G   0% /sys/fs/cgroup
        /dev/mapper/pvc-a011a111-1111-1111-111a-aaa1a1111a11_encrypted   20G   45M   20G   1% /test
        ```
    * Unverschlüsselte Datenträger haben die Pfadstruktur `dev/mapper/<random_string>`.
    
    ```sh {: screen}
        Filesystem                                     Size  Used Avail Use% Mounted on
        overlay                                         98G   16G   78G  17% /
        tmpfs                                           64M     0   64M   0% /dev
        tmpfs                                          7.9G     0  7.9G   0% /sys/fs/cgroup
        /dev/mapper/3600a09803830476e733f4e477370716e   24G   45M   24G   1% /test
        ```
    

Durch das Entfernen Ihres geheimen Kubernetes-Schlüssels wird der Zugriff auf die Datenträgerdaten nicht widerrufen. Wenn Sie eine Podbereitstellung (Bereitstellung nur für einen Pod) erstellt haben, müssen Sie den entsprechenden Pod löschen. Wenn Sie eine Bereitstellung erstellt haben, müssen Sie die entsprechende Bereitstellung löschen.

Blockspeicher zu Apps hinzufügen

Erstellen Sie einen Persistent Volume Claim (PVC), um Blockspeicher für Ihren Cluster dynamisch bereitzustellen. Mithilfe der dynamischen Bereitstellung wird der übereinstimmende persistente Datenträger (PV) automatisch erstellt und die tatsächliche Speichereinheit in Ihrem Konto der IBM Cloud-Infrastruktur bestellt.

Blockspeicher wird mit dem Zugriffsmodus ReadWriteOnce geliefert. Sie können ihn jeweils immer nur an einen Pod auf einem Workerknoten im Cluster anhängen.

Vorbereitende Schritte:

Möchten Sie den Blockspeicher in einer statusabhängigen Gruppe bereitstellen? Weitere Informationen finden Sie unter Blockspeicher in statusabhängiger Gruppe verwenden.

Gegen Sie wie folgt vor, um Blockspeicher hinzuzufügen:

  1. Erstellen Sie eine Konfigurationsdatei, um Ihren PVC zu definieren, und speichern Sie die Konfiguration als .yaml-Datei.

    • Beispiel für Bronze-, Silber-und Gold-Speicherklassen: Die folgende .yaml-Datei erstellt einen Anspruch namens block-storage-pvc der Speicherklasse "ibmc-block-silver" (stündlich in Rechnung gestellt) mit einer Gigabyte-Größe von 24Gi.
        apiVersion: v1
        kind: PersistentVolumeClaim
        metadata:
          name: block-storage-pvc
          labels:
            billingType: "hourly"
            region: us-south
            zone: dal13
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 24Gi
          storageClassName: ibmc-block-silver
        ```
    -  **Beispiel für die Verwendung Ihrer eigenen Speicherklasse**
            Die folgende Datei `.yaml` erstellt einen Claim mit dem Namen `block-storage-pvc` der Speicherklasse `ibmc-block-retain-custom`, die stündlich in Rechnung gestellt wird, mit einer Gigabyte-Größe von `45Gi` und einer IOPS-Größe von `"300"`.
    
    ```yaml {: codeblock}
        apiVersion: v1
        kind: PersistentVolumeClaim
        metadata:
          name: block-storage-pvc
          labels:
            billingType: "hourly"
            region: us-south
            zone: dal13
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 45Gi
              iops: "300"
          storageClassName: ibmc-block-retain-custom
        ```
    
        `name`
        :   Geben Sie den Namen des PVC ein.
    
        `billingType`
        :   Geben Sie im Abschnitt für Metadatenbezeichnungen an, welche Häufigkeit als Grundlage für die Berechnung Ihrer Speicherrechnung verwendet wird: monatlich ('monthly') oder stündlich ('hourly'). Der Standardwert ist „stündlich".
    
        `region`
        :   Geben Sie im Abschnitt für Metadatenbezeichnungen die Region an, in der der Blockspeicher bereitgestellt werden soll. Bei Angabe der Region müssen Sie auch eine Zone angeben. Wenn Sie keine Region angeben oder die angegebene Region nicht gefunden wird, wird der Speicher in derselben Region wie Ihr Cluster erstellt. Diese Option wird nur mit dem IBM Cloud Block Storage-Plug-in Version 1.0.1 oder höher unterstützt. Wenn Sie einen Mehrzonencluster haben, wird bei älteren Plug-in-Versionen die Zone, in der Ihr Speicher bereitgestellt wird, im Umlaufverfahren ausgewählt, um die Datenträgeranforderungen gleichmäßig auf alle Zonen zu verteilen. Zur Angabe der Zone für Ihren Speicher können Sie zuerst eine [angepasste Speicherklasse](#block_multizone_yaml) erstellen. Erstellen Sie anschließend einen PVC mit der angepassten Speicherklasse.
    
        `zone`
        :   Geben Sie im Abschnitt für Metadatenbezeichnungen die Zone an, in der der Blockspeicher bereitgestellt werden soll. Bei Angabe der Zone müssen Sie auch eine Region angeben. Wenn Sie keine Zone angeben oder die angegebene Zone nicht in einem Mehrzonencluster gefunden wird, wird die Zone im Umlaufverfahren ausgewählt. Diese Option wird nur mit dem IBM Cloud Block Storage-Plug-in Version 1.0.1 oder höher unterstützt. Wenn Sie einen Mehrzonencluster haben, wird bei älteren Plug-in-Versionen die Zone, in der Ihr Speicher bereitgestellt wird, im Umlaufverfahren ausgewählt, um die Datenträgeranforderungen gleichmäßig auf alle Zonen zu verteilen. Zur Angabe der Zone für Ihren Speicher können Sie zuerst eine [angepasste Speicherklasse](#block_multizone_yaml) erstellen. Erstellen Sie anschließend einen PVC mit der angepassten Speicherklasse.
    
        `storage`
        :   Geben Sie unter "spec" im Abschnitt "resources" -> "requests" die Größe des Blockspeichers in Gigabyte (Gi) an. Nach der Bereitstellung des Speichers können Sie die Größe des Blockspeichers nicht mehr ändern. Stellen Sie sicher, dass Sie eine Größe angeben, die dem Umfang der Daten entspricht, die Sie speichern möchten.
    
        `iops`
        :   Diese Option steht ausschließlich für Ihre eigenen benutzerdefinierten Speicherklassen zur Verfügung (`ibmc-block-custom / ibmc-block-retain-custom`). Geben Sie im Abschnitt „Resources Requests“ der Spezifikation die Gesamtzahl der IOPS für den Speicher an und wählen Sie dabei ein Vielfaches von 100 innerhalb des zulässigen Bereichs aus. Wenn Sie einen Wert für die E/A-Operationen pro Sekunde auswählen, der nicht aufgelistet ist, wird der Wert aufgerundet.
    
        `storageClassName`
        :   Geben Sie im Abschnitt 'spec' den Namen der Speicherklasse ein, die Sie für die Bereitstellung von Blockspeicher verwenden möchten. Sie können entweder [von IBM bereitgestellte Speicherklassen](#block_storageclass_reference) oder [eigene Speicherklasse erstellen](#block_custom_storageclass). Wenn Sie keine Speicherklasse angeben, wird der persistente Datenträger mit der Standardspeicherklasse `ibmc-file-bronze` erstellt.
    
    Wenn Sie eine angepasste Speicherklasse verwenden möchten, erstellen Sie den PVC mit dem entsprechenden Speicherklassennamen, einem gültigen Wert für IOPS (E/A-Operationen pro Sekunde) und einer Angabe für die Größe.
    {: tip}
    
    
  2. Erstellen Sie den PVC.

    kubectl apply -f block-storage.yaml
    
  3. Überprüfen Sie, ob Ihr PVC erstellt und an den persistenten Datenträger (PV) gebunden wurde. Dieser Prozess kann einige Minuten dauern.

    kubectl get pvc
    

    Beispielausgabe

    NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
    block-storage-pvc              Bound    pvc-1aa1aaaa-11a1-48d1-ab11-11b11111f3bc   45Gi       RWO            ibmc-block-silver   150m
    
  4. Um den PV an Ihre Bereitstellung anzuhängen, erstellen Sie eine .yaml-Konfigurationsdatei und geben Sie den PVC an, der den persistenten Datenträger bindet.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: <deployment_name>
      labels:
        app: <deployment_label>
    spec:
      selector:
        matchLabels:
          app: <app_name>
      template:
        metadata:
          labels:
            app: <app_name>
        spec:
          containers:
          - image: <image_name>
            name: <container_name>
            volumeMounts:
            - name: <volume_name>
              mountPath: /<file_path>
          volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>
    
    app
    Geben Sie bei 'metadata' eine Bezeichnung für die Bereitstellung ein.
    matchLabels.app und labels.app
    Geben Sie bei 'spec: selector' und 'template: metadata' eine Bezeichnung für Ihre App ein.
    image
    Der Name des Container-Image, das Sie verwenden möchten. Führen Sie ibmcloud cr image-list aus, um die verfügbaren Images in Ihrem IBM Cloud Container Registry-Konto aufzulisten.
    name
    Der Name des Containers, den Sie in Ihrem Cluster bereitstellen möchten.
    mountPath
    Geben Sie im Abschnitt 'containers: volumeMounts' den absoluten Pfad des Verzeichnisses ein, an das der Datenträger im Container angehängt ist. Daten, die in den Mountpfad geschrieben werden, werden im Stammverzeichnis in Ihrer physischen Blockspeicherinstanz gespeichert. Wenn Sie ein Volume für mehrere Apps gemeinsam nutzen möchten, können Sie für jede Ihrer Apps Teilpfade des Volumes festlegen.
    name
    Geben Sie im Abschnitt 'containers: volumeMounts' den Namen des Datenträgers an, der an Ihren Pod angehängt werden soll.
    name
    Geben Sie im Abschnitt 'volumes' den Namen des Datenträgers ein, der an Ihren Pod angehängt werden soll. Dieser Name ist in der Regel mit volumeMounts/name identisch.
    claimName
    Geben Sie im Abschnitt 'volumes: persistentVolumeClaim' den Namen des PVC ein, der den physischen Datenträger (PV) bindet, den Sie verwenden möchten.
  5. Erstellen Sie die Implementierung.

    kubectl apply -f <local_yaml_path>
    
  6. Überprüfen Sie, dass der persistente Datenträger erfolgreich angehängt wurde.

    kubectl describe deployment <deployment_name>
    

    Der Mountpunkt ist im Feld Datenträgermounts angegeben und der Datenträger im Feld Datenträger .

    Volume Mounts:
        /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro)
        /volumemount from myvol (rw)
    ...
    Volumes:
    myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    block-storage-pvc
        ReadOnly:    false
    

Vorhandenen Blockspeicher in Ihrem Cluster verwenden

Wenn Sie über ein vorhandenes physisches Speichergerät verfügen, das Sie in Ihrem Cluster verwenden möchten, können Sie die PV und die PVC manuell erstellen, um den Speicher statisch bereitzustellen.

Bevor Sie mit dem Anhängen Ihres vorhandenen Speichers an eine App beginnen können, müssen Sie alle erforderlichen Informationen für Ihren persistenten Datenträger abrufen.

Informationen des vorhandenen Blockspeichers abrufen

  1. Rufen Sie einen API-Schlüssel für Ihr Konto der IBM Cloud-Infrastruktur ab oder generieren Sie einen API-Schlüssel.

    1. Melden Sie sich beim Infrastrukturportal „ IBM Cloud “ an.
    2. Wählen Sie Konto, dann Benutzer und dann Benutzerliste aus.
    3. Suchen Sie nach Ihrer Benutzer-ID.
    4. Klicken Sie in der Spalte API-SCHLÜSSEL auf Generieren, um einen API-Schlüssel zu generieren, oder auf Anzeigen, um Ihren vorhandenen API-Schlüssel anzuzeigen.
  2. Rufen Sie den API-Benutzernamen für Ihr Konto der IBM Cloud-Infrastruktur ab.

    1. Wählen Sie im Menü Benutzerliste Ihre Benutzer-ID aus.
    2. Suchen Sie im Abschnitt API-Zugriffsinformationen nach Ihrem API-Benutzernamen.
  3. Melden Sie sich beim Befehlszeilen-Plug-in der IBM Cloud-Infrastruktur an.

    ibmcloud sl init
    
  4. Wählen Sie die Authentifizierung anhand des Benutzernamens und des API-Schlüssels für Ihr Konto der IBM Cloud-Infrastruktur aus.

  5. Geben Sie den Benutzernamen und den API-Schlüssel ein, die Sie in den vorherigen Schritten abgerufen haben.

  6. Listen Sie verfügbare Blockspeichereinheiten auf.

    ibmcloud sl block volume-list
    

    Beispielausgabe

    id          username              datacenter   storage_type                capacity_gb   bytes_used   lunId   
    11111111    IBM01AAA1111111-1     wdc07        endurance_block_storage     45            -            2      
    
  7. Rufen Sie die Datenträgerdetails ab. Ersetzen Sie <volume_ID> durch die ID des Blockspeicherdatenträgers, die Sie in Schritt 6 abgerufen haben.

    ibmcloud sl block volume-detail <volume_ID>
    

    Beispielausgabe

    ID                         11111111
    User name                  IBM01AAA1111111-1   
    Type                       endurance_block_storage   
    Capacity (GB)              45   
    LUN Id                     2   
    IOPs                       100   
    Datacenter                 wdc07   
    Target IP                  10.XXX.XX.XXX  
    # of Active Transactions   0   
    Replicant Count            0
    
  8. Notieren Sie die ID, Capacity, LUN Id, Datacenter und Target IP des Datenträgers, den Sie an Ihren Cluster anhängen möchten. Hinweis: Wenn Sie einen vorhandenen Speicher an einen Cluster anhängen möchten, müssen Sie in derselben Zone, in der sich auch der Speicher befindet, einen Workerknoten haben. Führen Sie ibmcloud ks worker ls --cluster <cluster_name_or_ID> aus, um die Zone Ihres Workerknotens zu überprüfen.

Persistent Volume (PV) und übereinstimmenden Persistent Volume Claim (PVC) erstellen

  1. Optional: Wenn Sie Speicher haben, den Sie mit einer retain-Speicherklasse bereitgestellt haben, werden der persistente Datenträger und die physische Speichereinheit nicht entfernt, wenn Sie den PVC entfernen. Zum Wiederverwenden des Speichers in Ihrem Cluster müssen Sie zuerst den persistenten Datenträger entfernen. Listen Sie die vorhandenen PVs auf und suchen Sie den PV, der zu Ihrem persistenten Speicher gehört. Der persistente Datenträger hat den Status "freigegeben" (released).

    kubectl get pv
    
  2. Entfernen Sie den persistenten Datenträger (Persistent Volume, PV)

    kubectl delete pv <pv_name>
    
  3. Überprüfen Sie, ob der PV entfernt wurde.

    kubectl get pv
    
  4. Erstellen Sie eine Konfigurationsdatei für Ihren persistenten Datenträger (PV). Schließen Sie die Parameter ein, die Sie zuvor abgerufen haben.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: "block-storage-pv" # Enter a name for your PV. For example, my-static-pv.
      labels:
         failure-domain.beta.kubernetes.io/region: "<region>" # Example us-east.
         failure-domain.beta.kubernetes.io/zone: "<zone>" # Example: wdc04. See /docs/containers?topic=containers-regions-and-zones#zones-sz
    spec:
      capacity:
        storage: "<storage>"
      accessModes:
        - ReadWriteOnce
      flexVolume:
        driver: "ibm/ibmc-block"
        fsType: "<fs_type>" # Enter ext or xfs
        options:
          "Lun": "<Lun_ID>"
          "TargetPortal": "<TargetPortal>"
          "VolumeID": "<VolumeID>"
          "volumeName": "block-storage-pv" # Enter the same value as your PV name from metadata.name
    
    name
    Geben Sie Ihrem PV einen Namen. Beispiel: block-storage-pv. Beachten Sie, dass Sie diesen Wert auch in spec.FlexVolume.options als volumeName eingeben müssen.
    labels
    Geben Sie die Region und die Zone ein, die Sie zuvor abgerufen haben. Zum Anhängen des Speichers an Ihren Cluster müssen Sie mindestens einen Workerknoten in der Region und Zone haben, in der sich auch der persistente Speicher befindet. Zum Abrufen der Datenträgerdetails führen Sie ibmcloud sl block volume-list aus, um die Datenträger-ID abzurufen, und führen Sie anschließend ibmcloud sl block volume-detail <volume_ID> aus, um die Details Ihres Datenträgers abzurufen.
    region
    Geben Sie die Region ein, in der sich Ihr Blockspeicher befindet. Beachten Sie, dass sich Ihr Cluster und Blockspeicher in derselben Region befinden müssen. Führen Sie ibmcloud ks cluster ls aus, um Ihren Clusterstandort zu finden. Weitere Informationen zu den verfügbaren Regionen und Zonen finden Sie unter Regionen und Zonen. Zum Beispiel us-east.
    zone
    Geben Sie die Zone ein, in der sich Ihr Speicherdatenträger befindet. Zum Abrufen der Datenträgerdetails führen Sie ibmcloud sl block volume-list aus, um die Datenträger-ID abzurufen, und führen Sie anschließend ibmcloud sl block volume-detail <volume_ID> aus, um die Details Ihres Datenträgers abzurufen. Beachten Sie, dass zum Zuordnen von Blockspeicher zu Ihrem Cluster ein Workerknoten in derselben Zone verfügbar sein muss wie der Datenträger, den Sie zuordnen möchten. Führen Sie ibmcloud ks worker ls -c <cluster> aus, um die Zonen Ihrer Workerknoten zu suchen. Zum Beispiel wdc04.
    storage
    Geben Sie die Speichergröße des vorhandenen Blockspeicherdatenträgers ein, der Ihrem Cluster zugeordnet werden soll. Die Größe des Speichers muss in Gigabyte angegeben werden, z. B. 20Gi (20 GB) oder 1000Gi (1 TB). Um die Datenträgerdetails abzurufen, führen Sie ibmcloud sl block volume-list aus, um die Datenträger-ID abzurufen, und führen Sie anschließend ibmcloud sl block volume-detail <volume_ID> aus, um die Details Ihres Datenträgers abzurufen.
    fsType
    Geben Sie den Dateisystemtyp ein, der für den vorhandenen Blockspeicher konfiguriert ist. Wählen Sie ext4 oder xfs aus. Wenn Sie diese Option nicht angeben, nimmt der persistente Datenträger standardmäßig den Wert ext4 an. Wenn der falsche Wert für fsType definiert ist, ist zwar die PV-Erstellung erfolgreich, das Anhängen des PVs an einen Pod schlägt jedoch fehl. Zum Abrufen der Datenträgerdetails führen Sie ibmcloud sl block volume-list aus, um die Datenträger-ID abzurufen, und führen Sie anschließend ibmcloud sl block volume-detail <volume_ID> aus, um die Details Ihres Datenträgers abzurufen.
    Lun
    Geben Sie die LUN-ID Ihres Blockspeicherdatenträgers ein. Zum Abrufen der Datenträgerdetails führen Sie ibmcloud sl block volume-list aus, um die Datenträger-ID abzurufen, und führen Sie anschließend ibmcloud sl block volume-detail <volume_ID> aus, um die Details Ihres Datenträgers abzurufen.
    TargetPortal
    Geben Sie die IP-Adresse Ihres Blockspeichers ein. Zum Abrufen des Parameters TargetPortal führen Sie ibmcloud sl block volume-list aus, um die Datenträger-ID abzurufen. Führen Sie anschließend ibmcloud sl block volume-detail <volume_ID> aus und notieren Sie sich die Target IP in der Ausgabe.
    VolumeId
    Geben Sie die ID Ihres Blockspeichers ein. Führen Sie ibmcloud sl block volume-list aus, um die Datenträgerdetails abzurufen.
    volumeName
    Geben Sie denselben Wert wie Ihren PV-Namen ein. Beispiel: block-storage-pv.
  5. Erstellen Sie den persistenten Datenträger (PV) in Ihrem Cluster.

    kubectl apply -f pv.yaml
    
  6. Überprüfen Sie, dass das PV erstellt wurde.

    kubectl get pv
    
  7. Erstellen Sie eine weitere Konfigurationsdatei, um Ihren Persistent Volume Claim (PVC) zu erstellen. Damit der Persistent Volume Claim (PVC) mit dem zuvor erstellten Persistent Volume übereinstimmt, müssen Sie denselben Wert für storage und accessMode auswählen. Das Feld storage-class muss eine leere Zeichenfolge enthalten. Wenn eines dieser Felder nicht mit dem PV übereinstimmt, wird stattdessen automatisch ein neuer PV erstellt.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: block-storage-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: "20Gi"
      storageClassName: ""
    
  8. Erstellen Sie Ihre PVC.

    kubectl apply -f static-pvc.yaml
    
  9. Überprüfen Sie, ob Ihr PVC erstellt und an das zuvor erstellte PV gebunden wurde. Dieser Prozess kann einige Minuten dauern.

    kubectl describe pvc static-pvc
    

    Beispielausgabe

    Name:          static-pvc
    Namespace:     default
    StorageClass:  
    Status:        Bound
    
  10. Optional Speichern Sie die folgende Beispiel-Pod-Konfiguration als Datei namens pod.yaml.

    apiVersion: v1
    kind: Pod
    metadata:
      name: block-storage
      labels:
        app: block-storage
    spec:
      containers:
        - name: block-storage
          image: nginx
          command: ["/bin/sh"]
          args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"]
          workingDir: /home
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          volumeMounts:
            - name: block-storage-pv
              mountPath: /home
      volumes:
        - name: block-storage-pv
          persistentVolumeClaim:
            claimName: block-storage-pvc
    
  11. Erstellen Sie den Pod in Ihrem Cluster.

    kubectl create -f pod.yaml
    
  12. Nachdem der Pod den Status Running hat, rufen Sie die Protokolle ab.

    kubectl logs
    

    Beispielausgabe

    2022-01-21 16:11:00
    

Sie haben erfolgreich ein PV (Persistent Volume) erstellt und an einen PVC (Persistent Volume Claim) gebunden. Anschließend haben Sie eine App bereitgestellt, die Blockspeicher verwendet. Clusterbenutzer können nun PVC an Ihre Bereitstellungen anhängen und mit dem Lesen und Schreiben auf dem persistenten Datenträger beginnen.

Blockspeicher in statusabhängiger Gruppe verwenden

Wenn Sie über eine statusabhängige App wie zum Beispiel eine Datenbank verfügen, können Sie statusabhängige Gruppen erstellen, von denen Blockspeicher zum Speichern der App-Daten verwendet wird. Alternativ können Sie eine IBM Cloud-Database as a Service und die Daten in der Cloud speichern.

Was muss ich beachten, wenn ich einem Stateful Set Blockspeicher hinzufüge?
Wenn Sie Speicher zu einer statusabhängigen Gruppe hinzufügen möchten, geben Sie die Speicherkonfiguration im Abschnitt volumeClaimTemplates der YAML-Datei für die statusabhängige Gruppe an. volumeClaimTemplates ist die Basis für den PVC (Persistent Volume Claim) und kann die Speicherklasse und die Größe der IOPS (E/A-Operationen pro Sekunde) des Blockspeichers enthalten, den Sie bereitstellen möchten. Wenn in volumeClaimTemplates jedoch Bezeichnungen enthalten sein sollen, werden diese Bezeichnungen von Kubernetes beim Erstellen des PVC nicht eingeschlossen. Stattdessen müssen Sie die Bezeichnungen direkt zur statusabhängigen Gruppe hinzufügen.

Sie können nicht zwei statusabhängige Gruppen gleichzeitig bereitstellen. Wenn Sie versuchen, eine statusabhängige Gruppe zu erstellen, bevor eine andere vollständig bereitgestellt wird, kann die Bereitstellung der statusabhängigen Gruppe zu unerwarteten Ergebnissen führen.

Wie kann ich mein Stateful Set in einer bestimmten Zone erstellen?
In einem Mehrzonencluster können Sie die Zone und die Region, in der Sie die statusabhängige Gruppe erstellen möchten, in den Abschnitten spec.selector.matchLabels und spec.template.metadata.labels der YAML-Datei für die statusabhängige Gruppe angeben. Alternativ können Sie diese Bezeichnungen zu einer angepassten Speicherklasse hinzufügen und diese Speicherklasse im Abschnitt volumeClaimTemplates der statusabhängigen Gruppe verwenden.
Kann ich die Zuordnung eines PV zu meinem zustandsbehafteten Pod aufschieben, bis der Pod bereit ist?
Ja, Sie können Ihre eigene Speicherklasse erstellen, die das Feld volumeBindingMode: WaitForFirstConsumer enthält.
Welche Möglichkeiten habe ich, um einem Stateful Set Blockspeicher hinzuzufügen?
Falls Sie automatisch einen PVC erstellen möchten, wenn Sie eine statusabhängige Gruppe erstellen, verwenden Sie die dynamische Bereitstellung. Außerdem können Sie mit der statusabhängigen Gruppe PVCs vorab bereitstellen oder vorhandene PVCs verwenden.

PVC mit dynamischer Bereitstellung erstellen, wenn Sie eine statusabhängige Gruppe erstellen

Verwenden Sie diese Option, wenn bei der Erstellung einer statusabhängigen Gruppe automatisch ein PVC erstellt werden soll.

Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

Führen Sie die folgenden Schritte durch, um zu überprüfen, ob alle vorhandenen statusabhängigen Gruppen in Ihrem Cluster vollständig bereitgestellt wurden. Wenn das Bereitstellen einer statusabhängigen Gruppe noch nicht abgeschlossen ist, können Sie nicht mit dem Erstellern Ihrer statusabhängigen Gruppe beginnen. Sie müssen warten, bis alle statusabhängigen Gruppen im Cluster vollständig bereitgestellt wurden, um unerwartete Ergebnisse zu vermeiden.

  1. Listen Sie vorhandene statusabhängige Gruppen im Cluster auf.

    kubectl get statefulset --all-namespaces
    

    Beispielausgabe

    NAME              DESIRED   CURRENT   AGE
    mystatefulset     3         3         6s
    
  2. Zeigen Sie den Podstatus jeder einzelnen statusabhängigen Gruppe an, um sicherzustellen, dass die Bereitstellung der statusabhängigen Gruppe abgeschlossen ist.

    kubectl describe statefulset <statefulset_name>
    

    Beispielausgabe

    Name:               nginx
    Namespace:          default
    CreationTimestamp:  Fri, 05 Oct 2022 13:22:41 -0400
    Selector:           app=nginx,billingType=hourly,region=us-south,zone=dal10
    Labels:             app=nginx
    billingType=hourly
    region=us-south
    zone=dal10
    Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apps/v1","kind":"StatefulSet","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"podManagementPolicy":"Par..."
    Replicas:           3 desired | 3 total
    Pods Status:        0 Running / 3 Waiting / 0 Succeeded / 0 Failed
    Pod Template:
    Labels:  app=nginx
    billingType=hourly
    region=us-south
    zone=dal10
    ...
    

    Eine statusabhängige Gruppe wird vollständig bereitgestellt, wenn die Anzahl der Replikate, die im Abschnitt Replicas (Replikate) der CLI-Ausgabe enthalten sind, mit der Anzahl der aktiven Pods im Abschnitt Pods Status (Podstatus) übereinstimmt. Wenn eine statusabhängige Gruppe noch nicht vollständig bereitgestellt wird, müssen Sie warten, bis die Bereitstellung abgeschlossen ist, bevor Sie fortfahren können.

  3. Erstellen Sie eine Konfigurationsdatei für die statusabhängige Gruppe und den Service, den Sie verwenden, um die statusabhängige Gruppe zugänglich zu machen. Im folgenden Beispiel wird veranschaulicht, wie NGINX als statusabhängige Gruppe mit drei Replikaten bereitgestellt wird. Für jedes Replikat wird eine 20-Gigabyte-Blockspeichereinheit basierend auf den Spezifikationen bereitgestellt, die in der Speicherklasse ibmc-block-retain-bronze definiert sind. Alle Speichereinheiten werden in der Zone dal10 bereitgestellt. Da von anderen Zonen nicht auf Blockspeicher zugegriffen werden kann, werden alle Replikate der statusabhängigen Gruppe auch auf Workerknoten bereitgestellt, die sich in dal10 befinden.

    apiVersion: v1
    kind: Service
    metadata:
     name: nginx
     labels:
    app: nginx
    spec:
    ports:
    - port: 80
        name: web
    clusterIP: None
    selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx
    spec:
      serviceName: "nginx"
      replicas: 3
      podManagementPolicy: Parallel
      selector:
        matchLabels:
        app: nginx
        billingType: "hourly"
        region: "us-south" # Enter the region where your cluster is located.
        zone: "dal10"
    template:
      metadata:
      labels:
          app: nginx
          billingType: "hourly"
          region: "us-south"
          zone: "dal10"
      spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: myvol
        mountPath: /usr/share/nginx/html
    volumeClaimTemplates:
    - metadata:
        name: myvol
        spec:
        accessModes:
        - ReadWriteOnce
        resources:
            requests:
            storage: 20Gi
            iops: "300" #required only for performance storage
        storageClassName: ibmc-block-retain-bronze
    

    Im folgenden Beispiel wird veranschaulicht, wie NGINX als statusabhängige Gruppe mit drei Replikaten bereitgestellt wird. Die statusabhängige Gruppe gibt die Region und Zone nicht an, in der der Blockspeicher erstellt wird. Stattdessen verwendet die statusabhängige Gruppe eine Anti-Affinität-Regel, um sicherzustellen, dass die Pods auf Workerknoten und Zonen verteilt werden. Durch die Definition von topologykey: failure-domain.beta.kubernetes.io/zone kann der Kubernetes-Scheduler keinen Pod auf einem Workerknoten planen, wenn sich der Workerknoten in derselben Zone wie ein Pod mit der Bezeichnung app: nginx befindet. Für jeden Pod einer statusabhängigen Gruppe werden zwei PVCs wie im Abschnitt volumeClaimTemplates definiert erstellt, jedoch wird die Erstellung der Blockspeicherinstanzen verzögert, bis ein Pod der statusabhängigen Gruppe geplant wird, der den Speicher verwendet. Diese Konfiguration wird als topologiebewusste Volume-Planung bezeichnet.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ibmc-block-bronze-delayed
    parameters:
      billingType: hourly
      classVersion: "2"
      fsType: ext4
      iopsPerGB: "2"
      sizeRange: '[20-12000]Gi'
      type: Endurance
    provisioner: ibm.io/ibmc-block
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      serviceName: "nginx"
      replicas: 3
      podManagementPolicy: "Parallel"
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          affinity:
            podAntiAffinity:
              preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 100
                podAffinityTerm:
                  labelSelector:
                    matchExpressions:
                    - key: app
                      operator: In
                      values:
                      - nginx
                  topologyKey: failure-domain.beta.kubernetes.io/zone
          containers:
          - name: nginx
            image: registry.k8s.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: myvol1
              mountPath: /usr/share/nginx/html
            - name: myvol2
              mountPath: /tmp1
      volumeClaimTemplates:
      - metadata:
          name: myvol1
        spec:
          accessModes:
          - ReadWriteOnce # access mode
          resources:
            requests:
              storage: 20Gi
          storageClassName: ibmc-block-bronze-delayed
      - metadata:
          name: myvol2
        spec:
          accessModes:
          - ReadWriteOnce # access mode
          resources:
            requests:
              storage: 20Gi
          storageClassName: ibmc-block-bronze-delayed
    
    name
    Geben Sie einen Namen für die statusabhängige Gruppe ein. Der von Ihnen eingegebene Name wird verwendet, um den Namen für Ihren PVC im folgenden Format zu erstellen: <volume_name>-<statefulset_name>-<replica_number>.
    serviceName
    Geben Sie den Namen des Service ein, der verwendet werden soll, um die statusabhängige Gruppe zugänglich zu machen.
    replicas
    Geben Sie die Anzahl der Replikate für die statusabhängige Gruppe ein.
    podManagementPolicy
    Geben Sie die Richtlinie für die Podverwaltung ein, die Sie für die statusabhängige Gruppe verwenden möchten.
    • OrderedReady: Bei Verwendung dieser Option werden die Replikate der statusabhängigen Gruppe nacheinander bereitgestellt. Beispiel: Wenn Sie drei Replikate angeben, wird von Kubernetes der PVC für das erste Replikat erstellt, bis zur Bindung des PVC gewartet, das Replikat der statusabhängigen Gruppe bereitgestellt und der PVC an das Replikat angehängt. Wenn die Bereitstellung abgeschlossen ist, wird das zweite Replikat bereitgestellt. Weitere Informationen zu dieser Option finden Sie unter „ OrderedReady-Pod-Verwaltung
    • Parallel: Mit dieser Option wird die Bereitstellung aller statusabhängigen Gruppen-Replikate gleichzeitig gestartet. Wenn von Ihrer App die parallele Bereitstellung von Replikaten unterstützt wird, können Sie mit dieser Option Bereitstellungszeit für die PVCs und Replikate der statusabhängigen Gruppe sparen.
    matchLabels
    Geben Sie im Abschnitt 'spec: selector' alle Bezeichnungen ein, die Sie in die statusabhängige Gruppe und in den PVC einschließen möchten. Bezeichnungen, die Sie im volumeClaimTemplates Ihrer statusabhängigen Gruppe angeben, werden von Kubernetes nicht berücksichtigt. Nachfolgend werden Beispiele für Bezeichnungen aufgeführt, die Sie einschließen können:
    • Region und Zone: Wenn alle Replikate und PVCs der statusabhängigen Gruppe in einer bestimmten Zone erstellt werden sollen, fügen Sie beide Bezeichnungen hinzu. Sie können die Zone und Region auch in der Speicherklasse angeben, die Sie verwenden. Wenn Sie keine Zone und keine Region angeben und über einen Mehrzonencluster verfügen, wird die Zone, in der Ihr Speicher bereitgestellt wird, im Umlaufverfahren ausgewählt, um Datenträgeranforderungen gleichmäßig auf alle Zonen zu verteilen.
    • billingType: Geben Sie die Abrechnungsart ein, die Sie für Ihre PVCs verwenden möchten. Sie können zwischen "Stündlich" (hourly) und "Monatlich" (monthly) auswählen. Wenn Sie diese Bezeichnung nicht angeben, werden alle PVCs mit einem stündlichen Abrechnungstyp erstellt.
    labels
    Geben Sie im Abschnitt mit den Metadaten der Spezifikationsvorlage dieselben Bezeichnungen ein, die Sie im Abschnitt spec.selector.matchLabels hinzugefügt haben.
    affinity
    Geben Sie im Abschnitt 'spec: template: metadata' Ihre Anti-Affinität-Regel an, um sicherzustellen, dass Ihre Pods der statusabhängigen Gruppe auf Workerknoten und Zonen verteilt werden. Das Beispiel zeigt eine Anti-Affinität-Regel, bei der der Pod der statusabhängigen Gruppe es bevorzugt, nicht auf einem Workerknoten geplant zu werden, auf dem ein Pod ausgeführt wird, der die Bezeichnung app: nginx hat. Die Bezeichnung topologykey: failure-domain.beta.kubernetes.io/zone schränkt diese Anti-Affinitätsregel noch weiter ein und verhindert, dass der Pod auf einem Workerknoten geplant wird, wenn sich der Workerknoten in derselben Zone wie ein Pod befindet, der die Bezeichnung app: nginx hat. Durch die Verwendung dieser Anti-Affinitätsregel können Sie Anti-Affinität über Workerknoten und Zonen hinweg erreichen.
    name
    Geben Sie im Abschnitt 'spec: volumeClaimTemplates: metadata' einen Namen für Ihren Datenträger ein. Verwenden Sie den Namen, den Sie im Abschnitt spec.containers.volumeMount.name definiert haben. Der hier eingegebene Name wird verwendet, um den Namen für Ihren PVC im Format <volume_name>-<statefulset_name>-<replica_number> zu erstellen.
    storage
    Geben Sie im Abschnitt 'spec: volumeClaimTemplates: spec: resources: requests' die Größe des Blockspeichers in Gigabyte (Gi) ein.
    iops
    Falls Sie Leistungsspeicher (Performance-Speicher) bereitstellen möchten, geben Sie im Abschnitt 'spec: volumeClaimTemplates: spec: resources: requests' die Anzahl der IOPS (E/A-Operationen pro Sekunde) ein. Wenn Sie eine Endurance-Speicherklasse verwenden und einen IOPS-Wert angeben, wird der IOPS-Wert ignoriert. Stattdessen wird der in der Speicherklasse angegebene IOPS-Wert verwendet.
    storageClassName
    Geben Sie im Abschnitt 'spec: volumeClaimTemplates: spec' den Namen der Speicherklasse ein, die Sie für die Bereitstellung von Blockspeicher verwenden möchten. Um vorhandene Speicherklassen aufzulisten, führen Sie den Befehl „ kubectl get sc | grep block “ aus. Wenn Sie keine Speicherklasse angeben, wird der PVC mit der Standardspeicherklasse erstellt, die in Ihrem Cluster festgelegt ist. Stellen Sie sicher, dass von der Standardspeicherklasse der Bereitsteller ibm.io/ibmc-block verwendet wird, damit die statusabhängige Gruppe mit Blockspeicher bereitgestellt wird.
  4. Erstellen Sie die statusabhängige Gruppe.

    kubectl apply -f statefulset.yaml
    
  5. Warten Sie, bis die statusabhängige Gruppe bereitgestellt ist.

    kubectl describe statefulset <statefulset_name>
    

    Wenn Sie den aktuellen Status der PVCs anzeigen möchten, führen Sie kubectl get pvc aus. Der Name Ihrer PVC ist als <volume_name>-<statefulset_name>-<replica_number> formatiert.

Statische Bereitstellung unter Verwendung bestehender PVCs mit einem Stateful Set

Sie können die PVCs vor der Erstellung der statusabhängigen Gruppe vorab bereitstellen oder die vorhandenen PVCs mit der statusabhängigen Gruppe verwenden.

Wenn Sie die PVCs dynamisch beim Erstellen der statusabhängigen Gruppe bereitstellen, wird der Name des PVC auf der Basis der Werte zugeordnet, die Sie in der YAML-Datei für die statusabhängige Gruppe verwendet haben. Wenn von der statusabhängigen Gruppe vorhandene PVCs verwendet werden sollen, muss der Name der PVCs mit dem Namen übereinstimmen, der automatisch bei Verwendung der dynamischen Bereitstellung verwendet werden würde.

Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

  1. Wenn Sie den PVC für Ihre statusabhängige Gruppe vorab bereitstellen wollen, bevor Sie die statusabhängige Gruppe erstellen, führen Sie die Schritte 1 bis 3 unter Blockspeicher zu Apps hinzufügen aus, um einen PVC für jedes Replikat der statusabhängigen Gruppe zu erstellen. Stellen Sie sicher, dass Sie Ihren PVC mit einem Namen im folgenden Format erstellen: <volume_name>-<statefulset_name>-<replica_number>.
volume_name

Verwenden Sie den Namen, den Sie im Abschnitt spec.volumeClaimTemplates.metadata.name Ihrer statusabhängigen Gruppe angeben möchten (z. B. nginxvol).

statefulset_name

Verwenden Sie den Namen, den Sie im Abschnitt metadata.name Ihrer statusabhängigen Gruppe angeben möchten (z. B. nginx_statefulset).

replica_number

Geben Sie die Nummer Ihres Replikats ein, beginnend mit 0.

Wenn Sie zum Beispiel drei Replikate für eine statusabhängige Gruppe erstellen müssen, erstellen Sie drei PVCs mit den folgenden Namen: nginxvol-nginx_statefulset-0, nginxvol-nginx_statefulset-1 und nginxvol-nginx_statefulset-2.

Wollen Sie einen PVC und einen PV für eine vorhandene Speichereinheit erstellen? Erstellen Sie Ihren PVC und Ihren PV mithilfe der statischen Bereitstellung.

  1. Führen Sie die Schritte unter Dynamische Bereitstellung: PVC beim Erstellen einer statusabhängigen Gruppe erstellen aus, um Ihre statusabhängige Gruppe zu erstellen. Der Name Ihres PVC hat das Format <volume_name>-<statefulset_name>-<replica_number>. Stellen Sie sicher, dass Sie die folgenden Werte aus den PVC-Namen in der Spezifikation der statusabhängigen Gruppe verwenden: spec.volumeClaimTemplates.metadata.name : Geben Sie die Komponente <volume_name> Ihres PVC-Namens ein.
metadata.name

Geben Sie die Komponente <statefulset_name> Ihres PVC-Namens ein.

spec.replicas

Geben Sie die Anzahl der Replikate ein, die Sie für Ihre statusabhängige Gruppe erstellen möchten. Die Anzahl der Replikate muss mit der Anzahl der PVCs identisch sein, die Sie zuvor erstellt haben.

Wenn sich Ihre PVCs in verschiedenen Zonen befinden, fügen Sie keine Regions- oder Zonenbezeichnung in Ihre statusabhängige Gruppe ein.

  1. Stellen Sie sicher, dass die PVCs in den Replikatpods Ihrer statusabhängigen Gruppe verwendet werden, indem Sie die Pods in Ihrem Cluster auflisten. Suchen Sie die Pods, die zur statusabhängigen Gruppe gehören.

    kubectl get pods
    
  2. Stellen Sie sicher, dass der vorhandene PVC an das Replikat der statusabhängigen Gruppe angehängt ist. Überprüfen Sie den Wert für ClaimName im Abschnitt Volumes (Datenträger) der CLI-Ausgabe.

    kubectl describe pod <pod_name>
    

    Beispielausgabe

    Name:           nginx-0
    Namespace:      default
    Node:           10.xxx.xx.xxx/10.xxx.xx.xxx
    Start Time:     Fri, 05 Oct 2022 13:24:59 -0400
    ...
    Volumes:
    myvol:
      Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
      ClaimName:  myvol-nginx-0
    ...
    

Größe und E/A-Operationen pro Sekunde Ihrer vorhandenen Speichereinheit ändern

Wenn Sie die Speicherkapazität oder die Leistung erhöhen möchten, können Sie den vorhandenen Datenträger ändern.

Informationen zur Abrechnung und die Schritte zur Verwendung der IBM Cloud-Konsole zum Ändern Ihres Speichers finden Sie unter Blockspeicherkapazität erweitern und E/A-Operationen pro Sekunde anpassen. Aktualisierungen, die Sie über die Konsole vornehmen, werden im persistenten Datenträger (PV - Persistent Volume) nicht widergespiegelt. Um diese Informationen zum PV hinzuzufügen, führen Sie kubectl patch pv <pv_name> aus und aktualisieren Sie die Größe und die E/A-Operationen pro Sekunde im Abschnitt Bezeichnungen und Anmerkung Ihres PV manuell.

  1. Listen Sie die PVCs in Ihrem Cluster auf und notieren Sie sich den Namen des zugehörigen persistenten Datenträgers in der Spalte VOLUME.

    kubectl get pvc
    

    Beispielausgabe

    NAME             STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
    myvol            Bound     pvc-01ac123a-123b-12c3-abcd-0a1234cb12d3   20Gi       RWO            ibmc-block-bronze    147d
    
  2. Wenn Sie die IOPS und die Größe für Ihren Blockspeicher ändern möchten, bearbeiten Sie zuerst die IOPS im Abschnitt metadata.labels.IOPS Ihres persistenten Datenträgers. Sie können den IOPS-Wert erhöhen oder verringern. Stellen Sie sicher, dass Sie für die E/A-Operationen pro Sekunde einen Wert angeben, der für Ihren Speichertyp unterstützt wird. Wenn Sie beispielsweise einen Endurance-Blockspeicher mit 4 IOPS haben, können Sie den IOPS-Wert entweder in 2 oder 10 ändern. Informationen zu weiteren unterstützten IOPS-Werten finden Sie unter Blockspeicherkonfiguration festlegen.

    kubectl edit pv <pv_name>
    

    Wenn Sie den IOPS-Wert über die CLI ändern, müssen Sie auch die Größe des Blockspeichers ändern. Wenn Sie nur den IOPS-Wert, nicht aber die Größe ändern wollen, müssen Sie die Änderung des IOPS-Werts über die Konsole anfordern.

  3. Bearbeiten Sie den PVC und fügen Sie die neue Größe im Abschnitt spec.resources.requests.storage für Ihren PVC hinzu. Sie können die Größe maximal in die von Ihrer Speicherklasse festgelegte maximale Kapazität ändern. Sie können Ihren vorhandenen Speicher nicht verkleinern. Informationen zu den Größen für Ihre Speicherklasse finden Sie unter Blockspeicherkonfiguration festlegen.

    kubectl edit pvc <pvc_name>
    
  4. Stellen Sie sicher, dass die Datenträgererweiterung angefordert wurde. Die Datenträgererweiterung wurde erfolgreich angefordert, wenn im Bedingungsabschnitt (FileSystemResizePendingConditions**) der CLI-Ausgabe eine Nachricht ** angezeigt wird.

    kubectl describe pvc <pvc_name>
    

    Beispielausgabe

    ...
    Conditions:
    Type                      Status  LastProbeTime                     LastTransitionTime                Reason  Message
    ----                      ------  -----------------                 ------------------                ------  -------
    FileSystemResizePending   True    Mon, 01 Jan 0001 00:00:00 +0000   Thu, 25 Apr 2022 15:52:49 -0400           Waiting for user to (re-)start a pod to finish file system resize of volume on node.
    
  5. Listen Sie alle Pods auf, die den PVC anhängen. Wenn Ihr PVC von einem Pod angehängt wird, wird die Datenträgererweiterung automatisch verarbeitet. Wenn Ihr PVC nicht von einem Pod angehängt wird, müssen Sie den PVC an einen Pod anhängen, damit die Datenträgererweiterung verarbeitet werden kann.

    kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
    

    Angehängte Pods werden im Format <pod_name>: <pvc_name> zurückgegeben.

  6. Wenn Ihr PVC nicht von einem Pod angehängt wird, erstellen Sie einen Pod oder eine Bereitstellung und hängen Sie den PVC an. Wenn Ihr PVC von einem Pod angehängt wird, fahren Sie mit dem nächsten Schritt fort.

  7. Stellen Sie sicher, dass die Größe und der IOPS-Wert im Abschnitt Labels Ihrer CLI-Ausgabe geändert wurden. Dieser Prozess kann einige Minuten dauern.

    kubectl describe pv <pv_name>
    

    Beispielausgabe

    ...
    Labels:       CapacityGb=50
    Datacenter=dal10
    IOPS=500
    
  8. Melden Sie sich bei dem Pod an, der den PVC anhängt.

    kubectl exec <pod-name> -it -- bash
    
  9. Führen Sie den folgenden Befehl aus, um Hostbinärdateien zu verwenden.

    chroot /host
    
  10. Ändern Sie die Größe des Dateisystems.

    sudo resize2fs <filesystem-path>
    

    Beispielbefehl

    sudo resize2fs /dev/vdg
    
  11. Überprüfen Sie, ob die Größe des Dateisystems geändert wurde.

    df -h
    

Daten sichern und wiederherstellen

Der Blockspeicher wird an derselben Position wie die Workerknoten in Ihrem Cluster bereitgestellt. Der Speicher wird auf in Gruppen zusammengefassten Servern von IBM gehostet, um Verfügbarkeit sicherzustellen, falls ein Server ausfallen sollte. Der Blockspeicher wird jedoch nicht automatisch gesichert und ist möglicherweise nicht zugänglich, wenn der gesamte Standort fehlschlägt. Um Ihre Daten vor Verlust oder Beschädigung zu schützen, können Sie regelmäßige Sicherungen konfigurieren, mit denen Sie bei Bedarf Daten wiederherstellen können.

Überprüfen Sie die folgenden Optionen zum Sichern und Wiederherstellen Ihres Blockspeichers:

Regelmäßige Snapshots einrichten

Sie können für Ihren Blockspeicher das Erstellen regelmäßiger Snapshots konfigurieren. Dies ist ein schreibgeschütztes Image, das den Status der Instanz zu einem bestimmten Zeitpunkt erfasst.

Um den Snapshot zu speichern, müssen Sie für den Snapshot Speicherplatz im Blockspeicher anfordern. Snapshots werden in der in derselben Zone vorhandenen Speicherinstanz gespeichert. Sie können Daten aus einer Momentaufnahme wiederherstellen, wenn ein Benutzer versehentlich wichtige Daten aus dem Datenträger entfernt. \n \n **Führen Sie die folgenden Schritte aus, um eine Momentaufnahme für Ihren Datenträger zu erstellen.

  1. Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

  2. Melden Sie sich an der Befehlszeilenschnittstelle ibmcloud sl an.

    ibmcloud sl init
    
  3. Listen Sie alle vorhandenen PVs in Ihrem Cluster auf.

    kubectl get pv
    
  4. Rufen Sie die Details für das PV ab, für das Snapshotspeicherplatz angefordert werden soll, und notieren Sie sich die Datenträger-ID, die Größe und die E/A-Operationen pro Sekunde (IOPS). Die Größe und die Anzahl der E/A-Operationen pro Sekunde werden im Abschnitt Labels der CLI-Ausgabe angezeigt.

    kubectl describe pv <pv_name>
    
  5. Um die Datenträger-ID zu finden, überprüfen Sie die Annotation ibm.io/network-storage-id der CLI-Ausgabe.

  6. Erstellen Sie die Snapshotgröße für den vorhandenen Datenträger mit den Parametern, die Sie im vorherigen Schritt abgerufen haben.

    ibmcloud sl block snapshot-order <volume_ID> --size <size> --tier <iops>
    
  7. Warten Sie, bis die Snapshotgröße erstellt wurde. Die Snapshotgröße wird erfolgreich bereitgestellt, wenn der Wert für Snapshot Size (GB) (Snapshotgröße (GB)) in der CLI-Ausgabe von "0" in die von Ihnen angeforderte Größe geändert wird.

    ibmcloud sl block volume-detail <volume_ID>
    
  8. Erstellen Sie einen Snapshot für den Datenträger und notieren Sie die ID des von Sie erstellten Snapshots.

    ibmcloud sl block snapshot-create <volume_ID>
    
  9. Überprüfen Sie, dass der Snapshot erfolgreich erstellt wurde.

    ibmcloud sl block snapshot-list <volume_ID>
    
  10. Legen Sie den Snapshotplan fest. Weitere Informationen zu den Optionen, die für Ihren Snapshotzeitplan verfügbar sind, finden Sie in der CLI-Dokumentation.

    ibmcloud sl block snapshot-enable VOLUME_ID <OPTIONS>
    
  11. Um Daten von einem Snapshot auf einem vorhandenen Datenträger wiederherzustellen, führen Sie den folgenden Befehl aus.

    ibmcloud sl block snapshot-restore <volume_ID> <snapshot_ID>
    

Replizieren von Snapshots in eine andere Zone

Um Daten vor einem Zonenausfall zu schützen, können Sie in einer Blockspeicherinstanz, die in einer anderen Zone konfiguriert ist, Snapshots replizieren.

Daten können nur aus dem primären Speicher an den Sicherungsspeicher repliziert werden. Sie können eine replizierte Blockspeicherinstanz nicht an einen Cluster anhängen. Wenn Ihr primärer Speicher fehlschlägt, können Sie Ihren replizierten Sicherungsspeicher manuell als primären Speicher festlegen. Anschließend können Sie ihn an den Cluster anhängen. Nachdem Ihr primärer Speicher wiederhergestellt wurde, können Sie die Daten aus dem Sicherungsspeicher wiederherstellen.

Speicher duplizieren

Sie können Ihre Blockspeicherinstanz in derselben Zone duplizieren, in der sich auch die ursprüngliche Speicherinstanz befindet.

Ein Duplikat hat dieselben Daten wie die Originalspeicherinstanz zu dem Zeitpunkt, an dem das Duplikat erstellt wurde. Verwenden Sie das Duplikat - im Gegensatz zu den Replikaten - als unabhängige Speicherinstanz. Erstellen Sie zur Vorbereitung einer Duplizierung zunächst Snapshots für den Datenträger.

Daten in IBM Cloud® Object Storage sichern

Sie können das Helm-Chart ibm-backup-restore verwenden, damit ein Pod für Sicherung und Wiederherstellung in Ihrem Cluster den Betrieb aufnimmt.

Dieser Pod enthält ein Script zur Ausführung einer einmaligen oder regelmäßigen Sicherung für alle PVCs (Persistent Volume Claims) in Ihrem Cluster. Die Daten werden in Ihrer IBM Cloud® Object Storage-Instanz gespeichert, die Sie in einer Zone konfiguriert haben.

Blockspeicher wird mit dem RWO-Zugriffsmodus (ReadWriteOnce) angehängt. This access allows only one pod to be mounted to the block storage at a time. Zum Sichern Ihrer Daten müssen Sie den Speicher von Ihrem App-Pod abhängen, ihn an Ihren Sicherungspod anhängen, die Daten sichern und den Speicher wieder an Ihren App-Pod anhängen.

Damit Ihre Daten noch besser hoch verfügbar sind und um Ihre App vor einem Zonenausfall zu schützen, konfigurieren Sie eine zweite Object Storage-Instanz und replizieren Sie die Daten zonenübergreifend. Falls Sie Daten von Ihrer Object Storage-Instanz wiederherstellen müssen, verwenden Sie das Wiederherstellungspod, das mit dem Helm-Chart bereitgestellt wird.

Kopieren von Daten in und aus Pods und Containern

Mit dem Befehlkubectl cp “ können Sie Dateien und Verzeichnisse in Pods oder bestimmte Container in Ihrem Cluster kopieren oder aus diesen herauskopieren.

Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

Wenn Sie den Befehl kubectl cp ausführen und keinen Container mit -c angeben, verwendet der Befehl den ersten verfügbaren Container im Pod.

Kopieren Sie Daten von Ihrem lokalen Rechner auf einen Pod in Ihrem Cluster.

kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath>

Kopieren Sie Daten von einem Pod in Ihrem Cluster auf Ihren lokalen Rechner.

kubectl cp <namespace>/<pod>:<pod_filepath>/<filename> <local_filepath>/<filename>

Kopieren Sie Daten von Ihrem lokalen Rechner in einen bestimmten Container, der in einem Pod Ihres Clusters läuft.

kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath> -c CONTAINER

Speicherklassenreferenz

Bronze

Name
ibmc-block-bronze
ibmc-block-retain-bronze
Typ
Endurance-Speicher
Dateisystem
ext4
IOPS pro Gigabyte
2
Größenbereich in Gigabyte
20-12000 Gi
Festplatte
SSD
Rückforderungsrichtlinie
ibmc-block-bronze: Löschen
ibmc-block-retain-bronze: Beibehalten

Silber

Name
ibmc-block-silver
ibmc-block-retain-silver
Typ
Endurance-Speicher
Dateisystem
ext4
IOPS pro Gigabyte
4
Größenbereich in Gigabyte
20-12000 Gi
Festplatte
SSD
Rückforderungsrichtlinie
ibmc-block-silver: Löschen
ibmc-block-retain-silver: Beibehalten

Gold

Name
ibmc-block-gold
ibmc-block-retain-gold
Typ
Endurance-Speicher
Dateisystem
ext4
IOPS pro Gigabyte
10
Größenbereich in Gigabyte
20-4000 Gi
Festplatte
SSD
Rückforderungsrichtlinie
ibmc-block-gold: Löschen
ibmc-block-retain-gold: Beibehalten

Angepasst

Name
ibmc-block-custom
ibmc-block-retain-custom
Typ
Performance-Dateisystem
ext4
E/A-Operationen pro Sekunde (IOPS) und Größe
Größenbereich im Gigabyte/IOPS-Bereich in Vielfachen von 100
  • 20-39 Gi / 100-1000 IOPS
  • 40-79 Gi / 100-2000 IOPS
  • 80-99 Gi / 100-4000 IOPS
  • 100-499 Gi / 100-6000 IOPS
  • 500-999 Gi / 100-10000 IOPS
  • 1000-1999 Gi / 100-20000 IOPS
  • 2000-2999 Gi / 200-40000 IOPS
  • 3000-3999 Gi / 200-48000 IOPS
  • 4000-7999 Gi / 300-48000 IOPS
  • 8000-9999 Gi / 500-48000 IOPS
  • 10000-12000 Gi / 1000-48000 IOPS
Festplatte
Das Verhältnis zwischen der Anzahl E/A-Operationen pro Sekunde und Gigabyte bestimmt den Typ der Festplatte, die bereitgestellt wird. Um das Verhältnis zwischen der Anzahl E/A-Operationen pro Sekunde zu Gigabyte zu bestimmen, teilen Sie die Anzahl E/A-Operationen pro Sekunde durch die Größe Ihres Speichers.
Beispiel: Sie haben 500Gi für den Speicher mit 100 IOPS ausgewählt. Ihr Verhältnis ist 0,2 (100 E/A-Operationen pro Sekunde/500 Gigabyte).
Übersicht über die Festplattentypen pro Verhältnis:
  • Kleiner-gleich 0,3: SATA
  • Größer als 0,3: SSD
Rückforderungsrichtlinie
ibmc-block-custom: Löschen
ibmc-block-retain-custom: Beibehalten

Beispiele für angepasste Speicherklassen (custom)

Sie können eine angepasste Speicherklasse erstellen und die Speicherklasse im PVC verwenden.

IBM Cloud Kubernetes Service stellt vordefinierte Speicherklassen bereit, um Blockspeicher mit einem besonderem Tier und einer besonderen Konfiguration bereitzustellen. In manchen Fällen kann es hilfreich sein, Speicher mit einer anderen Konfiguration bereitzustellen, der in den vordefinierten Speicherklassen nicht vorgesehen ist. Sie können die Beispiele in diesem Abschnitt verwenden, um Beispiele für angepasste Speicherklassen zu suchen.

Informationen zum Erstellen einer angepassten Speicherklasse finden Sie unter Speicherklasse anpassen. Verwenden Sie die angepasste Speicherklasse anschließend im PVC.

Topologieorientierten Speicher erstellen

Zur Verwendung von Blockspeicher in einem Mehrzonencluster muss Ihr Pod in derselben Zone wie Ihre Blockspeicherinstanz geplant werden, damit Sie Schreib- und Leseoperationen auf dem Datenträger ausführen können. Bevor die topologieorientierte Datenträgerplanung von Kubernetes eingeführt wurde, wurde die Blockspeicherinstanz automatisch durch die dynamische Bereitstellung Ihres Speichers erstellt, wenn ein PVC erstellt wurde. Wenn Sie Ihren Pod erstellten, versuchte der Kubernetes-Scheduler, den Pod in demselben Rechenzentrum wie Ihre Blockspeicherinstanz bereitzustellen.

Eine Erstellung der Blockspeicherinstanz ohne Kenntnis der Einschränkungen des Pods kann zu unerwünschten Ergebnissen führen. Zum Beispiel könnte Ihr Pod möglicherweise nicht auf demselben Workerknoten wie Ihr Speicher geplant werden, weil der Workerknoten über keine ausreichenden Ressourcen verfügt oder weil der Workerknoten einen Taint hat und das Planen des Pods nicht zulässt. Bei der topologieorientierten Datenträgerplanung wird die Blockspeicherinstanz verzögert, bis der erste Pod erstellt wird, der den Speicher verwendet.

Stellen Sie zur Verwendung der topologieorientierten Datenträgerplanung sicher, dass Sie das IBM Cloud Block Storage-Plug-in der Version 1.2.0 oder höher installiert haben.

Die folgenden Beispiele zeigen, wie Speicherklassen erstellt werden, die die Erstellung der Blockspeicherinstanz verzögern, bis der erste Pod, der diesen Speicher verwendet, zur Terminierung bereit ist. Zur Verzögerung der Erstellung müssen Sie die Option volumeBindingMode: WaitForFirstConsumer einschließen. Wenn Sie diese Option nicht angeben, wird volumeBindingMode automatisch auf Immediate gesetzt und die Blockspeicherinstanz wird erstellt, wenn Sie den PVC erstellen.

Beispiel für Endurance-Blockspeicher

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-bronze-delayed
  parameters:
    billingType: hourly
    classVersion: "2"
    fsType: ext4
    iopsPerGB: "2"
    sizeRange: '[20-12000]Gi'
    type: Endurance
  provisioner: ibm.io/ibmc-block
  reclaimPolicy: Delete
  volumeBindingMode: WaitForFirstConsumer

Beispiel für Performance-Blockspeicher

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-performance-storageclass
  labels:
  kubernetes.io/cluster-service: "true"
  provisioner: ibm.io/ibmc-block
  parameters:
    billingType: "hourly"
    classVersion: "2"
    sizeIOPSRange: |-
    "[20-39]Gi:[100-1000]"
    "[40-79]Gi:[100-2000]"
    "[80-99]Gi:[100-4000]"
    "[100-499]Gi:[100-6000]"
    "[500-999]Gi:[100-10000]"
    "[1000-1999]Gi:[100-20000]"
    "[2000-2999]Gi:[200-40000]"
    "[3000-3999]Gi:[200-48000]"
    "[4000-7999]Gi:[300-48000]"
    "[8000-9999]Gi:[500-48000]"
    "[10000-12000]Gi:[1000-48000]"
    type: "Performance"
  reclaimPolicy: Delete
  volumeBindingMode: WaitForFirstConsumer

Zone und Region angeben

Wenn Sie Ihren Blockspeicher in einer bestimmten Zone erstellen wollen, können Sie die Zone und die Region in einer angepassten Speicherklasse angeben.

Verwenden Sie die angepasste Speicherklasse, wenn Sie das IBM Cloud Block Storage-Plug-in Version 1.0.0 verwenden oder wenn Sie in einer bestimmten Zone Blockspeicher statisch bereitstellen möchten. In allen anderen Fällen geben Sie die Zone direkt im PVC an.

Die folgende .yaml-Datei passt eine Speicherklasse an, die auf der Speicherklasse ibm-block-silver ohne 'retain' (Beibehaltung) basiert: Der Typ (type) ist "Endurance", der Wert für iopsPerGB ist 4, der Wert für sizeRange ist "[20-12000]Gi" und für reclaimPolicy wird die Einstellung "Delete" festgelegt. Die Zone wird als dal12 angegeben. Lesen Sie in der Speicherklassenreferenz nach, wenn Sie eine andere Speicherklasse als Basis verwenden möchten.

Erstellen Sie die Speicherklasse in derselben Region und Zone wie Ihren Cluster und Ihre Workerknoten. Um die Region Ihres Clusters abzurufen, führen Sie ibmcloud ks cluster get --cluster <cluster_name_or_ID> aus und suchen Sie im Master-URL nach dem Regionspräfix, z. B. eu-de in https://c2.eu-de.containers.cloud.ibm.com:11111. Führen Sie ibmcloud ks worker ls --cluster <cluster_name_or_ID> aus, um die Zone Ihres Workerknotens abzurufen.

Beispiel für Endurance-Blockspeicher

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-silver-mycustom-storageclass
  labels:
    kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
  zone: "dal12"
  region: "us-south"
  type: "Endurance"
  iopsPerGB: "4"
  sizeRange: "[20-12000]Gi"
reclaimPolicy: "Delete"

Beispiel für Performance-Blockspeicher

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: ibmc-block-performance-storageclass
labels:
  kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
  zone: "dal12"
  region: "us-south"
  type: "Performance"
  sizeIOPSRange: |-
  "[20-39]Gi:[100-1000]"
  "[40-79]Gi:[100-2000]"
  "[80-99]Gi:[100-4000]"
  "[100-499]Gi:[100-6000]"
  "[500-999]Gi:[100-10000]"
  "[1000-1999]Gi:[100-20000]"
  "[2000-2999]Gi:[200-40000]"
  "[3000-3999]Gi:[200-48000]"
  "[4000-7999]Gi:[300-48000]"
  "[8000-9999]Gi:[500-48000]"
  "[10000-12000]Gi:[1000-48000]"
reclaimPolicy: "Delete"

Blockspeicher mit einem Dateisystem XFS anhängen

In den folgenden Beispielen wird eine Speicherklasse erstellt, die Blockspeicher mit einem Dateisystem XFS bereitstellt.

Beispiel für Endurance-Blockspeicher

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-custom-xfs
labels:
  addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
  type: "Endurance"
  iopsPerGB: "4"
  sizeRange: "[20-12000]Gi"
  fsType: "xfs"
reclaimPolicy: "Delete"

Beispiel für Performance-Blockspeicher

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-custom-xfs
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
  classVersion: "2"
  type: "Performance"
  sizeIOPSRange: |-
    [20-39]Gi:[100-1000]
    [40-79]Gi:[100-2000]
    [80-99]Gi:[100-4000]
    [100-499]Gi:[100-6000]
    [500-999]Gi:[100-10000]
    [1000-1999]Gi:[100-20000]
    [2000-2999]Gi:[200-40000]
    [3000-3999]Gi:[200-48000]
    [4000-7999]Gi:[300-48000]
    [8000-9999]Gi:[500-48000]
    [10000-12000]Gi:[1000-48000]
  fsType: "xfs"
reclaimPolicy: "Delete"

Persistenten Speicher aus einem Cluster entfernen

Wenn Sie in Ihrem Cluster persistenten Speicher konfigurieren, haben Sie drei Hauptkomponenten: den Persistent Volume Claim (PVC) von Kubernetes, der Speicher anfordert, den persistenten Datenträger (PV) von Kubernetes, der an einen Pod angehängt und im PVC beschrieben ist, sowie die Instanz der IBM Cloud-Infrastruktur, z. B. klassischer Dateispeicher oder Blockspeicher. Je nachdem, wie Sie Ihren Speicher erstellt haben, müssen Sie möglicherweise alle drei Komponenten separat löschen.

Erläuterungen zu den Optionen beim Entfernen von Speicher

Wie persistenter Speicher aus Ihrem IBM Cloud-Konto entfernt wird, hängt davon ab, wie Sie den Speicher eingerichtet haben und welche Komponenten Sie bereits entfernt haben.

Wird mein persistenter Speicher gelöscht, wenn ich meinen Cluster lösche?
Während der Cluster gelöscht wird, haben Sie die Option, den persistenten Speicher zu entfernen. Abhängig davon, wie Ihr Speicher bereitgestellt wurde, werden beim Entfernen des Speichers aber möglicherweise nicht alles Speicherkomponenten gelöscht. Wenn Sie Speicher dynamisch mit einer Speicherklasse bereitgestellt haben, für die „ reclaimPolicy: Delete “ festgelegt ist, werden Ihr PVC, Ihr PV und die Speicherinstanz automatisch gelöscht, sobald Sie den Cluster löschen. Bei statisch bereitgestelltem Speicher oder Speicher, den Sie mit einer Speicherklasse bereitgestellt haben, die „ reclaimPolicy: Retain “ festlegt, werden das PVC und das PV beim Löschen des Clusters entfernt, Ihre Speicherinstanz und Ihre Daten bleiben jedoch erhalten. Die Speicherinstanz wird Ihnen weiter berechnet. Wenn Sie den Cluster in einem nicht einwandfreien Zustand gelöscht haben, kann der Speicher auch dann noch vorhanden sein, wenn Sie ausgewählt haben, ihn zu entfernen.
Wie lösche ich den Speicher, wenn ich meinen Cluster behalten möchte?
Wenn Sie den Speicher dynamisch mit einer Speicherklasse bereitgestellt haben, die reclaimPolicy: Delete festlegt, können Sie den PVC entfernen, um den Löschprozess für den persistenten Speicher zu starten. Ihr PVC, der PV und die Speicherinstanz werden automatisch entfernt. Bei statisch bereitgestelltem Speicher oder bei Speicher, den Sie mit einer Speicherklasse bereitgestellt haben, für die „ reclaimPolicy: Retain “ festgelegt ist, müssen Sie das PVC, das PV und die Speicherinstanz manuell entfernen, um weitere Kosten zu vermeiden.
Wie wird die Abrechnung beendet, nachdem ich meinen Speicherplatz gelöscht habe?
Abhängig davon, welche Speicherkomponenten Sie löschen und wann Sie dies tun, kann der Abrechnungszyklus möglicherweise nicht sofort gestoppt werden. Wenn Sie den PVC und den PV, nicht aber die Speicherinstanz in Ihrem IBM Cloud-Konto, dann ist diese Instanz weiterhin vorhanden und wird Ihnen berechnet.

Wenn Sie den PVC, den PV und die Speicherinstanz löschen, wird der Abrechnungszyklus abhängig von dem billingType gestoppt, den Sie bei der Bereitstellung Ihres Speichers ausgewählt haben, und abhängig davon, wie Sie den Speicher löschen möchten.

  • Wenn Sie die Persistent-Storage-Instanz manuell über die „ IBM Cloud “-Konsole oder die CLI stornieren, erfolgt die Abrechnung wie folgt:

    • Speicher mit stündlicher Abrechnung: Die Abrechnung wird sofort gestoppt. Nachdem der Speicher storniert wurde, wird die Speicherinstanz möglicherweise für bis zu 72 Stunden in der Konsole angezeigt.
    • Speicher mit monatlicher Abrechnung: Sie können zwischen sofortiger Stornierung oder Stornierung zur Jährung des Vertragsbeginns wählen. In beiden Fällen werden Ihnen die Gebühren bis zum Ende des aktuellen Abrechnungszyklus berechnet und die Abrechnung wird für den nächsten Abrechnungszyklus gestoppt. Nachdem der Speicher storniert wurde, wird die Speicherinstanz möglicherweise für bis zu 72 Stunden in der Konsole oder der CLI angezeigt.
    • Sofortige Stornierung: Wählen Sie diese Option aus, um den Speicher sofort zu entfernen. Weder Sie noch Ihre Benutzer können den Speicher weiter nutzen oder Daten wiederherstellen.
    • Jährung des Vertragsbeginns: Wählen Sie diese Option aus, um den Speicher zur nächsten Jährung des Vertragsbeginns zu stornieren. Ihre Speicherinstanzen bleiben bis zur nächsten Jährung des Vertragsbeginns aktiv und Sie können sie bis zu diesem Datum weiterhin verwenden. So hat Ihr Team beispielsweise genug Zeit, Ihre Daten zu sichern.
  • Wenn Sie den Speicher dynamisch mit einer Speicherklasse bereitgestellt haben, die reclaimPolicy: Delete festlegt, und wenn Sie angeben, dass der PVC entfernt werden soll, werden der PV und die Speicherinstanz sofort entfernt. Bei Speicher mit stündlicher Abrechnung wird Abrechnung sofort gestoppt. Bei Speicher mit monatlicher Abrechnung wird Ihnen der Speicher noch für den Rest des Monats berechnet. Nachdem der Speicher entfernt und die Abrechnung gestoppt wurde, wird die Speicherinstanz möglicherweise für bis zu 72 Stunden in der Konsole oder der CLI angezeigt.

Was muss ich beachten, bevor ich den persistenten Speicher lösche?
Wenn Sie den persistenten Speicher bereinigen, werden alle Daten gelöscht, die in ihm gespeichert sind. Wenn Sie eine Kopie der Daten benötigen, erstellen Sie eine Sicherungskopie.
Ich habe meine Speicherinstanz gelöscht. Warum kann ich meine Instanz immer noch sehen?
Nach der Entfernung von persistentem Speicher kann es bis zu 72 Stunden dauern, bis die Entfernung vollständig verarbeitet wurde und bis der Speicher in der IBM Cloud-Konsole oder in der Befehlszeilenschnittstelle nicht mehr angezeigt wird.

Persistenten Speicher bereinigen

Entfernen Sie den PVC, den PV und die Speicherinstanz aus Ihrem IBM Cloud-Konto, um weitere Gebühren für Ihren persistenten Speicher zu vermeiden.

Vorbereitende Schritte:

Gehen Sie wie folgt vor, um persistente Daten zu bereinigen:

  1. Listen Sie die PVCs in Ihrem Cluster auf und notieren Sie sich folgende Einstellungen: NAME des Persistent Volume Claim, die Speicherklasse (STORAGECLASS) und den Namen des persistenten Datenträgers, der an den Persistent Volume Claim gebunden ist und als VOLUME angezeigt wird.

    kubectl get pvc
    

    Beispielausgabe

    NAME                  STATUS    VOLUME                                     CAPACITY   ACCESSMODES   STORAGECLASS            AGE
    claim1   Bound     pvc-06886b77-102b-11e8-968a-f6612bb731fb   20Gi       RWO           class       78d
    claim2     Bound     pvc-457a2b96-fafc-11e7-8ff9-b6c8f770356c   4Gi        RWX           class 105d
    claim3      Bound     pvc-1efef0ba-0c48-11e8-968a-f6612bb731fb   24Gi       RWX           class        83d
    
  2. Überprüfen Sie für die Speicherklasse die Einstellungen für ReclaimPolicy und billingType.

    kubectl describe storageclass <storageclass_name>
    

    Wenn die Zurückforderungsrichtlinie Delete (Löschen) enthält, werden Ihr persistenter Datenträger und der physische Speicher entfernt, wenn Sie den Persistent Volume Claim entfernen. Wenn die Zurückforderungsrichtlinie Retain (Beibehalten) enthält oder Sie Ihren Speicher ohne Speicherklasse bereitgestellt haben, werden Ihr persistenter Datenträger und der physische Speicher nicht entfernt, wenn Sie den Persistent Volume Claim entfernen. Sie müssen den PVC, den persistenten Datenträger und den physischen Speicher separat voneinander entfernen.

    Wenn Ihr Speicher monatlich berechnet wird, wird Ihnen der gesamte Monat auch dann in Rechnung gestellt, wenn Sie den Speicher vor Ende des Abrechnungszyklus entfernen.

  3. Entfernen Sie alle Pods, die den Persistent Volume Claim anhängen. Listen Sie die Pods auf, die den PVC anhängen. Wenn in Ihrer CLI-Ausgabe kein Pod zurückgegeben wird, ist kein Pod vorhanden, der die PVC verwendet.

    kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
    

    Beispielausgabe

    depl-12345-prz7b:    claim1
    
  4. Entfernen Sie den Pod, der den PVC verwendet. Wenn der Pod Teil einer Bereitstellung ist, entfernen Sie die Bereitstellung.

    kubectl delete pod <pod_name>
    
  5. Überprüfen Sie, dass der Pod entfernt wurde.

    kubectl get pods
    
  6. Entfernen Sie die PVC.

    kubectl delete pvc <pvc_name>
    
  7. Überprüfen Sie den Status Ihres persistenten Datenträgers. Verwenden Sie den Namen des persistenten Datenträgers (PV), den Sie zuvor als VOLUME abgerufen haben. Wenn Sie den PVC entfernen, wird der an den PVC gebundene persistente Datenträger freigegeben. Abhängig davon, wie Sie Ihren Speicher bereitgestellt haben, wird Ihr persistenter Datenträger bei automatischem Löschen in den Status Deleting (Wird gelöscht) oder bei manuellem Löschen in den Status Released (Freigegeben) versetzt. Hinweis: Bei automatisch zu löschenden persistenten Datenträgern kann vor dem Löschen kurzzeitig der Status Released angezeigt werden. Führen Sie den Befehl nach einigen Minuten erneut aus, um zu prüfen, ob der persistente Datenträger entfernt wurde.

    kubectl get pv <pv_name>
    
  8. Wenn der persistente Datenträger nicht entfernt wurde, entfernen Sie ihn manuell.

    kubectl delete pv <pv_name>
    
  9. Überprüfen Sie, dass der persistente Datenträger entfernt wurde.

    kubectl get pv
    
  10. Listen Sie die physische Speicherinstanz auf, die von Ihrem persistenten Datenträger referenziert wurde, und notieren Sie die id der physischen Speicherinstanz.

    ibmcloud sl block volume-list --columns id --columns notes | grep <pv_name>
    

    Beispielausgabe

    12345678   {"plugin":"ibmcloud-block-storage-plugin-689df949d6-4n9qg","region":"us-south","cluster":"aa1a11a1a11b2b2bb22b22222c3c3333","type":"Endurance","ns":"default","pvc":"block-storage-pvc","pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7","storageclass":"ibmc-block-silver","reclaim":"Delete"}
    

    Erläuterungen zu den Informationen im Feld notes:

    "plugin":"ibm-file-plugin-5b55b7b77b-55bb7"
    Das vom Cluster verwendete Speicher-Plug-in.
    "region":"us-south"
    Die Region, in der sich Ihr Cluster befindet.
    "cluster":"aa1a11a1a11b2b2bb22b22222c3c3333"
    Die Cluster-ID, die der Speicherinstanz zugeordnet ist.
    "type":"Endurance"
    Der Typ des Datei- oder Blockspeichers (Endurance oder Performance).
    "ns":"default"
    Der Namensbereich, in dem die Speicherinstanz bereitgestellt wird
    "pvc":"block-storage-pvc"
    Der Name der PVC, die der Speicherinstanz zugeordnet ist.
    "pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7"
    Der PV, der der Speicherinstanz zugeordnet ist.
    "storageclass":"ibmc-file-gold"
    Der Typ der Speicherklasse: 'Bronze', 'Silber', 'Gold' oder 'Angepasst'.
  11. Entfernen Sie die physische Speicherinstanz.

    ibmcloud sl block volume-cancel <classic_block_id>
    
  12. Überprüfen Sie, dass die physische Speicherinstanz entfernt wurde.

Der Löschvorgang kann bis zu 72 Stunden in Anspruch nehme.

ibmcloud sl block volume-list

Überwachung für limited-Konnektivitäts-PVs konfigurieren

Wenn Sie einen Pod und einen PVC erstellen, die Block Storage for Classicverwenden, werden dem zugrunde liegenden persistenten Datenträger (PV), auf dem der Speicher angehängt ist, zwei Zielports zugewiesen. Mehrere Zielports ermöglichen einen Failover für den Fall, dass ein Port ausfällt.

In früheren Versionen des Treibers Block Storage for Classic führte die Unfähigkeit, zwei Zielports zu finden, wenn ein PV während des Rollouts angehängt wurde, zu einem Bereitstellungsfehler.

Manchmal, z. B. während der IaaS-Wartungsfenster, möchten Sie jedoch möglicherweise, dass Ihre Pods erfolgreich mit nur einem Zielport auf dem persistenten Datenträger bereitgestellt werden.

Ab Version 2.4.12 des Block Storage for Classic-Treibers werden Pods erfolgreich bereitgestellt, auch wenn nur ein Zielport vom PV zugeordnet werden kann. Zusätzlich zu dieser Verhaltensänderung enthalten PVs jetzt eine neue Bezeichnung, um die Netzverfügbarkeit anzugeben, wobei die Bezeichnung healthy bedeutet, dass zwei Zielports zugeordnet wurden und limited bedeutet, dass beim Anhängen nur ein Zielport zugeordnet werden konnte.

Um Instanzen zu überwachen, bei denen die Pod-Konnektivität zu Block Storage for Classic eingeschränkt ist, können Sie einen angepassten Alert einrichten, der nach der Bezeichnung limited sucht. Konfigurieren Sie anschließend den Alertschwellenwert auf >0.

  1. Wählen Sie im IBM Cloud Monitoring-Dashboard Neuer Alert > Metrik aus.

  2. Wählen Sie Prom query aus und geben Sie kube_persistentvolume_labels{label_ibm_io_pv_connectivity_status='limited'} ein.

  3. Setzen Sie den Schwellenwert auf >0 und legen Sie die Wertigkeit fest, die für diesen Alert verwendet werden soll.

  4. Wählen Sie Ihren Benachrichtigungskanal aus und speichern Sie den Alert.

Zuweisung von vertrauenswürdigen Profilen zu Blockspeichern

Sie können vertrauenswürdige Profile verwenden, um verschiedenen IBM Cloud Identitäten Zugriff auf Ressourcen in Ihrem Konto, einschließlich Ihrer Speicherlösungen, zu gewähren. Vertrauenswürdige Profile zentralisieren die Zugriffskontrolle, machen langlebige API-Schlüssel überflüssig und ermöglichen es Ihnen, die Berechtigungen auf das für eine bestimmte Aufgabe erforderliche Minimum zu beschränken. Weitere Informationen finden Sie unter Konfigurieren eines vertrauenswürdigen Profils für Speicherkomponenten.