使用kubectl部署带云硬盘存储卷的工作负载 操作场景 云硬盘创建或导入CCE后,可以在工作负载中挂载云硬盘。 须知: 云硬盘不支持跨可用区挂载。在挂载前,您可以使用 kubectl get pvc 命令查询当前集群所在分区下可用PVC。 操作步骤 步骤 1 执行如下命令,配置名为“evspodexample.yaml”的创建Pod的yaml文件。 touch evspodexample.yaml vi evspodexample.yaml 在无状态工作负载中基于pvc共享式使用云硬盘存储示例: apiVersion: extensions/v1beta1 kind: Deployment metadata: name: evspodexample namespace: default spec: replicas: 1 selector: matchLabels: app: evspodexample template: metadata: labels: app: evspodexample spec: containers: image: nginx name: container0 volumeMounts: mountPath: /tmp name: pvcevsexample restartPolicy: Always volumes: name: pvcevsexample persistentVolumeClaim: claimName: pvcevsautoexample 表 关键参数说明 前置路径 参数 描述 spec.template.spec.containers.volumeMounts name 容器内挂载卷的名称。 spec.template.spec.containers.volumeMounts mountPath 容器内挂载路径,示例中挂载到“/tmp”路径。 spec.template.spec.volumes name 卷的名称。 spec.template.spec.volumes.persistentVolumeClaim claimName 已有PVC名称。 “spec.template.spec.containers.volumeMounts.name ”和 “spec.template.spec.volumes.name”有映射关系,必须保持一致。 在有状态工作负载中基于PVCTemplate独占式使用云硬盘存储示例: 1.15及以上版本的集群,yaml示例如下: apiVersion: apps/v1 kind: StatefulSet metadata: name: deployevssatain namespace: default generation: 1 labels: appgroup: '' annotations: container.io/container0: /swr/dockerimage/nginx.png description: '' spec: replicas: 1 selector: matchLabels: app: deployevssatain failuredomain.beta.kubernetes.io/region: region01 failuredomain.beta.kubernetes.io/zone: AZ01 template: metadata: labels: app: deployevssatain failuredomain.beta.kubernetes.io/region: region01 failuredomain.beta.kubernetes.io/zone: AZ01 annotations: metrics.alpha.kubernetes.io/customendpoints: '[{"api":"","path":"","port":"","names":""}]' pod.alpha.kubernetes.io/initialized: 'true' spec: containers: name: container0 image: 'nginx:1.12alpineperl' env: name: PAASAPPNAME value: deployevssatain name: PAASNAMESPACE value: default name: PAASPROJECTID value: a2cd8e998dca42e98a41f596c636dbda resources: {} volumeMounts: name: bssatamountoptionpvc mountPath: /tmp terminationMessagePath: /dev/terminationlog terminationMessagePolicy: File imagePullPolicy: IfNotPresent restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst securityContext: {} imagePullSecrets: name: defaultsecret affinity: {} schedulerName: defaultscheduler volumeClaimTemplates: metadata: name: bssatamountoptionpvc namespace: default annotations: everest.io/diskvolumetype: SATA spec: accessModes: ReadWriteOnce resources: requests: storage: 10Gi storageClassName: csidisk serviceName: wwww podManagementPolicy: OrderedReady updateStrategy: type: RollingUpdate revisionHistoryLimit: 10 表1关键参数说明 前置路径 参数 描述 metadata name 创建的工作负载名称。 spec.template.spec.containers image 工作负载的镜像。 spec.template.spec.containers.volumeMount mountPath 容器内挂载路径,示例中挂载到“/tmp”路径。 spec serviceName 工作负载对应的服务,服务创建过程请参见6.3 创建有状态负载(StatefulSet)。 “spec.template.spec.containers.volumeMounts.name ”和 “spec.volumeClaimTemplates.metadata.name”有映射关系,必须保持一致。 1.13及之前版本,yaml示例如下: apiVersion: apps/v1 kind: StatefulSet metadata: name: deployevssatain namespace: default generation: 1 labels: appgroup: '' annotations: container.io/container0: /swr/dockerimage/nginx.png description: '' spec: replicas: 1 selector: matchLabels: app: deployevssatain failuredomain.beta.kubernetes.io/region: region01 failuredomain.beta.kubernetes.io/zone: AZ01 template: metadata: labels: app: deployevssatain failuredomain.beta.kubernetes.io/region: region01 failuredomain.beta.kubernetes.io/zone: AZ01 annotations: metrics.alpha.kubernetes.io/customendpoints: '[{"api":"","path":"","port":"","names":""}]' pod.alpha.kubernetes.io/initialized: 'true' spec: containers: name: container0 image: 'nginx:1.12alpineperl' env: name: PAASAPPNAME value: deployevssatain name: PAASNAMESPACE value: default name: PAASPROJECTID value: a2cd8e998dca42e98a41f596c636dbda resources: {} volumeMounts: name: bssatamountoptionpvc mountPath: /tmp terminationMessagePath: /dev/terminationlog terminationMessagePolicy: File imagePullPolicy: IfNotPresent restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst securityContext: {} imagePullSecrets: name: defaultsecret affinity: {} schedulerName: defaultscheduler volumeClaimTemplates: metadata: name: bssatamountoptionpvc annotations: volume.beta.kubernetes.io/storageclass: sata volume.beta.kubernetes.io/storageprovisioner: flexvolumectyun.com/fuxivol spec: accessModes: ReadWriteMany resources: requests: storage: 10Gi serviceName: wwww podManagementPolicy: OrderedReady updateStrategy: type: RollingUpdate revisionHistoryLimit: 10 表 关键参数说明 前置路径 参数 描述 metadata name 创建的工作负载名称。 spec.template.spec.containers image 工作负载的镜像。 spec.template.spec.containers.volumeMount mountPath 容器内挂载路径,示例中挂载到“/tmp”路径。 spec serviceName 工作负载对应的服务,服务创建过程请参见6.3 创建有状态负载(StatefulSet)。 “spec.template.spec.containers.volumeMounts.name ”和 “spec.volumeClaimTemplates.metadata.name”有映射关系,必须保持一致。 步骤 2 执行如下命令创建Pod。 kubectl create f evspodexample.yaml 创建完成后,登录CCE控制台,在左侧导航栏中选择“存储管理 > 云硬盘存储卷”。单击PVC名称,在PVC详情页面可查看云硬盘和PVC的绑定关系。