Create a PVC (PersistentVolumeClaim) and mount it to a Pod

Print

Storage Types in IBM Cloud

  • Block Storage

    • "ReadWriteOne" is available in Access Modes

    • Storage cannot be shared

  • File Storage

    • "ReadWriteMany" is available in Access Modes

    • Storage can be shared when multiple Pods are launched

rating

  • bronze~gold: Select Storage Size with fixed IOPS
  • custom: Select Storage Size and IOPS according to Size

bronzesilvergoldcustom
iopsPerGB2410
sizeRange[20-12000]Gi[20-12000]Gi[20-4000]Gi
sizeIOPSRange


[20-39]Gi : [100-1000]
[40-79]Gi : [100-2000]
[80-99]Gi : [100-4000]
[100-499]Gi : [100-6000]
[500-999]Gi : [100-10000]
[1000-1999]Gi : [100-20000]
[2000-2999]Gi : [200-40000]
[3000-3999]Gi : [200-48000]
[4000-7999]Gi : [300-48000]
[8000-9999]Gi : [500-48000]
[10000-12000]Gi : [1000-48000]


Billing

  • monthly or hourly (hourly is recommended when creating ad-hoc tests)

persistentVolume Reclaim Policy value

  • ibmc-block-{등급} : "delete"

  • ibmc-block-retain-{등급} : "retain"


Creation Example

ibmc-block-retain-silver

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-myapp
  annotations:
    volume.beta.kubernetes.io/storage-class: "ibmc-block-retain-silver"
  labels:
    billingType: "monthly"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi


ibmc-block-retain-custom

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-myapp
  annotations:
    volume.beta.kubernetes.io/storage-class: "ibmc-block-retain-custom"
  labels:
    billingType: "monthly"
spec:
  accessModes:
    - ReadWriteOnce   # file storage인 경우에는 - ReadWriteMany
  resources:
    requests:
      storage: 20Gi
      iops: "1000"

Mount the generated PVC to Deployment

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>

Mount the generated PVC to the StatefulSet

apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: web
spec:
 serviceName: "nginx"
 replicas: 3
 podManagementPolicy: "Parallel"
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     affinity:
       podAntiAffinity:
         preferredDuringSchedulingIgnoredDuringExecution:
         - weight: 100
       podAffinityTerm:
         labelSelector:
           matchExpressions:
               - key: app
             operator: In
             values:
                 - nginx
             topologyKey: failure-domain.beta.kubernetes.io/zone
     containers:
     - name: nginx
       image: k8s.gcr.io/nginx-slim:0.8
       ports:
       - containerPort: 80
         name: web
       volumeMounts:
       - name: www
         mountPath: /usr/share/nginx/html
       - name: wwwww
         mountPath: /tmp1
 volumeClaimTemplates:
 - metadata:
     name: myvol1
   spec:
     accessModes:
     - ReadWriteMany # access mode
     resources:
       requests:
         storage: 20Gi
     storageClassName: ibmc-file-bronze-delayed
 - metadata:
     name: myvol2
   spec:
     accessModes:
     - ReadWriteMany # access mode
     resources:
       requests:
         storage: 20Gi
     storageClassName: ibmc-file-bronze-delayed

References

Online consultation

Contact us

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.