IBM Cloud Docs
Block Storage for VPC einrichten

Block Storage for VPC einrichten

Block Storage for VPC stellt an Hypervisor angehängte, hochleistungsfähige Datenspeicherung für Ihre virtuellen Serverinstanzen bereit, die Sie innerhalb einer VPC bereitstellen 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. Informationen dazu, ob Block Storage for VPC die richtige Speicheroption für Sie ist, finden Sie unter Speicherlösung wählen. Preisinformationen finden Sie unter Preisstruktur für Block Storage for VPC.

Das Cluster-Add-on Block Storage for VPC ist auf VPC-Clustern standardmäßig aktiviert.

Schnelleinstieg für IBM Cloud Block Storage for VPC

In dieser Schnellstartanleitung erstellen Sie ein 10Gi 5IOPS tier Block Storage for VPC Volume in Ihrem Cluster, indem Sie eine PVC zur dynamischen Bereitstellung des Volumes erstellen. Anschließend erstellen Sie eine App-Bereitstellung, bei der der PVC anhängt wird.

Ihre Block Storage for VPC Volumes können von mehreren Pods gemountet werden, solange diese Pods auf demselben Knoten geplant sind.

  1. Erstellen Sie eine Datei namens pvc.yaml für Ihren PVC.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: ibmc-vpc-block-5iops-tier
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  2. Erstellen Sie die PVC in Ihrem Cluster.

    oc apply -f pvc.yaml
    
  3. Nachdem Ihr PVC gebunden ist, erstellen Sie eine App-Bereitstellung, die Ihren PVC verwendet. Erstellen Sie eine Datei namens deployment.yaml für Ihren PVC.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
        name: my-deployment
        labels:
          app: my-app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - image: ngnix # Your containerized app image.
            name: my-container
            volumeMounts:
            - name: my-volume
              mountPath: /mount-path
          volumes:
          - name: my-volume
            persistentVolumeClaim:
              claimName: my-pvc
    
  4. Erstellen Sie die Bereitstellung in Ihrem Cluster.

    oc apply -f deployment.yaml
    

Weitere Informationen enthalten die folgenden Abschnitte.

Block Storage for VPC zu Ihren Apps hinzufügen

Wählen Sie Ihr Block Storage for VPC-Profil aus und erstellen Sie einen PersistentVolumeClaim (PVC), um Block Storage for VPC dynamisch für Ihren Cluster bereitzustellen. Die dynamische Bereitstellung erstellt automatisch den entsprechenden persistenten Datenträger und bestellt die physische Speichereinheit in Ihrem IBM Cloud-Konto.

  1. Legen Sie das Block Storage for VPC-Profil fest, das Ihren Kapazitäts- und Leistungsanforderungen am besten entspricht.

  2. Wählen Sie die entsprechende Speicherklasse für Ihr Block Storage for VPC-Profil aus.

    Alle vordefinierten IBM Speicherklassen richten Block Storage for VPC standardmäßig mit einem Dateisystem ext4 ein. Wenn Sie ein anderes Dateisystem (z. B. xfs oder ext3) verwenden wollen, erstellen Sie eine angepasste Speicherklasse.

    • 10 IOPS/GB: ibmc-vpc-block-10iops-tier oder ibmc-vpc-block-retain-10iops-tier
    • 5 IOPS/GB: ibmc-vpc-block-5iops-tier or ibmc-vpc-block-retain-5iops-tier
    • 3 IOPS/GB: ibmc-vpc-block-general-purpose or ibmc-vpc-block-retain-general-purpose
    • Custom: ibmc-vpc-block-custom or ibmc-vpc-block-retain-custom
  3. Legen Sie Ihre Block Storage for VPC-Konfiguration fest.

    1. Wählen Sie eine Größe für Ihren Speicher aus. Stellen Sie sicher, dass die Größe von dem ausgewählten Block Storage for VPC-Profil unterstützt wird.
    2. 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 (PV), die physische Speichereinheit in Ihrem IBM Cloud-Konto und Ihre Daten bleiben 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 Block Storage for VPC ausführen.
      • Wenn Sie möchten, dass der persistente Datenträger, die Daten und Ihre physische Block Storage for VPC-Einheit beim Löschen des Persistent Volume Claim (PVC) gelöscht werden, müssen Sie eine Speicherklasse ohne retain auswählen.
  4. Erstellen Sie eine Konfigurationsdatei, um Ihren Persistent Volume Claim zu definieren, und speichern Sie die Konfiguration als YAML-Datei.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc_name> # Enter a name for your PVC.
    spec:
      accessModes:
      - <access-mode> # ReadWriteOnce or ReadWriteOncePod
      resources:
        requests:
          storage: 10Gi # Enter the size. Make sure that the size is supported in the profile that you chose.
      storageClassName: <storage_class> # Enter the storage class name that you selected earlier.
    
  5. Erstellen Sie die PVC in Ihrem Cluster.

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

    oc describe pvc <pvc_name>
    

    Beispielausgabe

    Name:          mypvv
    Namespace:     default
    StorageClass:  ibmc-vpc-block-5iops-tier
    Status:        Bound
    Volume:        
    Labels:        <none>
    Annotations:   oc.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"csi-block-pvc-good","namespace":"default"},"spec":{...
                volume.beta.kubernetes.io/storage-provisioner: vpc.block.csi.ibm.io
    Finalizers:    [kubernetes.io/pvc-protection]
    Capacity: 10Gi   
    Access Modes:  
    VolumeMode:    Filesystem
    Events:
        Type       Reason                Age               From                         Message
        ----       ------                ----              ----                         -------
        Normal     ExternalProvisioning  9s (x3 over 18s)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner "vpc.block.csi.ibm.io" or manually created by system administrator
    Mounted By:  <none>
    
  7. Erstellen Sie eine Bereitstellungskonfigurationsdatei für Ihre App und hängen Sie den PVC an Ihre App an.

    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>
    
    labels.app
    Geben Sie im Abschnitt "metadata" eine Bezeichnung für die Bereitstellung ein.
    matchLabels.app und labels.app
    Geben Sie im Abschnitt "spec" unter "selector" und im Abschnitt "template" unter "metadata" eine Bezeichnung für Ihre App ein.
    image
    Geben Sie den Namen des Container-Image an, das Sie verwenden wollen. Führen Sie ibmcloud cr image-list aus, um die verfügbaren Images in Ihrem IBM Cloud Container Registry-Konto aufzulisten.
    name
    Geben Sie den Namen des Containers an, den Sie in Ihrem Pod bereitstellen wollen.
    mountPath
    Geben Sie im Abschnitt "containers" unter "volumeMounts" den absoluten Pfad des Verzeichnisses an, in dem der PVC innerhalb des Containers per Mount angehängt wird.
    name
    Geben Sie im Abschnitt 'containers: volumeMounts' den Namen des Datenträgers an, der an Ihren Pod angehängt werden soll. Sie können einen beliebigen Namen Ihrer Wahl eingeben.
    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" unter "persistentVolumeClaim" den Namen des zuvor erstellten PVC ein.
  8. Erstellen Sie die Bereitstellung in Ihrem Cluster.

    oc apply -f deployment.yaml
    
  9. Überprüfen Sie, ob der PVC erfolgreich an Ihre App angehängt wurde. Es kann einige Minuten dauern, bis Ihre Pods in den aktiven Status (Running) wechseln.

    Während der Bereitstellung Ihrer App werden möglicherweise sporadisch Fehler, dass Datenträger nicht angehängt werden können (Unable to mount volumes), im Abschnitt für Ereignisse (Events) der CLI-Ausgabe angezeigt. Das Block Storage for VPC cluster add-on versucht automatisch, den Speicher für Ihre Anwendungen zu mounten. Warten Sie noch einige Minuten ab, damit der Speicher an Ihre App angehängt werden kann.

    oc describe deployment <deployment_name>
    

    Beispielausgabe

    ...
    Volumes:
    myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    mypvc
        ReadOnly:    false
    

Vorhandene Block Storage for VPC-Instanz verwenden

Wenn Sie bereits über eine physische Block Storage for VPC-Einheit verfügen, die Sie in Ihrem Cluster verwenden möchten, können Sie den persistenten Speicher (Persistent Volume, PV) und die Anforderung für persistenten Speicher (Persistent Volume Claim, PVC) manuell erstellen, um den Speicher statisch bereitzustellen.

Sie können einen Datenträger nur einem einzigen Arbeitsknoten zuordnen. Stellen Sie sicher, dass sich der Datenträger in derselben Zone befindet wie der Workerknoten, damit die Zuordnung erfolgreich hergestellt werden kann.

  1. Ermitteln Sie den Datenträger, den Sie einem Workerknoten in Ihrem VPC-Cluster zuordnen möchten. Notieren Sie die Datenträger-ID (volume ID).

    ibmcloud is volumes
    
  2. Listen Sie die Details zu Ihrem Datenträger auf. Notieren Sie die Werte für Größe, Zone und IOPS. Diese Werte werden zum Erstellen Ihres persistenten Datenträgers (PV) verwendet.

    ibmcloud is volume <volume_id>
    
  3. Rufen Sie eine Liste der Workerknoten in Ihrem VPC-Cluster ab. Notieren Sie die Zone des Workerknotens, der sich in derselben Zone wie Ihr Speicherdatenträger befindet.

    ibmcloud oc worker ls -c <cluster_name>
    
  4. Optional: Wenn Sie Ihre physische Block Storage for VPC-Instanz mit einer Speicherklasse retain bereitgestellt haben, werden der persistente Datenträger (PV) und der physische Speicher nicht entfernt, wenn Sie den Persistent Volume Claim (PVC) entfernen. Wenn Sie Ihre physische Block Storage for VPC-Einheit in Ihrem Cluster verwenden wollen, müssen Sie zuerst den vorhandenen persistenten Datenträger entfernen.

    1. Listen Sie die persistenten Datenträger (PVs) in Ihrem Cluster auf und suchen Sie den PV, der zu Ihrer Block Storage for VPC-Einheit gehört. Der persistente Datenträger hat den Status "freigegeben" (released).

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

      oc delete pv <pv_name>
      
  5. Erstellen Sie eine Konfigurationsdatei für Ihren persistenten Datenträger (PV). Schließen Sie die Werte für ID, Größe, Zone und IOPS (E/A-Operationen pro Sekunde) ein, die Sie zuvor ermittelt haben.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: <pv_name> # Example: my-persistent-volume
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: <vpc_block_storage_size> # Example: 20Gi
      csi:
        driver: vpc.block.csi.ibm.io
        fsType: ext4
        volumeAttributes:
          iops: "<vpc_block_storage_iops>" # Example: "3000"
          volumeId: <vpc_block_storage_ID> # Example: a1a11a1a-a111-1111-1a11-1111a11a1a11
          zone: "<vpc_block_zone>" # Example: "eu-de-3"
          region: "<vpc_block_region>"
        volumeHandle: <vpc_block_storage_ID>
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: failure-domain.beta.kubernetes.io/zone
              operator: In
              values:
              - <worker_node_zone> # Example: eu-de-3
            - key: failure-domain.beta.kubernetes.io/region
              operator: In
              values:
              - <worker_node_region> # Example: eu-de
            - key: kubernetes.io/hostname
              operator: In
              values:
              - <worker_node_primary_IP>
      persistentVolumeReclaimPolicy: Retain
      storageClassName: ""
      volumeMode: Filesystem
    
    name
    Geben Sie im Abschnitt "metadata" einen Namen für Ihren PVC ein.
    storage
    Geben Sie unter "spec" im Abschnitt "capacity" die Größe des Block Storage for VPC-Datenträgers in Gigabytes (Gi) an, die Sie zuvor abgerufen haben. Beispiel: Wenn die Größe Ihrer Einheit 100 GB beträgt, geben Sie den Wert 100Gi ein.
    iops
    Geben Sie unter "spec" im Abschnitt "csi" -> "volumeAttributes" die maximale Anzahl E/A-Operationen pro Sekunde des Block Storage for VPC-Datenträgers ein, die Sie zuvor abgerufen haben.
    zone
    Geben Sie unter "spec" im Abschnitt "csi" -> "volumeAttributes" die VPC-Blockzone an, die der zuvor abgerufenen Position entspricht. Beispiel: Wenn Ihre Position Washington DC-1 ist, verwenden Sie für Ihre Zone den Wert us-east-1. Zum Auflisten der verfügbaren Zonen führen Sie den Befehl ibmcloud is zones aus. Eine Übersicht über die verfügbaren VPC-Zonen und -Positionen finden Sie unter VPC in einer anderen Region erstellen. Geben Sie den Parameter 'region' an, wenn 'zone' angegeben ist.
    region
    Die Region des Workerknotens, für den Speicher zugeordnet werden soll.
    worker_node_primary_IP
    Die primäre IP-Adresse des Workerknotens, für den Speicher zugeordnet werden soll Führen Sie ibmcloud oc worker ls aus, um die primäre IP-Adresse des Workerknotens zu finden.
    volumeId und spec.csi.volumeHandle
    Geben Sie unter "spec" im Abschnitt "csi" -> "volumeAttributes" die ID des Block Storage for VPC-Datenträgers ein, die Sie zuvor abgerufen haben.
    storageClassName
    Geben Sie unter "spec" für "storageClassName" eine leere Zeichenfolge an.
    matchExpressions
    Geben Sie unter "spec" im Abschnitt "nodeAffinity" die Knotenselektorbedingungen für den Zonenabgleich ein. Geben Sie für den Schlüssel failure-domain.beta.kubernetes.io/zone ein. Geben Sie als Wert die Zone des Workerknotens ein, an den Speicher angehängt werden soll.
    matchExpressions
    Geben Sie unter "spec" im Abschnitt "nodeAffinity" die Knotenselektorbedingungen für den Regionsabgleich ein. Geben Sie für den Schlüssel failure-domain.beta.kubernetes.io/region ein. Geben Sie als Wert die Region des Workerknotens ein, an den Speicher angehängt werden soll.
  6. Erstellen Sie den persistenten Datenträger (PV) in Ihrem Cluster.

    oc apply -f pv.yaml
    
  7. Überprüfen Sie, ob der PV in Ihrem Cluster erstellt wurde.

    oc get pv
    
  8. Erstellen Sie eine weitere Konfigurationsdatei für Ihren PVC. Damit der Persistent Volume Claim (PVC) mit dem zuvor erstellten persistenten Datenträger übereinstimmt, müssen Sie denselben Wert für Speichergröße und Zugriffsmodus auswählen. Geben Sie in Ihrem Speicherklassenfeld einen leeren Zeichenfolgewert ein, der Ihrem persistenten Datenträger entspricht. Wenn eines dieser Felder nicht mit dem PV übereinstimmt, werden automatisch ein neues PV und eine Block Storage for VPC Instanz durch dynamische Bereitstellung erstellt.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc_name>
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: <vpc_block_storage_size>
      storageClassName: ""
    
  9. Erstellen Sie Ihre PVC.

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

oc describe pvc <pvc_name>
  1. Erstellen Sie eine Bereitstellung oder einen Pod, die bzw. der Ihre PVC verwendet.
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>
      nodeSelector:
        kubernetes.io/hostname: "<worker_node_primary_IP>"

Block Storage for VPC-Cluster-Add-on aktualisieren

Sie können das Block Storage for VPC-Cluster-Add-on mit dem Befehl addon update aktualisieren.

Überprüfen das Änderungsprotokoll, bevor Sie das Add-on aktualisieren.

Bevor Sie von einem früheren Release auf ein ' 5.x aktualisieren, dürfen Sie keine Volume-Snapshots im ' failure Status haben. Weitere Informationen finden Sie unter Warum kann ich meine Block Storage for VPC nicht löschen?

  1. Überprüfen Sie, ob eine Aktualisierung verfügbar ist. Wenn eine Aktualisierung verfügbar ist, dann ist die Plug-in-Version mit einem Stern markiert und die aktuelle Version wird angezeigt. Notieren Sie sich die aktuelle Version, da dieser Wert später verwendet wird.

    ibmcloud oc cluster addons --cluster <cluster_name_or_ID>
    

    Beispielausgabe

    Name                   Version                 Health State   Health Status   
    vpc-block-csi-driver   1.0.0* (2.0.0 latest)   normal         Addon Ready
    
  2. Aktualisieren Sie das Add-on. Beachten Sie, dass die Aktualisierungsbefehle je nach installierter Version unterschiedlich sind.

    5.0 und höher Führen Sie den Befehl addon update aus.

    ibmcloud oc cluster addon update vpc-block-csi-driver --cluster CLUSTER [-f] [-q] [--version VERSION] [-y]
    

    Alle Versionen vor Version 5.0 Inaktivieren und aktivieren Sie das Add-on.

    ibmcloud oc cluster addon disable vpc-block-csi-driver --cluster CLUSTER [-f] [-q]
    
    ibmcloud oc cluster addon enable vpc-block-csi-driver --cluster CLUSTER [-f] [-q] [--version VERSION] [-y]
    
  3. Vergewissern Sie sich, dass sich das Add-on im Zustand Addon Ready (Add-on bereit) befindet. Es kann einige Minuten dauern, bis dass Add-on bereit ist.

    ibmcloud oc cluster addon ls --cluster <cluster_name_or_ID>
    

    Beispielausgabe

    Name                   Version   Health State   Health Status   
    vpc-block-csi-driver   2.0.0     normal         Addon Ready
    

    Wenn Sie nicht die Speicherklasse ibmc-vpc-block-10iops-tier als Standardspeicherklasse verwenden, müssen Sie die Einstellungen für die Standardspeicherklasse in der addon-vpc-block-csi-driver-configmap-Konfigurationszuordnung ändern. Weitere Informationen finden Sie in Standardspeicherklasse ändern.

  4. Wenn Sie Ihre eigenen Speicherklassen auf der Grundlage der Standard-Speicherklassen Block Storage for VPC erstellt haben, müssen Sie diese Speicherklassen neu erstellen, um die Parameter zu aktualisieren. Weitere Informationen finden Sie unter Neuanlegen eigener Speicherklassen nach einem Update auf die Version 4.2.

Eigene Speicherklassen nach Aktualisierung auf Version 4.2 neu erstellen

In Version 4.2 wurden die Standardparameter für Speicherklassen geändert. Die Parameter sizeRange und iopsRange werden nicht mehr verwendet. Wenn Sie eigene Speicherklassen erstellt haben, die diese Parameter verwenden, müssen Sie Ihre eigenen Speicherklassen bearbeiten, um diese Parameter zu entfernen. Um die Parameter in Ihren eigenen Speicherklassen zu ändern, müssen Sie diese löschen und neu anlegen. Zuvor wurden sizeRange und iopsRange als Referenzinformationen für jede Speicherklasse bereitgestellt. In Version 4.2 wurden diese Referenzinformationen entfernt. Informationen zu Blockspeicherprofilen, Größen und IOPs finden Sie jetzt in den Referenzinformationen für Blockspeicherprofile.

  1. Um die Details Ihrer eigenen Speicherklassen zu finden, führen Sie den folgenden Befehl aus.

    oc describe sc STORAGECLASS
    
  2. Wenn die Speicherklasse sizeRange oder iopsRange verwendet, rufen Sie den YAML-Code der Speicherklasse ab und speichern Sie ihn in einer Datei.

    oc get sc STORAGECLASS -o yaml
    
  3. Entfernen Sie in der Datei, die Sie aus der Ausgabe des vorherigen Befehls gespeichert haben, die Parameter sizeRange oder iopsRange.

  4. Löschen Sie die Speicherklasse aus Ihrem Cluster.

    oc delete sc STORAGECLASS
    
  5. Erstellen Sie die Speicherklasse in Ihrem Cluster unter Verwendung der zuvor erstellten Datei erneut.

    oc apply -f custom-storage-class.yaml
    

Verschlüsselung für Block Storage for VPC einrichten

Erstellen Sie unter Verwendung eines KMS-Providers (Key Management Service) wie IBM® Key Protect einen privaten Rootschlüssel, der in Ihrer Block Storage for VPC-Instanz verwendet wird, um Daten zu verschlüsseln, die in den Speicher geschrieben werden. Nachdem Sie den privaten Root-Schlüssel erstellt haben, erstellen Sie Ihre eigene Speicherklasse oder ein Kubernetes Geheimnis mit Ihrem Root-Schlüssel und verwenden dann diese Speicherklasse oder dieses Geheimnis zur Bereitstellung Ihrer Block Storage for VPC Instanz.

Die Aktivierung der Verschlüsselung für Block Storage for VPC wirkt sich auf die Leistung um ca. 20% aus. Die genaue Auswirkung hängt jedoch von Ihrer Workerknoten-und Speicherdatenträgerkonfiguration ab. Berücksichtigen Sie bei der Aktivierung der Verschlüsselung die Auswirkungen auf die Leistung.

  1. Erstellen Sie eine Instanz des KMS-Anbieters, den Sie verwenden möchten.

  2. Erstellen Sie einen Stammschlüssel in Ihrer KMS-Instanz.

  3. Autorisierung von Dienst zu Dienst einrichten. Berechtigen Sie Block Storage for VPC für den Zugriff auf IBM® Key Protect. Stellen Sie sicher, dass Block Storage for VPC mindestens Reader Zugriff auf Ihre KMS-Instanz hat.

  4. Entscheiden Sie, ob Sie den CRN des Key Protect-Rootschlüssels in einer angepassten Speicherklasse oder in einem geheimen Kubernetes-Schlüssel speichern wollen. Führen Sie anschließend die Schritte aus, um eine angepasste Speicherklasse oder einen geheimen Kubernetes-Schlüssel zu erstellen.

    Beispiel für eine benutzerdefinierte Speicherklasse.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage_class_name> # Enter a name for your storage class.
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "5iops-tier"
      csi.storage.k8s.io/fstype: "ext4"
      billingType: "hourly"
      encrypted: "true"
      encryptionKey: "<encryption_key>"
      resourceGroup: ""
      zone: ""
      tags: ""
      generation: "gc"
      classVersion: "1"
    reclaimPolicy: "Delete"
    
    encrypted
    Geben Sie in die Parameter true ein, um eine Speicherklasse zu erstellen, die die Verschlüsselung für Ihre Block Storage for VPC Volumes einrichtet. Wenn Sie diese Option auf true setzen, müssen Sie die CRN des Stammschlüssels Ihrer Key Protect Service-Instanz angeben, die Sie in parameters.encryptionKey verwenden möchten.
    encryptionKey
    Geben Sie unter "parameters" den CRN des Rootschlüssels ein, den Sie zuvor abgerufen haben.

    Beispiel für geheimen Schlüssel für Kubernetes:

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      encrypted: <true_or_false>
    data
      encryptionKey: <encryption_key>
    
    name
    Geben Sie einen Namen für Ihren geheimen Schlüssel ein.
    namespace
    Geben Sie den Namensbereich ein, in dem Ihr geheimer Schlüssel erstellt werden soll.
    encrypted
    Geben Sie in die Parameter true ein, um die Verschlüsselung für Ihre Block Storage for VPC Volumes einzurichten.
    encryptionKey
    Geben Sie unter "parameters" den CRN des Rootschlüssels Ihrer Key Protect-Serviceinstanz ein, den Sie zur Verschlüsselung Ihres Block Storage for VPC-Datenträgers verwenden möchten. Wenn Sie den CRN Ihres Rootschlüssels in einem geheimen Schlüssel verwenden möchten, wandeln Sie ihn zuerst in base64 um, indem Sie echo -n "<root_key_CRN>" | base64 ausführen.
  5. Führen Sie die Schritte 4-9 unter Block Storage for VPC zu Ihren Apps hinzufügen aus, um einen PVC mit Ihrer angepassten Speicherklasse für die Bereitstellung von Block Storage for VPC mit Konfiguration für die Verschlüsselung mit Ihrem Key Protect-Rootschlüssel zu erstellen. Hängen Sie diesen Speicher anschließend an einen App-Pod an.

    Das Anhängen des Speichers an die App und der Wechsel der App in den aktiven Status (Running) kann einige Minuten dauern.

  6. Überprüfen Sie, ob Ihre Daten verschlüsselt werden. Listen Sie Ihre Block Storage for VPC-Datenträger auf und notieren Sie die ID der Instanz, die Sie erstellt haben. Der Name der Speicherinstanz stimmt mit dem Namen des persistenten Datenträgers (PV) überein, der automatisch erstellt wurde, als Sie den PVC erstellt haben.

    ibmcloud is vols
    

    Beispielausgabe

    ID                                     Name                                       Status      Capacity   IOPS   Profile           Attachment type   Created                     Zone         Resource group
    a395b603-74bf-4703-8fcb-b68e0b4d6960   pvc-479d590f-ca72-4df2-a30a-0941fceeca42   available   10         3000   5iops-tier        data              2019-08-17T12:29:18-05:00   us-south-1   a8a12accd63b437bbd6d58fb6a462ca7
    
  7. Listen Sie mithilfe der ID des Datenträgers die Details für Ihre Block Storage for VPC-Instanz auf, um sich zu vergewissern, dass Ihr Key Protect-Rootschlüssel in der Speicherinstanz gespeichert wurde. Sie finden den Rootschlüssel im Feld Encryption key (Verschlüsselungsschlüssel) in der CLI-Ausgabe.

    ibmcloud is vol <volume_ID>
    

    Beispielausgabe

    ID                                     a395b603-74bf-4703-8fcb-b68e0b4d6960   
    Name                                   pvc-479d590f-ca72-4df2-a30a-0941fceeca42   
    Status                                 available   
    Capacity                               10   
    IOPS                                   3000   
    Profile                                5iops-tier   
    Encryption key                         crn:v1:bluemix:public:kms:us-south:a/6ef045fd2b43266cfe8e6388dd2ec098:53369322-958b-421c-911a-c9ae8d5156d1:key:47a985d1-5f5e-4477-93fc-12ce9bae343f   
    Encryption                             user_managed   
    Resource group                         a8a12accd63b437bbd6d58fb6a462ca7
    Created                                2019-08-17T12:29:18-05:00
    Zone                                   us-south-1   
    Volume Attachment Instance Reference
    

Standardspeichereinstellungen anpassen

Sie können einige Standardeinstellungen für die PVC ändern, indem Sie eine angepasste Speicherklasse oder einen geheimen Kubernetes-Schlüssel verwenden, um Block Storage for VPC mit Ihren angepassten Einstellungen zu erstellen.

Welchen Vorteil hat die Verwendung eines Geheimnisses und die Angabe meiner Parameter in einer benutzerdefinierten Speicherklasse?
Erstellen Sie als Clusteradministrator eine angepasste Speicherklasse, wenn alle von Ihren Clusterbenutzern erstellten PVCs mit einer bestimmten Konfiguration bereitgestellt werden sollen und verhindert werden soll, dass Ihre Clusterbenutzer die Standardkonfiguration überschreiben.
Wenn jedoch mehrere Konfigurationen erforderlich sind und Sie keine angepasste Speicherklasse für jede mögliche PVC-Konfiguration erstellen möchten, können Sie eine angepasste Speicherklasse mit den PVC-Standardeinstellungen und einem Verweis auf einen generischen geheimen Kubernetes-Schlüssel erstellen. Wenn Ihre Clusterbenutzer die Standardeinstellungen Ihrer angepassten Speicherklasse überschreiben müssen, können sie dies tun, indem Sie einen geheimen Kubernetes-Schlüssel erstellen, der ihre angepassten Einstellungen enthält.

Wenn Sie die Verschlüsselung für Ihre Block Storage for VPC-Instanz einrichten möchten, können Sie auch einen geheimen Kubernetes-Schlüssel verwenden, wenn Sie den CRN des Key Protect-Rootschlüssels in Base64 codieren möchten, anstatt den Schlüssel direkt in der angepassten Speicherklasse anzugeben.

Standardspeicherklasse ändern

Mit Version 4.2 setzt das Cluster-Add-on Block Storage for VPC die Standardspeicherklasse auf die Klasse ibmc-vpc-block-10iops-tier. Wenn Sie eine andere Standardspeicherklasse als ibmc-vpc-block-10iops-tier festgelegt haben und Ihre PVCs die Standardspeicherklasse verwenden, sind möglicherweise mehrere Standardspeicherklassen vorhanden. Dies kann zu Fehlern bei der PVC-Erstellung führen. Wenn Sie eine andere Standardspeicherklasse als ibmc-vpc-block-10iops-tier verwenden möchten, können Sie addon-vpc-block-csi-driver-configmap aktualisieren, um IsStorageClassDefault auf 'false' zu setzen.

Die Standardspeicherklasse für das Cluster-Add-on Block Storage for VPC ist die Speicherklasse ibmc-vpc-block-10iops-tier.

  1. Bearbeiten Sie die Datei addon-vpc-block-csi-driver-configmap.

    oc edit cm addon-vpc-block-csi-driver-configmap -n kube-system
    
  2. Ändern Sie die Einstellung IsStorageClassDefault in false.

  3. Speichern Sie die Änderung und beenden Sie den Vorgang.

  4. Warten Sie 15 Minuten und überprüfen Sie die Änderung, indem Sie die Details der Speicherklasse ibmc-vpc-block-10iops-tier abrufen.

    oc get sc ibmc-vpc-block-10iops-tier -o yaml
    

Eigene Speicherklasse erstellen

Erstellen Sie Ihre eigene angepasste Speicherklasse, die die für Ihre Block Storage for VPC-Instanz bevorzugten Einstellungen aufweist.

SSD definierte Leistungsprofile (SDP) sind in Dallas, Frankfurt, London, Madrid, Osaka, Sao Paulo, Sydney, Tokio, Toronto und Washington verfügbar, D.C. Die Erstellung von Snapshots für SSD definierte Leistungsprofile ist in Dallas, Frankfurt, Tokio und Washington verfügbar, D.C.

Wenn Sie möchten, können Sie Ihre eigene Speicherklasse erstellen:

  • Angepassten Wert für E/A-Operationen pro Sekunde festlegen.
  • Block Storage for VPC mit einem anderen Dateisystemtyp als ext4 einrichten.
  • Verschlüsselung einrichten.
  • SSD definierte Leistung einrichten.
Vorbereitende Schritte
Prüfen Sie die Speicherklassenreferenz, um das Profil (profile) zu ermitteln, das Sie für Ihre Speicherklasse verwenden möchten.
Sie können auch die angepassten Profile prüfen, wenn Sie für Ihre Block Storage for VPC-Instanz angepasste E/A-Operationen pro Sekunde angeben möchten.
Wenn Sie ein SSD-definiertes Leistungsprofil (SDP) verwenden möchten, prüfen Sie den Kapazitätsbereich und die IOPs-Details. Beachten Sie, dass bei der Verwendung einer SSD definierten Leistung, die Kapazität des Volumes durch die IOPs und den Durchsatz, die Sie angeben, bestimmt wird.
Sie können eine vorhandene Speicherklasse als Ausgangspunkt für die Erstellung Ihrer eigenen Klasse verwenden. Speichern Sie die Details einer bestehenden Speicherklasse mit dem Befehl oc get sc <storageclass> -o yaml.
  1. Erstellen Sie die Konfigurationsdatei einer angepassten Speicherklasse.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage_class_name>
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "<profile>" # general-purpose, sdp, 5iops-tier, 10iops-tier, or custom
      csi.storage.k8s.io/fstype: "<file_system_type>" # xfs, ext3, or ext4
      billingType: "hourly"
      encrypted: "<encrypted_true_false>"
      encryptionKey: "<encryption_key>"
      resourceGroup: ""
      zone: "<zone>"
      region: "<region>"
      tags: "<tags>"
      generation: "gc"
      throughput: "<throughput>" # Example: 2000
      classVersion: "1"
      iops: "<iops>" # Only specify this parameter if you are using a "custom" profile.
    allowVolumeExpansion: (true|false) # Select true or false. Only supported on version 3.0.1 and later
    volumeBindingMode: <volume_binding_mode>
      # csi.storage.k8s.io/provisioner-secret-name: # Uncomment and add secret parameters to enforce encryption.
      # csi.storage.k8s.io/provisioner-secret-namespace:
    reclaimPolicy: "<reclaim_policy>"
    
    name
    Geben Sie einen Namen für Ihre Speicherklasse ein.
    profile
    Geben Sie das Profil ein, das Sie im vorherigen Schritt ausgewählt haben. Wählen Sie general-purpose, sdp, 5iops-tier, 10iops-tier oder verwenden Sie einen benutzerdefinierten IOPs-Wert. Um die unterstützten Speichergrößen für ein bestimmtes Profil zu finden, siehe Profil "Tiered IOPS". Alle PVCs, die diese Speicherklasse verwenden, müssen einen Größenwert angeben, der in diesem Bereich liegt.
    csi.storage.k8s.io/fstype
    Geben Sie im Abschnitt 'parameters' das Dateisystem für Ihre Block Storage for VPC-Instanz ein. Wählen Sie xfs, ext3 oder ext4 aus. Wenn Sie die Eigentümerschaft oder die Berechtigungen Ihres Datenträgers ändern möchten, müssen Sie die csi.storage.k8s.io/fstype in Ihrer eigenen Speicherklasse angeben und Ihre PVC muss ReadWriteOnce als accessMode haben. Der Treiber Block Storage for VPC verwendet den ReadWriteOnceWithFSType fsGroupPolicy. Weitere Informationen finden Sie in der CSI-Treiberdokumentation.
    encrypted
    Geben Sie in den Parametern true ein, um eine Speicherklasse zu erstellen, die die Verschlüsselung für Ihr Block Storage for VPC Volume einrichtet. Wenn Sie diese Option auf true setzen, müssen Sie die CRN des Stammschlüssels Ihrer Key Protect Service-Instanz angeben, die Sie in parameterencryptionKey verwenden möchten. Weitere Informationen zum Verschlüsseln Ihrer Daten finden Sie unter Verschlüsselung für Block Storage for VPC einrichten.
    encryptionKey
    Wenn Sie true für parameters.encrypted eingegeben haben, geben Sie die CRN des Root-Schlüssels Ihrer Dienstinstanz Key Protect ein, die Sie für die Verschlüsselung des Volumes Block Storage for VPC verwenden möchten. Weitere Informationen zum Verschlüsseln Ihrer Daten finden Sie unter Verschlüsselung für Block Storage for VPC einrichten.
    zone
    Geben Sie unter "parameters" die VPC-Zone ein, in der Sie die Block Storage for VPC-Instanz erstellen möchten. Stellen Sie sicher, dass Sie eine Zone verwenden, mit der Ihre Workerknoten verbunden sind. Um die VPC-Zonen aufzulisten, die Ihre Worker Nodes verwenden, führen Sie ibmcloud oc cluster get --cluster <cluster_name_or_ID> aus und sehen Sie sich das Feld Worker Zones in Ihrer CLI-Ausgabe an. Wenn Sie keine Zone angeben, wird automatisch eine der Workerknotenzonen für Ihre Block Storage for VPC-Instanz ausgewählt.
    region
    Die Region des Workerknotens, für den Speicher zugeordnet werden soll.
    tags
    Geben Sie in die Parameter eine durch Leerzeichen getrennte Liste von Tags ein, die auf Ihre Block Storage for VPC-Instanz angewendet werden sollen. Tags können Ihnen helfen, Instanzen leichter zu finden oder Ihre Instanzen auf Basis allgemeiner Merkmale zu gruppieren, z. B. nach der App oder der Umgebung, für die sie verwendet wird.
    iops
    Wenn Sie custom oder sdp für profile eingegeben haben, geben Sie einen Wert für die IOPs ein, die Sie für Block Storage for VPC verwenden möchten. In der Tabelle Angepasstes Block Storage for VPC-Profil für E/A-Operationen pro Sekunde finden Sie eine nach Datenträgergröße geordnete Liste der unterstützten Bereiche für E/A-Operationen pro Sekunde.
    throughput
    Geben Sie diesen Wert ein, wenn Sie ein sdp Profil verwenden. Weitere Informationen finden Sie in den IOPs und Durchsatzdetails für das SDP-Profil
    reclaimPolicy
    Geben Sie Rückforderungsrichtlinie für Ihre Speicherklasse ein. Wenn Sie den PV, die physische Speichereinheit und Ihre Daten beim Entfernen des PVC beibehalten möchten, geben Sie Retain ein. Wenn Sie den PV, die physische Speichereinheit und Ihre Daten beim Entfernen des PVC löschen möchten, geben Sie Delete ein.
    allowVolumeExpansion
    Geben Sie die Datenträgererweiterungsrichtlinie für Ihre Speicherklasse ein. Wenn Sie die Datenträgererweiterung zulassen möchten, geben Sie trueein. Wenn Sie die Datenträgererweiterung nicht zulassen möchten, geben Sie false ein.
    volumeBindingMode
    Legen Sie fest, ob die Erstellung der Block Storage for VPC-Instanz verzögert werden soll, bis der erste Pod, der diesen Speicher verwendet, zur Terminierung bereit ist. Zum Verzögern der Erstellung geben Sie WaitForFirstConsumer ein. Geben Sie beim Erstellen der PVC Immediate ein, um die Instanz zu erstellen.
  2. Erstellen Sie die angepasste Speicherklasse in Ihrem Cluster.

    oc apply -f custom-storageclass.yaml
    
  3. Überprüfen Sie, ob Ihre Speicherklasse im Cluster verfügbar ist.

    oc get sc
    

    Beispielausgabe

    NAME                                    PROVISIONER            AGE
    <custom-storageclass>             vpc.block.csi.ibm.io   4m26s
    
  4. Führen Sie die Schritte unter Block Storage for VPC zu Apps hinzufügen aus, um einen Persistent Volume Claim (PVC) mit Ihrer angepassten Speicherklasse zu erstellen und Block Storage for VPC bereitzustellen. Hängen Sie diesen Speicher anschließend an eine Beispielapp an.

  5. Optional: Überprüfen Sie den Dateisystemtyp Ihrer Block Storage for VPC-Instanz.

Block Storage for VPC-Dateisystem überprüfen

Sie können eine angepasste Speicherklasse erstellen, um Block Storage for VPC mit einem anderen Dateisystem wie zum Beispiel xfs oder ext3 bereitzustellen. Standardmäßig werden alle Block Storage for VPC-Instanzen mit einem Dateisystem ext4 bereitgestellt.

  1. Führen Sie die Schritte zum Erstellen einer angepassten Speicherklasse bei dem Dateisystem aus, das Sie verwenden möchten.

  2. Führen Sie die unter Block Storage for VPC zu Apps hinzufügen beschriebenen Schritte 4 bis 9 aus, um einen Persistent Volume Claim (PVC) mit Ihrer angepassten Speicherklasse für die Bereitstellung von Block Storage for VPC mit einem anderen Dateisystem zu erstellen. Hängen Sie diesen Speicher anschließend an einen App-Pod an.

    Das Anhängen des Speichers an die App und der Wechsel der App in den aktiven Status (Running) kann einige Minuten dauern.

  3. Überprüfen Sie, ob Ihr Speicher mit dem richtigen Dateisystem angehängt wurde. Listen Sie die Pods in Ihrem Cluster auf und notieren Sie sich den Namen des Pods, den Sie zum Anhängen Ihres Speichers verwendet haben.

    oc get pods
    
  4. Melden Sie sich bei Ihrem Pod an.

    oc exec <pod_name> -it bash
    
  5. Listen Sie die Mountpfade in Ihrem Pod auf.

    mount | grep /dev/xvdg
    

    Beispielausgabe für xfs.

    /dev/xvdg on /test type xfs (rw,relatime,attr2,inode64,noquota)
    
  6. Verlassen Sie den Pod.

    exit
    

aktualisieren VolumeAttachLimit

In den Versionen 5.2 und höher des Block Storage for VPC-Cluster-Add-ons können Sie die maximale Anzahl von Datenträgern, die jedem Knoten zugeordnet werden können, durch Bearbeiten der Konfigurationszuordnung bearbeiten. Der Standardwert ist 12.

Zur Verwendung dieser Funktion muss Ihr Konto genehmigt sein.

  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. Bearbeiten Sie die Konfigurationszuordnung. Ersetzen Sie VALUE durch den Grenzwert für Datenträgerzuordnung, den Sie festlegen möchten.

    kubectl patch configmap/addon-vpc-block-csi-driver-configmap \       
    -n kube-system \
    --type merge \
    -p '{"data":{"VolumeAttachmentLimit":"VALUE"}}'
    
  3. Warten Sie, bis die ibm-vpc-block-csi-node-Pods im Namensbereich kube-system erneut gestartet wurden. Überprüfen Sie, ob die Pods erneut gestartet wurden.

    kubectl get pods -n kube-system -w| grep block-csi
    
  4. Sie können Ihren Workerknoten jetzt mithilfe der dynamischen Bereitstellung oder durch manuelles Erstellen der Anhänge Datenträger zuordnen. Weitere Informationen finden Sie unter Block Storage for VPC zu Ihren Apps hinzufügen oder unter Vorhandene Block Storage for VPC-Instanz verwenden.

Angepasste PVC-Einstellungen in einem geheimen Kubernetes-Schlüssel speichern

Geben Sie Ihre PVC-Einstellungen in einem geheimen Kubernetes-Schlüssel an und verweisen Sie in einer angepassten Speicherklasse auf diesen geheimen Schlüssel. Verwenden Sie anschließend die angepasste Speicherklasse, um einen PVC mit den angepassten Parametern zu erstellen, die Sie in Ihrem geheimen Schlüssel festgelegt haben.

Welche Möglichkeiten habe ich, das Geheimnis von Kubernetes zu nutzen?
Als Clusteradministrator können Sie wählen, ob Sie jedem Clusterbenutzer die Möglichkeit geben möchten, die Standardeinstellungen einer Speicherklasse zu überschreiben, oder ob Sie einen geheimen Schlüssel erstellen möchten, den alle in Ihrem Cluster verwenden müssen und der die Base64-Codierung für den CRN Ihres Key Protect-Rootschlüssels erzwingt.
Jeder Benutzer kann die Standardeinstellungen anpassen
In diesem Szenario erstellt der Cluster-Administrator eine benutzerdefinierte Speicherklasse mit den Standard-PVC-Einstellungen und einem Verweis auf einen geheimen generischen Kubernetes-Schlüssel. Clusterbenutzer können die Standardeinstellungen der Speicherklasse überschreiben, indem sie einen geheimen Kubernetes-Schlüssel mit den gewünschten PVC-Einstellungen erstellen. Damit die angepassten Einstellungen in dem geheimen Schlüssel auf Ihre Block Storage for VPC-Instanz angewendet werden können, müssen Sie einen PVC mit demselben Namen wie Ihr geheimer Kubernetes-Schlüssel erstellen.
Erzwingen der base64-Codierung für den Key Protect-Stammschlüssel
In diesem Szenario erstellen Sie eine benutzerdefinierte Speicherklasse mit den Standard-PVC-Einstellungen und einem Verweis auf einen geheimen statischen Kubernetes-Schlüssel, der die Standardeinstellungen der benutzerdefinierten Speicherklasse überschreibt oder erweitert. Ihre Clusterbenutzer können die Standardeinstellungen nicht überschreiben, indem sie eigene geheime Kubernetes-Schlüssel erstellen. Stattdessen müssen die Clusterbenutzer Block Storage for VPC mit der Konfiguration bereitstellen, die Sie in Ihrer angepassten Speicherklasse und dem geheimen Schlüssel gewählt haben. Der Vorteil dieser Methode im Vergleich zum Erstellen nur einer angepassten Speicherklasse ist, dass Sie die Base64-Codierung für den CRN des Rootschlüssels Ihrer Key Protect-Serviceinstanz erzwingen können, wenn Sie die Daten in Ihrer Block Storage for VPC-Instanz verschlüsseln möchten.
Was muss ich beachten, bevor ich das Geheimnis Kubernetes für meine PVC-Einstellungen verwende?
Einige PVC-Einstellungen, wie z. B. reclaimPolicy, fstype, oder volumeBindingMode, können nicht im Geheimnis Kubernetes eingestellt werden und müssen in der Speicherklasse eingestellt werden. Wenn Sie als Clusteradministrator Ihren Clusterbenutzern die Möglichkeit geben möchten, Ihre Standardeinstellungen zu überschreiben, müssen Sie darauf achten, genügend angepasste Speicherklassen einzurichten, die auf einen generischen geheimen Kubernetes-Schlüssel verweisen, damit Ihre Benutzer Block Storage for VPC mit unterschiedlichen Einstellungen für reclaimPolicy, fstype und volumeBindingMode bereitstellen können.

Allen Benutzern das Anpassen der PVC-Standardeinstellungen ermöglichen

  1. Führen Sie als Clusteradministrator die Schritte zum Erstellen einer angepassten Speicherklasse aus. In der YAML-Datei der benutzerdefinierten Speicherklasse referenzieren Sie den geheimen Kubernetes-Schlüssel im Abschnitt metadata.parameters wie folgt. Stellen Sie sicher, dass der Code unverändert hinzugefügt wird und dass auch die Namen der Variablen nicht geändert werden.

    csi.storage.k8s.io/provisioner-secret-name: ${pvc.name}
    csi.storage.k8s.io/provisioner-secret-namespace: ${pvc.namespace}
    
  2. Erstellen Sie als Clusterbenutzer einen geheimen Kubernetes-Schlüssel, der die Standardeinstellungen der Speicherklasse anpasst.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      iops: "<IOPS_value>"
      zone: "<zone>"
      tags: "<tags>"
      encrypted: <true_or_false>
      resourceGroup: "<resource_group>"
    data
      encryptionKey: <encryption_key>
    
    name
    Geben Sie einen Namen für Ihren geheimen Kubernetes-Schlüssel ein.
    namespace
    Geben Sie den Namensbereich ein, in dem Ihr geheimer Schlüssel erstellt werden soll. Um auf den geheimen Schlüssel in Ihrem PVC zu verweisen, muss das PVC in demselben Namensbereich erstellt werden.
    iops
    Geben Sie im Abschnitt "stringData" den IOPS-Bereich für Ihre Block Storage for VPC-Instanz ein. Der Bereich, den Sie eingeben, muss mit dem Block Storage for VPC-Tier übereinstimmen, den Sie verwenden wollen.
    zone
    Geben Sie im Abschnitt "stringData" die VPC-Zone ein, in der Sie die Block Storage for VPC-Instanz erstellen möchten. Stellen Sie sicher, dass Sie eine Zone verwenden, mit der Ihre Workerknoten verbunden sind. Um die VPC-Zonen aufzulisten, die Ihre Worker Nodes verwenden, führen Sie ibmcloud oc cluster get --cluster <cluster_name_or_ID> aus und sehen Sie sich das Feld Worker Zones in Ihrer CLI-Ausgabe an. Wenn Sie keine Zone angeben, wird automatisch eine der Workerknotenzonen für Ihre Block Storage for VPC-Instanz ausgewählt.
    tags
    Geben Sie im Abschnitt "stringData" eine Liste mit durch Kommas getrennten Tags ein, die beim Erstellen des PVC verwendet werden sollen. Tags können Ihnen helfen, Ihre Speicherinstanz zu finden, nachdem sie erstellt wurde.
    resourceGroup
    Geben Sie im Abschnitt Stringdaten die ID der Ressourcengruppe ein, auf die Ihre Block Storage for VPC-Instanz Zugriff erhalten soll. Wenn Sie keine Ressourcengruppe eingeben, wird die Instanz automatisch für den Zugriff auf Ressourcen der Ressourcengruppe berechtigt, zu der Ihr Cluster gehört.
    encrypted
    Geben Sie im Abschnitt für die Zeichenkette true ein, um ein Geheimnis zu erstellen, das die Verschlüsselung für Block Storage for VPC Volumes einrichtet. Wenn Sie diese Option auf true setzen, müssen Sie die CRN des Stammschlüssels Ihrer Key Protect Service-Instanz angeben, die Sie in parameters.encryptionKey verwenden möchten. Weitere Informationen zum Verschlüsseln Ihrer Daten finden Sie unter Einrichten der Verschlüsselung für Ihr Block Storage for VPC.
    encryptionKey
    Wenn Sie true für parameters.encrypted eingegeben haben, geben Sie im Datenbereich die Stammschlüssel-CRN Ihrer Key Protect Service-Instanz ein, die Sie zur Verschlüsselung Ihrer Block Storage for VPC Volumes verwenden möchten. Wenn Sie den CRN Ihres Rootschlüssels in einem geheimen Schlüssel verwenden möchten, wandeln Sie ihn zuerst in base64 um, indem Sie echo -n "<root_key_CRN>" | base64 ausführen. Weitere Informationen zum Verschlüsseln Ihrer Daten finden Sie unter Verschlüsselung für Block Storage for VPC einrichten.
  3. Erstellen Sie Ihren geheimen Kubernetes-Schlüssel.

    oc apply -f secret.yaml
    
  4. Führen Sie die Schritte unter Block Storage for VPC zu Apps hinzufügen aus, um einen Persistent Volume Claim (PVC) mit Ihren angepassten Einstellungen zu erstellen. Stellen Sie sicher, dass Sie den PVC mit der angepassten Speicherklasse erstellen, die der Clusteradministrator erstellt hat, und verwenden Sie denselben Namen für Ihren PVC, den Sie auch für Ihren geheimen Schlüssel verwendet haben. Wenn derselbe Name für den geheimen Schlüssel und den PVC verwendet wird, bewirkt dies, dass der Speicherprovider die Einstellungen des geheimen Schlüssels in Ihrem PVC anwendet.

Base64-Codierung für den CRN des Key Protect-Rootschlüssels erzwingen

  1. Erstellen Sie als Clusteradministrator einen geheimen Kubernetes-Schlüssel, der den Base64-codierten Wert für Ihren CRN des Key Protect-Rootschlüssels enthält. Informationen zum Abrufen des CRN des Rootschlüssels finden Sie unter Verschlüsselung für Block Storage for VPC einrichten.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      encrypted: <true_or_false>
      resourceGroup: "<resource_group>"
    data:
      encryptionKey: <encryption_key>
    
    name
    Geben Sie einen Namen für Ihren geheimen Kubernetes-Schlüssel ein.
    namespace
    Geben Sie den Namensbereich ein, in dem Ihr geheimer Schlüssel erstellt werden soll. Um auf den geheimen Schlüssel in Ihrem PVC zu verweisen, muss das PVC in demselben Namensbereich erstellt werden.
    encrypted
    Geben Sie im Abschnitt für die Zeichenkette true ein, um ein Geheimnis zu erstellen, das die Verschlüsselung für Block Storage for VPC Volumes einrichtet. Wenn Sie diese Option auf true setzen, müssen Sie die CRN des Stammschlüssels Ihrer Key Protect Service-Instanz angeben, die Sie in parameters.encryptionKey verwenden möchten. Weitere Informationen zum Verschlüsseln Ihrer Daten finden Sie unter Einrichten der Verschlüsselung für Ihr Block Storage for VPC.
    encryptionKey
    Wenn Sie true für parameters.encrypted eingegeben haben, geben Sie im Datenbereich die Stammschlüssel-CRN Ihrer Key Protect-Dienstinstanz ein, die Sie zur Verschlüsselung Ihres Block Storage for VPC-Volumes verwenden möchten. Wenn Sie den CRN des Rootschlüssels in einem geheimen Schlüssel verwenden möchten, wandeln Sie ihn zuerst in 'base64' um, indem Sie echo -n "<root_key_CRN>" | base64ausführen. Weitere Informationen zum Verschlüsseln Ihrer Daten finden Sie unter Verschlüsselung für Block Storage for VPC einrichten.
  2. Erstellen Sie den geheimen Kubernetes-Schlüssel.

    oc apply -f secret.yaml
    
  3. Führen Sie die Schritte zum Erstellen einer angepassten Speicherklasse aus. In der YAML-Datei der benutzerdefinierten Speicherklasse referenzieren Sie den geheimen Kubernetes-Schlüssel im Abschnitt metadata.parameters wie folgt. Sie müssen den Namen des geheimen Kubernetes-Schlüssels eingeben, den Sie zuvor erstellt haben, und den Namensbereich, in dem Sie den geheimen Schlüssel erstellt haben.

    csi.storage.k8s.io/provisioner-secret-name: <secret_name>
    csi.storage.k8s.io/provisioner-secret-namespace: <secret_namespace>
    
  4. Führen Sie als Clusterbenutzer die Schritte unter Block Storage for VPC zu Apps hinzufügen aus, um einen PVC von Ihrer angepassten Speicherklasse aus zu erstellen.

Datenträgererweiterung einrichten

Um Datenträger bereitzustellen, die die Erweiterung unterstützen, müssen Sie eine Speicherklasse verwenden, für die allowVolumeExpansion auf true gesetzt ist.

Sie können nur Datenträger erweitern, die von einem App-Pod angehängt werden.

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

  1. Wenn Sie nicht die Version 4.2 oder höher des Add-ons verwenden, aktualisieren Sie das Block Storage for VPC cluster add-on in Ihrem Cluster.

  2. Erstellen Sie eine PVC, die eine Speicherklasse mit Unterstützung für die Datenträgererweiterung verwendet.

  3. Implementieren Sie eine App, die Ihren PVC verwendet. Wenn Sie Ihre App erstellen, notieren Sie sich den von Ihnen angegebenen mountPath .

  4. Nachdem Ihr PVC von einem App-Pod eingerichtet wurde, können Sie Ihren Datenträger erweitern, indem Sie den Wert des Feldes spec.resources.requests.storage in Ihrem PVC bearbeiten. Um Ihren Datenträger zu erweitern, bearbeiten Sie Ihren PVC und erhöhen Sie den Wert im Feld spec.resources.requests.storage.

    oc edit pvc <pvc-name>
    

    Beispiel

    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  5. Speichern und schließen Sie die PVC.

  6. Optional: Stellen Sie sicher, dass Ihr Datenträger erweitert wird. Besorgen Sie sich die Details zu Ihrem PVC und notieren Sie sich den PV-Namen.

    oc get pvc <pvc-name>
    
  7. Beschreiben Sie Ihr PV und notieren Sie sich die Datenträger-ID.

    oc describe PV
    
  8. Ermitteln Sie die Details zu Ihrem Block Storage for VPC-Datenträger und überprüfen Sie die Kapazität.

    ibmcloud is vol <volume-ID>
    

Manuelles Erweitern von Volumes vor der Add-on-Version 4.2

Führen Sie die folgenden Schritte aus, um Ihre vorhandenen Block Storage for VPC Volumes, die vor der Version 4.2 des Add-Ons erstellt wurden, manuell zu erweitern.

Sie können nur Datenträger erweitern, die von einem App-Pod angehängt werden.

  1. Rufen Sie die Details Ihrer Anwendung ab und notieren Sie sich den PVC-Namen und den Wert für mountPath.

    oc get pod <pod-name> -n <pod-namespace> -o yaml
    
  2. Besorgen Sie sich die Details zu Ihrem PVC und notieren Sie sich den PV-Namen.

    oc get pvc
    
  3. Beschreiben Sie Ihren PV und rufen Sie die volumeId ab.

    oc describe pv `pv-name` | grep volumeId
    

    Beispielausgabe für die Datenträger-ID r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.

    volumeId=r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
    
  4. Ändern Sie die Größe des Datenträgers mithilfe einer PATCH-Anforderung. Im folgenden Beispiel wird die Größe eines Datenträgers auf 250 GiB geändert.

    curl -sS -X PATCH -H "Authorization: <iam_token>" "https://<region>.iaas.cloud.ibm.com/v1/volumes/<volumeId>?generation=2&version=2020-06-16" -d '{"capacity":250}'
    
    <iam_token>
    Ihr IAM-Token. Um Ihr IAM-Token abzurufen, führen Sie ibmcloud iam oauth-tokensaus.
    <region>
    Die Region, in der sich Ihr Cluster (z. B. us-south).
    <volumeId>
    Die Datenträger-ID, die Sie zuvor abgerufen haben. Beispiel: r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.
    <capacity>
    Die erhöhte Kapazität in GiB, z. B. 250.
  5. Melden Sie sich bei Ihrem App-Pod an.

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

    chroot /host
    
  7. Besorgen Sie sich die Dateisystemdetails und notieren Sie sich den Pfad Filesystem, den Sie aktualisieren möchten. Sie können auch grep für den Mountpfad verwenden, wie in Ihrem Anwendungspod angegeben. df -h | grep <mount-path>.

    df -h
    

    Beispielausgabe

    Filesystem      Size  Used Avail Use% Mounted on
    overlay          98G   64G   29G  70% /
    tmpfs            64M     0   64M   0% /dev
    tmpfs            32G     0   32G   0% /sys/fs/cgroup
    shm              64M     0   64M   0% /dev/shm
    /dev/vda2        98G   64G   29G  70% /etc/hosts
    /dev/vdg        9.8G   37M  9.8G   1% /mount-path # Note the Filesystem path that corresponds to the mountPath that you specified in your app.
    tmpfs            32G   40K   32G   1% /run/secrets/kubernetes.io/serviceaccount
    tmpfs            32G     0   32G   0% /proc/acpi
    tmpfs            32G     0   32G   0% /proc/scsi
    tmpfs            32G     0   32G   0% /sys/firmware
    
  8. Ändern Sie die Größe des Dateisystems.

    sudo resize2fs <filesystem-path>
    

    Beispielbefehl

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

    df -h
    

Daten sichern und wiederherstellen

Die Daten in Block Storage for VPC sind über redundante Fehlerzonen in Ihrer Region gesichert. Wenn Sie Ihre Daten manuell sichern wollen, verwenden Sie den Kubernetes-Befehl oc cp.

Sie können den Befehl oc cp verwenden, um Dateien und Verzeichnisse in und aus Pods oder bestimmten Containern in Ihrem Cluster zu kopieren

Vorbereitende Schritte: Greifen Sie auf Ihren Red Hat OpenShift-Cluster zu.

Zur Sicherung oder Wiederherstellung Ihrer Daten wählen Sie eine der folgenden Optionen aus:

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

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

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

oc 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.

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

Informationen zur Kapazität von Datenträgeranforderungen

Der VPC Block CSI Driver berechnet die Datenträgerkapazität anhand der folgenden Formel.

  • Wenn der Wert in Gi angegeben wird: rBytes(requestedBytes) = X * 1024^3

  • Wenn der Wert in G angegeben wird: rBytes(requestedBytes) = X * 10^9

Der angeforderte Wert ist gleich (((rBytes+ GiB - 1) / GiB) * GiB) / GiB.

Zum Beispiel:

  • Wenn unter Anwendung der obigen Formel der Wert 20Gi angegeben wird, wird der Datenträger 20GB erstellt.
  • Wenn der Wert 20G angegeben wird, wird der Datenträger 19GB erstellt.

Manchmal ist die Kapazität des erstellten Datenträgers kleiner als der angeforderte Wert. Beachten Sie, dass die Abrechnung für den Datenträger gilt, der erstellt wird, nicht für den angeforderten Datenträger.