File Storage for VPC zu Apps hinzufügen

Red Hat OpenShift on IBM Cloud bietet vordefinierte Speicherklassen, mit denen Sie File Storage for VPC für Anwendungen in Ihrem Cluster bereitstellen können. Jede Speicherklasse legt die verfügbare Größe, die IOPS, das Dateisystem und die Aufbewahrungsrichtlinie für die von Ihnen bereitgestellte Dateifreigabe fest. Sie können auch eigene Speicherklassen für Ihren Anwendungsfall erstellen.

Lesen Sie die folgenden Hinweise und Überlegungen, bevor Sie fortfahren.

  • Nach der Bereitstellung eines bestimmten Speichertyps mithilfe einer Speicherklasse können Sie den Typ oder die Aufbewahrungsrichtlinie für die Speichereinheit nicht mehr ändern. Sie können jedoch die Größe und die IOPS ändern, wenn Sie Ihre Speicherkapazität und 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 von der alten Speicherinstanz in die neue kopieren.
  • Wenn sich Ihr Cluster und Ihre VPC in separaten Ressourcengruppen befinden, müssen Sie, bevor Sie Dateifreigaben bereitstellen können, Ihre eigene Speicherklasse erstellen und die ID Ihrer VPC-Ressourcengruppe im Abschnitt resourceGroup zusammen mit der ID der Sicherheitsgruppe kube-<clusterID> im Abschnitt securityGroupIDs angeben. Um die ID der Sicherheitsgruppe abzurufen, gehen Sie wie folgt vor. Weitere Informationen finden Sie unter Erstellen einer eigenen Speicherklasse.
  • In Clusterversionen wurden neue Sicherheitsgruppenregeln eingeführt 4.11 und später. Diese Regeländerungen bedeuten, dass Sie Ihre Sicherheitsgruppen synchronisieren müssen, bevor SieFile Storage for VPC. Weitere Informationen finden Sie unter HinzufügenFile Storage for VPC zu Apps.
  • Mit der Version wurden neue Speicherklassen hinzugefügt2.0 des Add-Ons. Sie können keine neuen Dateifreigaben mehr bereitstellen, die die älteren Speicherklassen verwenden. Vorhandene Volumes, die die älteren Speicherklassen verwenden, funktionieren weiterhin. Sie können die Volumes, die mit den älteren Klassen erstellt wurden, jedoch nicht erweitern. Weitere Informationen finden Sie im Migrieren zu einer neuen Speicherklasse.
  • Das Erstellen eines PVC mit Hilfe von StorageClassSecrets wird nicht unterstützt.
  • Stellen Sie sicher, dass der Benutzer, der den Cluster erstellt, über die Berechtigungen Reader, Writer und Operator für VPC Infrastructure Services verfügt.
  • Stellen Sie sicher, dass Sie eine Dienstberechtigung einrichten von der VPC-Infrastruktur zu KMS/HPCS wechseln, wenn Sie Ihre Dateifreigaben verschlüsseln möchten.

IBM Cloud ändert seine dedizierten Schlüsselverwaltungsservices von Hyper Protect Crypto Services zu Key Protect Dedicated.

Neue Sicherheitsgruppenregeln wurden in den Versionen „ 4.11 “ und höher eingeführt. Aufgrund dieser Regeländerungen müssen Sie Ihre Sicherheitsgruppen synchronisieren, bevor Sie „ File Storage for VPC “ verwenden können. Wenn Ihr Cluster ursprünglich mit Version 4.11 oder früher erstellt wurde, führen Sie die folgenden Befehle aus, um Ihre Sicherheitsgruppeneinstellungen zu synchronisieren.

  1. Rufen Sie die ID Ihres Clusters ab.
    ibmcloud oc cluster ls
    
  2. Rufen Sie die ID der Sicherheitsgruppe kube-<clusterID> ab.
    ibmcloud is sg kube-CLUSTER_ID  | grep ID
    
  3. Synchronisieren Sie die Sicherheitsgruppe kube-<clusterID> mit der ID, die Sie im vorherigen Schritt abgerufen haben.
    ibmcloud ks security-group sync -c CLUSTER_ID --security-group ID
    

Schnellstart für File Storage for VPC

Erstellen Sie einen Persistent Volume Claim (PVC), um File Storage for VPC dynamisch für Ihren Cluster bereitzustellen. Bei der dynamischen Bereitstellung wird automatisch das entsprechende persistente Volume (PV) erstellt und die Dateifreigabe in Ihrem Konto eingerichtet.

Ab sofort können Sie eine Speicherklasse der zweiten Generation wählen.

  1. Rufen Sie Ihren Red Hat OpenShift-Cluster auf.

  2. Überprüfen Sie die vorinstallierten Speicherklassen, indem Sie den folgenden Befehl ausführen: Weitere Informationen hierzu finden Sie in den Referenzinformationen zu Speicherklassen.

    oc get sc | grep vpc-file
    
  3. Speichern Sie die folgende YAML-Datei in einer Datei. In diesem Beispiel wird ein Claim mit dem Namen my-pvc unter Verwendung der Speicherklasse ibmc-vpc-file-min-iops mit einer Gigabyte-Größe von 10Gi erstellt.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc # Enter a name for your PVC.
    spec:
      accessModes:
      - ReadWriteMany # The file share can be mounted on multiple nodes and pods.
      resources:
        requests:
          storage: 20Gi # Enter the size of the storage in gigabytes (Gi).
      storageClassName: ibmc-vpc-file-min-iops # Enter the name of the storage class that you want to use.
    
  4. Erstellen Sie den PVC.

    oc apply -f my-pvc.yaml
    
  5. Überprüfen Sie, ob Ihr PVC erstellt und an den persistenten Datenträger (PV) gebunden wurde.

    oc describe pvc my-pvc
    

    Beispielausgabe

    Name:        my-pvc
    Namespace:    default
    StorageClass:    ""
    Status:        Bound
    Volume:        pvc-0d787071-3a67-11e7-aafc-eef80dd2dea2
    Labels:        <none>
    Capacity:    20Gi
    Access Modes:    RWX
    Events:
        FirstSeen    LastSeen    Count    From                                SubObjectPath    Type        Reason            Message
        ---------    --------    -----    ----                                -------------    --------    ------            -------
        1m        1m        1    {ibm.io/ibmc-vpc-file 31898035-3011-11e7-a6a4-7a08779efd33 }            Normal        ProvisioningSucceeded    Successfully provisioned volume pvc-0d787071-3a67-11e7-aafc-eef80dd2dea2
    
  6. Speichern Sie die folgende Implementierungskonfiguration in der Datei deployment.yaml und referenzieren Sie den PVC, den Sie im vorherigen Schritt erstellt haben.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment
      labels:
        app: my-deployment
    spec:
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox:1.28
            command: [ "sh", "-c", "sleep 1h" ]
            volumeMounts:
            - name: my-vol
              mountPath: /data/demo # Mount path for the application.
          volumes:
          - name: my-vol
            persistentVolumeClaim:
              claimName: my-pvc # Your PVC name.
    
    volumeMounts.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 Verzeichnis root in der physischen Instanz von File Storage for VPC gespeichert. Wenn Sie ein Volume für mehrere Anwendungen gemeinsam nutzen möchten, können Sie für jede Ihrer Anwendungen Volume-Unterpfade angeben.
    volumeMounts.name
    Geben Sie im Abschnitt 'containers: volumeMounts' den Namen des Datenträgers an, der an Ihren Pod angehängt werden soll.
    volume.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.
  7. Erstellen Sie die Implementierung.

    oc apply -f deployment.yaml
    
  8. Überprüfen Sie, dass der persistente Datenträger erfolgreich angehängt wurde.

    oc describe deployment my-deployment
    

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

    Containers:
      Mounts:
        /data/demo from my-vol (rw)
    Volumes:
    my-vol:
      Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
      ClaimName:  my-pvc
      ReadOnly:   false
    
  9. Optional: Versuchen Sie nach der Ausführung Ihres Pods, Ihren Speicherdatenträger zu erweitern.

Migrieren zu einer neuen Speicherklasse

  • Mit der Version wurden neue Speicherklassen hinzugefügt2.0 des Add-Ons.
  • Sie können keine neuen Dateifreigaben mehr bereitstellen, die die älteren Speicherklassen verwenden.
  • Vorhandene Volumes, die die älteren Speicherklassen verwenden, funktionieren weiterhin. Sie können die Volumes, die mit den älteren Klassen erstellt wurden, jedoch nicht erweitern.
  • Wenn Sie die Volume-Erweiterungsfunktion benötigen, führen Sie die folgenden Schritte aus, um Ihre Apps auf eine neuere Speicherklasse zu migrieren.
  • Wenn Sie die Volume-Erweiterungsfunktion nicht benötigen, müssen Sie nicht migrieren und Ihre PVCs funktionieren weiterhin wie gewohnt.
  • Die folgenden Schritte umfassen die manuelle Migration.
  1. Suchen Sie das PVC, das Sie migrieren möchten, und notieren Sie sich sowohl den PVC-Namen als auch den zugehörigen PV-Namen.

    oc get pvc
    
  2. Verkleinern Sie Ihre App, die PVC verwendet.

    oc scale deployment DEPLOYMENT --replicas 0
    
  3. Bearbeiten Sie das PV-Objekt, das Ihre App verwendet, um die Rückforderungsrichtlinie zu ändern in Retain und Speicherklasse auf ibmc-vpc-file-min-iops.

    kubectl edit pv PV
    
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 20Gi
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        name: <pvc-name>
        namespace: default
        ...
      persistentVolumeReclaimPolicy: Retain # Change delete to retain
      storageClassName: ibmc-vpc-file-min-iops # Enter a new storage class
      volumeMode: Filesystem
    
  4. Löschen Sie das vorhandene PVC-Objekt.

    kubectl delete pvc PVC
    
  5. Bearbeiten Sie das PV erneut und entfernen Sie die claimRef Abschnitt.

    kubectl edit pv PV
    
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 20Gi
      #claimRef:
        #apiVersion: v1
        #kind: PersistentVolumeClaim
        #name: <pvc-name>
        #namespace: default
        #resourceVersion: "381270"
        #uid: 4042f319-1233-4187-8549-8249a840a8dd
    
  6. Erstellen Sie ein PVC mit demselben Namen und derselben Größe wie Ihr vorheriges PVC. Dies sollte nacheinander für alle betroffenen PVCs durchgeführt werden.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc-name>
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: <size>Gi
      storageClassName: ibmc-vpc-file-min-iops
    
  7. Skalieren Sie Ihre App, die PVC verwendet hat.

    k scale deployment DEPLOYMENT --replicas x
    
  8. Um die Volume-Erweiterung weiterhin zu nutzen, siehe Einrichten der Volume-Erweiterung.

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.

Das Cluster-Add-on „ File Storage for VPC “ unterstützt die Erweiterung sowohl im Online- als auch im Offline-Modus. Eine Erweiterung ist jedoch nur innerhalb der vorgegebenen Größe und des IOP-Bereichs des Profils „ File Storage for VPC “ möglich.

Mit der Version „ 2.0 “ wurden neue Speicherklassen eingeführt. Die Volume-Erweiterung funktioniert nicht für Freigaben, die Speicherklassen aus früheren Versionen des Add-Ons verwenden.

Vorbereitende Schritte

Angehängten Datenträger erweitern

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

    kubectl edit pvc my-pvc
    
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 50Gi
    
  2. Speichern und schließen Sie die PVC. Warten Sie einige Minuten, bis der Datenträger erweitert wurde.

  3. Stellen Sie sicher, dass Ihr Volume erweitert ist.

    kubectl get pvc
    

    Beispielausgabe

    NAME     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
    my-pvc   Bound    pvc-25b6912e-75bf-41ca-b6b2-567fa4f9d245   50Gi       RWX            ibmc-vpc-file-min-iops   3m31s
    

Vorhandenen Dateispeicher an eine App anhängen

Erstellen Sie einen Persistent Volume Claim (PVC), um File Storage for VPC statisch für Ihren Cluster bereitzustellen. Durch die statische Bereitstellung können Clusteradministratoren vorhandene Speichereinheiten für einen Cluster verfügbar machen.

  1. Rufen Sie Ihre Cluster-ID ab.

    ibmcloud ks cluster ls
    
  2. Ermitteln Sie die ID Ihrer kube-<clusterID> Sicherheitsgruppe.

    ibmcloud is sg kube-CLUSTER_ID  | grep ID
    
  3. Erstellen Sie eine Dateifreigabe. Weitere Informationen finden Sie unter Dateifreigaben und Mountziele erstellen.

    ibmcloud is share-create --name my-file-share --zone us-south-2 --profile dp2 --size 1000 --iops 1000
    
  4. Erstellen Sie ein Freigabeeinhängeziel und geben Sie die kube-<clusterID> Sicherheitsgruppen-ID an, die Sie zuvor in der Option --vni-sgs abgerufen haben.

    ibmcloud is share-mount-target-create my-file-share --subnet my-subnet --name NAME --vni-name my-share-vni-1  --vni-sgs kube-CLUSTER_ID --resource-group-name Default --vpc ID
    
  5. Bevor Sie einen persistenten Datenträger (PV) erstellen können, rufen Sie die Details zu Ihrer Dateifreigabe ab.

    ibmcloud is shares
    
  6. Erfahren Sie mehr über Ihren Anteil. Notieren Sie sich die Mountziele.

    ibmcloud is share SHARE-ID
    

    Beispielbefehl.

    ibmcloud is share r134-bad98878-1f63-45d2-a3fd-60447094c2e6
    

    Beispielausgabe

    ID                           r134-bad98878-1f63-45d2-a3fd-60447094c2e6   
    Name                         pvc-e7e005a9-e96b-41ad-9d6e-74650a9110a0   
    CRN                          crn:v1:staging:public:is:us-south-1:a/77f2bceddaeb577dcaddb4073fe82c1c::share:r134-bad98878-1f63-45d2-a3fd-60447094c2e6   
    Lifecycle state              stable   
    Access control mode          security_group   
    Zone                         us-south-1   
    Profile                      dp2   
    Size(GB)                     10   
    IOPS                         100   
    User Tags                    clusterid:cpjao3l20dl78jadqkd0,namespace:default,provisioner:vpc.file.csi.ibm.io,pv:pvc-e7e005a9-e96b-41ad-9d6e-74650a9110a0,pvc:pv-file,reclaimpolicy:delete,storageclass:custom-eni   
    Encryption                   provider_managed   
    Mount Targets                ID                                          Name      
                                r134-aa2aabb8-f616-47be-886b-99220852b728   pvc-e7e005a9-e96b-41ad-9d6e-74650a9110a0      
    Resource group               ID                                 Name      
                                300b9469ee8676f9a038ecdf408c1a9d   Default      
    Created                      2024-06-11T19:55:11+05:30   
    Replication role             none   
    Replication status           none   
    Replication status reasons   Status code   Status message      
    
  7. Rufen Sie die nfsServerPath ab, die auch als Mount Path bezeichnet wird.

    ibmcloud is share-mount-target SHARE-ID SHARE-TARGET-ID
    

    Beispielbefehl.

    ibmcloud is share-mount-target  r134-bad98878-1f63-45d2-a3fd-60447094c2e6 r134-aa2aabb8-f616-47be-886b-99220852b728
    

    Beispielausgabe

    ID                          r134-aa2aabb8-f616-47be-886b-99220852b728   
    Name                        pvc-e7e005a9-e96b-41ad-9d6e-74650a9110a0   
    VPC                         ID                                          Name      
                                r134-f05922d4-d8ab-4f64-9a3d-82664b303bc1   vpc-public      
    Access control mode         security_group   
    Resource type               share_mount_target   
    Virtual network interface   ID                                          Name      
                                0716-6407fb4b-e962-49c4-8556-dc94f4574b4b   defective-chloride-huffy-gladly      
    Lifecycle state             stable   
    Mount path                  10.240.0.23:/89d8a454_f552_42bf_8374_4d31481edf4d   
    Transit Encryption          none   
    Created                     2024-06-11T19:55:12+05:30
    
  8. Erstellen Sie eine PV-Konfigurationsdatei mit dem Namen static-file-share.yaml, die auf Ihre Dateifreigabe verweist.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: static-file-share
    spec:
      mountOptions:
      - hard
      - nfsvers=4.1
      - sec=sys
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 10Gi
      csi:
        volumeAttributes:
          nfsServerPath: NFS-SERVER-PATH
        driver: vpc.file.csi.ibm.io
        volumeHandle: FILE-SHARE-ID#SHARE-TARGET-ID
    
  9. Erstellen Sie den persistenten Datenträger (PV).

    oc apply -f static-file-share.yaml
    
  10. Erstellen Sie einen PVC.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-static
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      storageClassName: "" #Leave the storage class blank.
    
  11. Erstellen Sie den PVC, um Ihren PV zu binden.

    oc apply -f pvc-static.yaml
    
  12. Erstellen Sie einen Verteilungsdateinamen testpod.yaml, um Ihre Dateifreigabe an einen Anwendungs-Pod anzuhängen.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: testpod
      labels:
        app: testpod
    spec:
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox:1.28
            command: [ "sh", "-c", "sleep 1h" ]
            volumeMounts:
            - name: my-vol
              mountPath: /data/demo # Mount path for the application.
          volumes:
          - name: pvc-name
            persistentVolumeClaim:
              claimName: pvc-static # The name of the PVC that you created earlier
    
    spec.containers.volumeMounts.mountPath
    Geben Sie den absoluten Pfad des Verzeichnisses ein, in dem der Datenträger innerhalb des Containers per Mount angehängt wird. Daten, die in den Mountpfad geschrieben werden, werden im Verzeichnis root in der physischen Instanz von File Storage for VPC gespeichert. Wenn Sie ein Volume für mehrere Anwendungen gemeinsam nutzen möchten, können Sie für jede Ihrer Anwendungen Volume-Unterpfade angeben.
    volumeMounts.name
    Geben Sie den Namen des Datenträgers ein, der an Ihren Pod angehängt werden soll.
    volume.name
    Geben Sie den Namen des Datenträgers ein, der an Ihren Pod angehängt werden soll. Dieser Name ist in der Regel mit volumeMounts.name identisch.
    volumes.persistentVolumeClaim.claimName
    Geben Sie den Namen des PVC ein, an das das von Ihnen gewünschte PV gebunden ist.
  13. Erstellen Sie die Implementierung.

    oc apply -f testpod.yaml
    

Eigene Speicherklasse erstellen

Sie können Ihre eigene, individuell angepasste Speicherklasse mit den für Ihre File Storage for VPC-Instanz bevorzugten Einstellungen erstellen. Um die Kosten niedrig zu halten, können Sie anfangs einen PVC mit einem minimalen Durchsatz bereitstellen und dann später auf den PVC zugreifen und den Durchsatz anpassen, wenn der Bedarf besser definiert ist.

Wenn Sie die folgenden Features benötigen, müssen Sie Ihre eigene Speicherklasse erstellen.

  • Ihre App muss ohne Rootberechtigung ausgeführt werden.
  • Ihr Cluster befindet sich in einer anderen Ressourcengruppe als Ihre VPC und Ihr Teilnetz.
  • Sie müssen den Dateifreigabezugriff auf Pods auf einem bestimmten Knoten oder in einer bestimmten Zone beschränken.
  • Sie müssen Ihre eigene Verschlüsselung (BYOK) mit einem KMS-Provider wie HPCS oder Key Protectverwenden.
  • Sie müssen das Teilnetz oder die IP-Adresse von Virtual Network Interface(VNI) manuell angeben.
  • Sie brauchen mehr Kontrolle über Kapazität und Bandbreite. In diesem Fall können Sie das Profil rfs verwenden. Weitere Informationen finden Sie unter Übersicht über regionale Dateifreigaben.
  • Sie möchten die angeforderte PVC-Kapazität automatisch auf die minimal unterstützte Kapazität für ein festes IOPS-Profil dp2 aufrunden. Weitere Informationen finden Sie unter Automatische Kapazitätsrundung für feste IOPS-Profile aktivieren.

Wenn sich Ihr Cluster und Ihr VPC nicht in derselben Ressourcengruppe befinden, müssen Sie die ID der VPC-Ressourcengruppe im Abschnitt resourceGroup und die ID der Sicherheitsgruppe kube-<clusterID> im Abschnitt securityGroupIDs angeben. Sie können die ID der kube-<clusterID>-Sicherheitsgruppe ermitteln, indem Sie ibmcloud is sg kube-CLUSTER_ID | grep ID ausführen.

  1. Erstellen Sie eine Konfigurationsdatei für die Speicherklasse. Das folgende Beispiel verwendet das Profil dp2. Wählen Sie zwischen einer Speicherklasse der ersten und einer der zweiten Generation.

    Beispiel der ersten Generation:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ibmc-vpc-file-custom-sc
      labels:
        app.kubernetes.io/name: ibm-vpc-file-csi-driver
    provisioner: vpc.file.csi.ibm.io
    mountOptions:
      - hard
      - nfsvers=4.1
      - sec=sys
    parameters:
        profile: "dp2" # or rfs
        billingType: "hourly" # hourly or monthly
        encrypted: "false"
        encryptionKey: "" # If encrypted is true, then a user must specify the CRK-CRN.
        resourceGroup: "" # Resource group ID. By default, the resource group of the cluster will be used from storage-secrete-store secret.
        isENIEnabled: "true" # VPC File Share VNI feature will be used by all PVCs created with this storage class.
        securityGroupIDs: "" # By default cluster security group i.e kube-<clusterID> will be used. User can provide their own comma separated SGs.
        subnetID: "" # User can provide subnetID in which the VNI will be created. Zone and region are mandatory for this. If not provided CSI driver will use the subnetID available in the cluster's VPC zone.
        region: "" # VPC CSI driver will select a region from cluster node's topology. The user can override this default.
        zone: "" # VPC CSI driver will select a region from cluster node's topology. The user can override this default.
        primaryIPID: "" # Existing ID of reserved IP from the same subnet as the file share zone. Zone and region are mandatory for this. SubnetID is not mandatory for this.
        primaryIPAddress: "" # IPAddress for VNI to be created in the subnet of the zone. Zone, region and subnetID are mandatory for this.
        iops: "" # Example: 100, this option is valid only for the dp2 profile.
        allowCapacityRoundoffForIops: "true" # Optional. Enables automatic capacity roundoff for fixed IOPS dp2 profiles. When set to "true", if the requested PVC size is lower than the minimum supported capacity for the requested IOPS, the driver automatically provisions the volume at the minimum supported capacity. Disabled by default. Requires a Virtual Private Endpoint Gateway (VPEG) to IBM Global Catalog.
        throughput: "" # Example: 2000, this option is valid only for the rfs profile
        tags: "" # User can add a list of tags "a, b, c" that will be used at the time of provisioning file share, by default CSI driver has its own tags.
        uid: "0" # The initial user identifier for the file share, by default its root.
        gid: "0" # The initial group identifier for the file share, by default its root.
        classVersion: "1"
    reclaimPolicy: "Delete"
    allowVolumeExpansion: true
    

    Beispiel der zweiten Generation:

    Wenn Sie eine 10Gi PVC unter Verwendung der Speicherklasse der ersten Generation ibmc-vpc-file-min-iops bereitstellen, beträgt die maximale IOPS 1.000. Der Standardwert für die Zuweisung ist 100 und der Durchsatz ist auf 210 Mbit/s festgelegt, was nicht einstellbar ist.

    Wenn Sie jedoch eine 10Gi PVC unter Verwendung der Speicherklasse der zweiten Generation ibmc-vpc-file-regional bereitstellen, ist die IOPS auf 35.000 festgelegt und der maximale Durchsatz kann auf bis zu 8192 Mbit/s eingestellt werden, obwohl er standardmäßig bei 8 Mbit/s liegt.

    Ein weiteres Beispiel: Wenn Sie anfänglich eine PVC mit einer Größe von weniger als 16 TB und einem festen IOPS-Wert von 500 bereitstellen, indem Sie die Speicherklasse der ersten Generation ibmc-vpc-file-500-iops verwenden, sind IOPS und Durchsatz fest und werden auf der Grundlage von Größe und IOPS berechnet.

    Um diese PVC über 16 TB hinaus zu erweitern, kann die Speicherklasse der ersten Generation ibmc-vpc-file-500-iops nicht verwendet werden. Wird stattdessen die Speicherklasse der zweiten Generation ibmc-vpc-file-regional-max-bandwidth verwendet, kann eine PVC beliebiger Größe bis zu 32 TB bereitgestellt werden und bietet bis zu 35000 IOPS und einen Standarddurchsatz von 8192 Mbit/s, der einstellbar ist.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ibmc-vpc-file-regional-max-bandwidth
      labels:
        app.kubernetes.io/name: ibm-vpc-file-csi-driver
      annotations:
        version: v2.0
        revision: "1"
    provisioner: vpc.file.csi.ibm.io
    mountOptions:
      - hard
      - nfsvers=4.1
      - sec=sys
    parameters:
      profile: "rfs" # general-purpose, sdp, 5iops-tier, 10iops-tier, or custom
      billingType: "hourly"
      encrypted: "false"
      encryptionKey: ""
      resourceGroup: ""
      throughput: "8192" # Example: 2000
      classVersion: "1"
      isENIEnabled: "true"   # VPC File Share ENI/VNI feature will be used by all PVCs created with this storage class.
      securityGroupIDs: ""   # By default cluster security group i.e kube-<clusterID> will be used. User can provide their own command separated SGs.
      subnetID: ""         # User can provide subnetID in which the ENI/VNI will be created.If not provided CSI driver will use the subnetID available in the cluster' VPC zone.
      primaryIPID: ""      # Existing ID of reserved IP from any of subnets within the VPC,subnetID is not mandatory for this.
      primaryIPAddress: "" # IPAddress for ENI/VNI to be created in the respective subnet,subnetID is mandatory for this.
      uid: "0"             # The initial user identifier for the file share, by default its root.
      gid: "0"             # The initial group identifier for the file share, by default its root.
    allowVolumeExpansion: true # Select true or false. Only supported on version 3.0.1 and later
    reclaimPolicy: "Delete"
    
  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

    ibmc-vpc-file-custom-sc                       vpc.file.csi.ibm.io
    

Festlegen der Standard-Speicherklasse

  • Das Ändern der Standard-Speicherklasse ist nur für die Add-on-Version 2.0 oder höher verfügbar.
  • Sie können die Standard-Speicherklasse auf eine der vorinstallierten File Storage for VPC-Klassen oder Ihre eigene benutzerdefinierte Speicherklasse setzen. Wenn Sie eine benutzerdefinierte Speicherklasse verwenden, stellen Sie sicher, dass der Provisioner auf vpc.file.csi.ibm.io eingestellt ist.
  • Wenn in einem Cluster mehrere Speicherklassen als Standard festgelegt sind, kann jede der Standard-Speicherklassen verwendet werden. Um sicherzustellen, dass die richtige Speicherklasse verwendet wird, sollten Sie alle vorhandenen Standardspeicherklassen im Cluster entfernen, bevor Sie eine neue Standardklasse festlegen. Wenn das VPC-Blockspeicher-Add-on ebenfalls installiert ist, ist möglicherweise bereits eine VPC-Blockspeicherklasse als Standard festgelegt. Informationen dazu, wie Sie diese entfernen können, bevor Sie einen neuen Standard festlegen, finden Sie unter Ändern der Standard-Speicherklasse für VPC-Blockspeicher.
  1. Bearbeiten Sie die addon-vpc-file-csi-driver-configmap configmap und geben Sie den Namen der Speicherklasse im Parameter SET_DEFAULT_STORAGE_CLASS an.

    oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system
    

    Beispielausgabe

    SET_DEFAULT_STORAGE_CLASS: "ibmc-vpc-file-eit"
    
  2. Überprüfen Sie, ob die Standardeinstellung korrekt ist, indem Sie die file-csi-driver-status configmap beschreiben.

    oc describe cm file-csi-driver-status -n kube-system
    

    Beispielhafte Ausgabe.

    events:
    ----
    - event: EnableVPCFileCSIDriver
      description: 'VPC File CSI Driver enable successful, DriverVersion: v2.0.6'
      timestamp: "2024-09-20 12:01:02"
    - event: Change default storage class request
      description: Successfully set 'ibmc-vpc-file-eit' as default storage class
      timestamp: "2024-09-20 12:01:36"
    

App bereitstellen, die ohne Rootberechtigung ausgeführt wird

Die Parameter „ uid “ und „ gid “ in der Speicherklasse legen die anfänglichen Benutzer- und Gruppen-IDs für die Dateifreigabe auf Infrastrukturebene fest. Hintergrundinformationen zur Funktionsweise von Zusatz-IDs im VPC-Dateispeicher finden Sie unter „ Zusatz-IDs für VPC-Dateifreigaben “.

  1. Erstellen Sie Ihre eigene Speicherklasse und geben Sie die Gruppen-ID oder die Benutzer-ID an, die Sie für Ihre App verwenden wollen.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ibmc-vpc-file-custom-sc
      labels:
        app.kubernetes.io/name: ibm-vpc-file-csi-driver
    provisioner: vpc.file.csi.ibm.io
    mountOptions:
      - hard
      - nfsvers=4.1
      - sec=sys
    parameters:
        profile: "dp2"
        iops: "100"
        billingType: "hourly" # hourly or monthly
        encrypted: "false"
        uid: "3000" # The initial user identifier for the file share.
        gid: "1000" # The initial group identifier for the file share.
        classVersion: "1"
    reclaimPolicy: "Delete"
    allowVolumeExpansion: true
    
  2. Speichern Sie die folgende YAML-Datei in einer Datei namens my-pvc.yaml.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      storageClassName: ibmc-vpc-file-custom-sc
    
  3. Erstellen Sie den PVC.

    oc apply -f my-pvc.yaml
    
  4. Erstellen Sie einen Pod, der den PVC anhängt.

    apiVersion: v1
    kind: Pod
    metadata:
      name: security-context-demo
    spec:
      securityContext:
        runAsUser: 3000
        runAsGroup: 1000
      volumes:
      - name: sec-ctx-vol
        persistentVolumeClaim:
            claimName: my-pvc
      containers:
      - name: sec-ctx-demo
        image: busybox:1.28
        command: [ "sh", "-c", "sleep 1h" ]
        volumeMounts:
        - name: sec-ctx-vol
          mountPath: /data/demo
        securityContext:
          allowPrivilegeEscalation: false
    
  5. Überprüfen Sie, ob der Pod läuft.

    oc get pods
    

Einrichten der KMS-Verschlüsselung für File Storage for VPC

Verwenden Sie einen KMS-Anbieter (Key Management Service) wie IBM® Key Protect oder Hyper Protect Crypto Services, um einen privaten Root-Schlüssel zu erstellen, den Sie in Ihrer File Storage for VPC-Instanz verwenden, um Daten beim Schreiben in den Speicher zu verschlüsseln. Nachdem Sie den privaten Root-Schlüssel erstellt haben, erstellen Sie eine eigene Speicherklasse oder ein Kubernetes-Geheimnis mit Ihrem Root-Schlüssel und verwenden Sie diese Speicherklasse oder dieses Geheimnis anschließend zur Bereitstellung Ihrer File Storage for VPC-Instanz.

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

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

  3. Vervollständigen Sie die Voraussetzungen für die vom Kunden verwaltete Verschlüsselung und autorisieren Sie File Storage for VPC für den Zugriff auf IBM® Key Protect. Stellen Sie sicher, dass File Storage for VPC mindestens Reader Zugriff auf Ihre KMS-Instanz hat.

  4. Erstellen Sie eine benutzerdefinierte Speicherklasse und geben Sie Ihre KMS-Details an.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: custom-sc-encrypted
      labels:
        app.kubernetes.io/name: ibm-vpc-file-csi-driver
    provisioner: vpc.file.csi.ibm.io
    mountOptions:
      - hard
      - nfsvers=4.1
      - sec=sys
    parameters:
        profile: "dp2"
        billingType: "hourly" # hourly or monthly
        encrypted: "true"
        encryptionKey: "" # Specify the root key CRN.
        resourceGroup: "" # Resource group ID. By default, the resource group of the cluster will be used from storage-secrete-store secret.
        isENIEnabled: "true" # VPC File Share VNI feature will be used by all PVCs created with this storage class.
        securityGroupIDs: "" # By default cluster security group i.e kube-<clusterID> will be used. User can provide their own comma separated SGs.
        subnetID: "" # User can provide subnetID in which the VNI will be created. Zone and region are mandatory for this. If not provided CSI driver will use the subnetID available in the cluster's VPC zone.
        region: "" # VPC CSI driver will select a region from cluster node's topology. The user can override this default.
        zone: "" # VPC CSI driver will select a region from cluster node's topology. The user can override this default.
        primaryIPID: "" # Existing ID of reserved IP from the same subnet as the file share zone. Zone and region are mandatory for this. SubnetID is not mandatory for this.
        primaryIPAddress: "" # IPAddress for VNI to be created in the subnet of the zone. Zone, region and subnetID are mandatory for this.
        tags: "" # User can add a list of tags "a, b, c" that will be used at the time of provisioning file share, by default CSI driver has its own tags.
        uid: "0" # The initial user identifier for the file share, by default its root.
        gid: "0" # The initial group identifier for the file share, by default its root.
        classVersion: "1"
    reclaimPolicy: "Delete"
    allowVolumeExpansion: true
    
  5. Erstellen Sie die Speicherklasse.

    oc apply -f encrypted-class.yaml
    
  6. Speichern Sie die folgende YAML-Datei in einer Datei namens my-pvc.yaml.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      storageClassName: custom-sc-encrypted
    
  7. Erstellen Sie den PVC.

    oc apply -f my-pvc.yaml
    
  8. Speichern Sie die folgende Implementierungskonfiguration in der Datei deployment.yaml und referenzieren Sie den PVC, den Sie im vorherigen Schritt erstellt haben.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment
      labels:
        app: my-deployment
    spec:
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox:1.28
            command: [ "sh", "-c", "sleep 1h" ]
            volumeMounts:
            - name: my-vol
              mountPath: /data/demo # Mount path for the application.
          volumes:
          - name: my-vol
            persistentVolumeClaim:
              claimName: my-pvc # Your PVC name.
    
    volumeMounts.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 Verzeichnis root in der physischen Instanz von File Storage for VPC gespeichert. Wenn Sie ein Volume für mehrere Anwendungen gemeinsam nutzen möchten, können Sie für jede Ihrer Anwendungen Volume-Unterpfade angeben.
    volumeMounts.name
    Geben Sie im Abschnitt 'containers: volumeMounts' den Namen des Datenträgers an, der an Ihren Pod angehängt werden soll.
    volume.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.
  9. Erstellen Sie die Implementierung.

    oc apply -f deployment.yaml
    

Einrichten der Verschlüsselung während der Übertragung (EIT)

Informationen zum Einrichten der Verschlüsselung während der Übertragung für File Storage for VPC finden Sie unter „ Verschlüsselung während der Übertragung für IBM Cloud File Storage for VPC “. Dieses Thema umfasst sowohl zonale Dateifreigaben (dp2-Profil) als auch regionale Dateifreigaben (rfs-Profil, Beta).

Aktualisierung von Container-Ressourcenanforderungen und -Limits

Sie können die Anforderungen und Grenzwerte für CPU- und Speicherressourcen der Container anpassen, die im Add-on „ File Storage for VPC “ ausgeführt werden. Durch die Anpassung dieser Werte können Sie die Leistung in großen Clustern oder in Umgebungen mit begrenzten Ressourcen optimieren.

Die Parameter folgen dem Namensschema „ <ContainerName>CPULimit “, „ <ContainerName>CPURequest “, „ <ContainerName>MemoryLimit “ und „ <ContainerName>MemoryRequest “. Wenden Sie diese auf die Container des Controllers und des Knotenservers an.

  1. Bearbeiten Sie die ConfigMap „ addon-vpc-file-csi-driver-configmap “ und fügen Sie die Ressourcenparameter für die Container hinzu, die Sie anpassen möchten. Im folgenden Beispiel werden die CPU- und Speicherwerte für die Controller- und Knotenserver-Container festgelegt.

    oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system
    

    Beispielwerte:

    controllerCPULimit: "200m"
    controllerCPURequest: "100m"
    controllerMemoryLimit: "256Mi"
    controllerMemoryRequest: "128Mi"
    nodeServerCPULimit: "200m"
    nodeServerCPURequest: "100m"
    nodeServerMemoryLimit: "256Mi"
    nodeServerMemoryRequest: "128Mi"
    
  2. Überprüfen Sie, ob die Änderungen an der Ressource erfolgreich übernommen wurden, indem Sie die ConfigMap „ file-csi-driver-status “ beschreiben. Halten Sie im Abschnitt „ events “ Ausschau nach einer Veranstaltung von „ Successfully set container resources “.

    oc describe cm file-csi-driver-status -n kube-system
    

    Beispielausgabe:

    events:
    ----
    - description: Successfully set container resources
      event: Change container resources
      timestamp: "2026-06-26 08:32:05"
    

Begrenzen des Dateifreigabezugriffs nach Worker-Pool, Zone oder Workerknoten

Das Standardverhalten für File Storage for VPC Cluster-Add-on ist, dass Pods auf jedem Knoten auf Dateifreigaben zugreifen können. Sie können auch eine differenziertere Steuerung anwenden, wie Pods auf Ihre Dateifreigaben zugreifen. Sie können beispielsweise den Dateifreigabezugriff auf Pods auf einem bestimmten Knoten in einer bestimmten Zone in einem bestimmten Worker-Pool beschränken. In den folgenden Szenarios wird beschrieben, wie Sie den Pod-Zugriff auf Ihre Dateifreigaben konfigurieren können.

Wenn ein PVC erstellt wird, wird ein Dateifreigabeziel pro PVC erstellt und eine VNI-IP auf diesem Subnetz in der Zone reserviert. Dies bedeutet, dass die maximale Anzahl von PVCs für VPC-Dateispeicher von den verfügbaren IP-Adressen in diesem Teilnetz abhängt.

Wenn Sie die folgenden VNI-Funktionen verwenden, um den Pod-Zugriff auf Ihre Dateifreigaben zu begrenzen, ist Ihre App möglicherweise nicht hoch verfügbar.

Vorbereitende Schritte

Um den Dateifreigabezugriff nach Knoten, Zone oder Ressourcengruppe zu beschränken, müssen Sie zuerst eine angepasste VPC-Sicherheitsgruppe erstellen.

  1. Listen Sie Ihre Cluster auf und notieren Sie sich die Cluster-ID, unter der Sie Dateispeicher bereitstellen wollen.

    ibmcloud ks cluster ls
    
  2. Holen Sie sich die Details zu Ihrem Arbeitskräftepool.

    ibmcloud ks worker-pool ls --cluster CLUSTER
    
  3. Holen Sie sich die Details Ihres Subnetzes.

    ibmcloud ks worker-pool get WORKER_POOL --cluster CLUSTER | grep -A 3 Subnets
    
  4. Ermitteln Sie Ihre Subnetz-CIDRs. Wiederholen Sie diesen Schritt für jedes Subnetz. Sie verwenden diesen CIDR-Bereich später.

    ibmcloud is subnet SUBNET_ID | grep "IPv4 CIDR"
    
  5. Listen Sie Ihre Sicherheitsgruppen auf und notieren Sie die ID kube-<clusterID> der Sicherheitsgruppe für Ihren Cluster. Sie benötigen die Sicherheitsgruppen-ID später, wenn Sie Sicherheitsgruppenregeln hinzufügen.

    ibmcloud is sg
    

    Beispielausgabe

    ID                                          Name                                             Rules   Targets   VPC       Resource group
    r006-4aaec88f-4986-4b7c-a737-401f7fef1555   kube-clusterID                       15      0         my-vpc   default
    
  6. Erstellen Sie eine angepasste Sicherheitsgruppe in derselben VPC wie Ihr Cluster. Sie können diese Sicherheitsgruppe verwenden, um den Zugriff auf Ihre Dateifreigaben durch Hinzufügen von Sicherheitsgruppenregeln zu steuern.

    ibmcloud is security-group-create my-custom-security-group VPC-ID
    
  7. Erstellen Sie Ihre eigene Speicherklasse und geben Sie die ID der angepassten Sicherheitsgruppe ein, die Sie zuvor erstellt haben. Alle aus dieser Speicherklasse erstellten PVCs befinden sich in Ihrer angepassten Sicherheitsgruppe.

  8. Erstellen Sie ein PVC, das Ihre eigene Speicherklasse verwendet.

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-custom-vni
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 10Gi
        storageClassName: "" # For example: my-custom-storage-class
    
  9. Nachdem der persistente Datenträger an den PVC gebunden wurde, rufen Sie die Details des persistenten Datenträgers ab und notieren Sie den Wert nfsServerPath, um die VNI-IP-Adresse zu finden.

    kubectl get pv pvc-XXXX -o yaml | grep nfsServerPath
    

    Beispielausgabe

    nfsServerPath: XXX.XX.XX.XXX:/XX # VNI IP address
    

Begrenzen des Dateifreigabezugriffs auf Pods auf einem Workerknoten

  1. Vergewissern Sie sich, dass Sie die Voraussetzungen erfüllt haben.

  2. Fügen Sie die folgende Regel zu der angepassten Sicherheitsgruppe hinzu, die Sie zuvor erstellt haben.

    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.240.0.20 # Worker node IP
    
  3. Fügen Sie die folgende Regel zur Sicherheitsgruppe kube-clusterID hinzu.

    ibmcloud is sg-rulec kube-<cluster-id> outbound tcp --port-min 111 --port-max 2049 --remote 10.240.0.10 # VNI IP
    
  4. Erstellen Sie eine Bereitstellung, die Ihren PVC verwendet. Nur Pods, die auf dem Workerknoten bereitgestellt werden, der der von Ihnen erstellten Regel entspricht, können den PVC anhängen oder verwenden. Pods, die auf anderen Knoten bereitgestellt werden, verbleiben im Containerstatus creating.

Begrenzen des Dateifreigabezugriffs auf Pods auf Workerknoten in einer einzelnen Zone

  1. Vergewissern Sie sich, dass Sie die Voraussetzungen erfüllt haben.

  2. Fügen Sie die folgende Regel zu der angepassten Sicherheitsgruppe hinzu, die Sie zuvor erstellt haben.

    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.240.0.0/24 # zone subnet cidr range
    
  3. Fügen Sie die folgende Regel zur Sicherheitsgruppe kube-clusterID hinzu. Geben Sie die IP-Adresse der virtuellen Netzschnittstelle (VNI) an.

    ibmcloud is sg-rulec kube-<cluster-ID> outbound tcp --port-min 111 --port-max 2049 --remote 10.240.0.10 # VNI IP
    
  4. Erstellen Sie eine Bereitstellung, die Ihren PVC verwendet. Nur Pods, die in der Zone bereitgestellt werden, die in der vorherigen Regel aufgelistet ist, können den PVC anhängen. Pods, die in anderen Zonen bereitgestellt werden, können nicht auf den PVC zugreifen und verbleiben im Containerstatus creating.

Begrenzen des Dateifreigabezugriffs auf Pods auf Workerknoten in einem einzelnen Worker-Pool

  1. Vergewissern Sie sich, dass Sie die Voraussetzungen erfüllt haben.

  2. Erstellen Sie eingehende Regeln für jeden Subnetzbereich des Worker-Pools.

    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.240.0.0/24 # zone 1 subnet cidr range
    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.240.1.0/24 # zone 2 subnet cidr range
    
  3. Fügen Sie die folgende Regel zur Sicherheitsgruppe kube-clusterID hinzu. Geben Sie die IP-Adresse der virtuellen Netzschnittstelle (VNI) als ferne Schnittstelle oder Quelle an.

    ibmcloud is sg-rulec kube-<cluster-ID> outbound tcp --port-min 111 --port-max 2049 --remote 10.240.0.10 # VNI IP
    
  4. Stellen Sie eine App bereit, die das zuvor erstellte PVC verwendet. Nur Pods in den Worker-Pools, die in der vorherigen Regel angegeben wurden, können den PVC anhängen. Wenn Sie Ihre App in einem DaemonSet bereitstellen, werden Pods nur erfolgreich auf Workerknoten bereitgestellt, für die Sie Sicherheitsgruppenregeln erstellt haben. Pods in Worker-Pools, die sich nicht im angegebenen Worker-Pool befinden, schlagen mit dem Fehler MountVolume.SetUp failed for volume "pvc-184b8c92-33ea-4874-b2ac-17665e53c060" : rpc error: code = DeadlineExceeded desc = context deadline exceeded fehl.

Dateifreigabezugriff auf Pods auf Workerknoten in mehreren Worker-Pools beschränken

  1. Vergewissern Sie sich, dass Sie die Voraussetzungen erfüllt haben.

  2. Fügen Sie Ihrer benutzerdefinierten Sicherheitsgruppe die folgenden Regeln hinzu. Geben Sie die Worker-Pools und die Teilnetz-CIDR-Bereiche als ferne Quelle an.

    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.240.1.0/24 # worker pool 1, zone 1 subnet CIDR range
    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.240.1.0/24 # worker pool 1, zone 2 subnet CIDR range
    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.241.0.0/24 # worker pool 2, zone 1 subnet CIDR range
    ibmcloud is sg-rulec CUSTOM-SG inbound tcp --port-min 111 --port-max 2049 --remote 10.241.1.0/24 # worker pool 2, zone 2subnet CIDR range
    
  3. Fügen Sie die folgende Regel zur Sicherheitsgruppe kube-<clusterID> hinzu. Geben Sie die IP-Adresse der virtuellen Netzschnittstelle (VNI) als ferne Schnittstelle oder Quelle an.

    ibmcloud is sg-rulec kube-<clusterID> outbound tcp --port-min 111 --port-max 2049 --remote 10.240.1.7 # VNI-IP
    
  4. Erstellen Sie eine Bereitstellung, die Ihren PVC verwendet. Nur Pods, die in der in der Regel angegebenen Zone bereitgestellt werden, können den PVC anhängen. Pods, die auf den eingeschränkten Workerknoten bereitgestellt werden, verbleiben im Containerstatus creating.