使用kubectl部署带对象存储卷的无状态工作负载
操作场景
对象存储卷创建或导入CCE后,可以在工作负载中挂载对象存储卷。
约束与限制
如下配置示例适用于Kubernetes 1.13及以下版本的集群。
操作步骤
- 请参见通过kubectl连接集群,使用kubectl连接集群。
- 执行如下命令,配置名为“obs-deployment-example.yaml”的创建Pod的yaml文件。
touch obs-deployment-example.yaml
vi obs-deployment-example.yaml
在无状态工作负载中基于pvc共享式使用对象存储示例:apiVersion: apps/v1 kind: Deployment metadata: name: obs-deployment-example # 工作负载名称 namespace: default spec: replicas: 1 selector: matchLabels: app: obs-deployment-example template: metadata: labels: app: obs-deployment-example spec: containers: - image: nginx name: container-0 volumeMounts: - mountPath: /tmp # 挂载路径 name: pvc-obs-example restartPolicy: Always imagePullSecrets: - name: default-secret volumes: - name: pvc-obs-example persistentVolumeClaim: claimName: pvc-obs-auto-example # PVC名称
表1 关键参数说明 参数
描述
name
创建的Pod名称。
app
Pod工作负载名称。
mountPath
容器内挂载路径。
“spec.template.spec.containers.volumeMounts.name”和 “spec.template.spec.volumes.name”有映射关系,必须保持一致。
在有状态工作负载中基于PVCTemplate独占式使用对象存储。
yaml示例如下:apiVersion: apps/v1 kind: StatefulSet metadata: name: deploy-obs-standard-in namespace: default generation: 1 labels: appgroup: '' spec: replicas: 1 selector: matchLabels: app: deploy-obs-standard-in template: metadata: labels: app: deploy-obs-standard-in annotations: metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' pod.alpha.kubernetes.io/initialized: 'true' spec: containers: - name: container-0 image: 'nginx:1.12-alpine-perl' env: - name: PAAS_APP_NAME value: deploy-obs-standard-in - name: PAAS_NAMESPACE value: default - name: PAAS_PROJECT_ID value: a2cd8e998dca42e98a41f596c636dbda resources: {} volumeMounts: - name: obs-bs-standard-mountoptionpvc mountPath: /tmp terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: IfNotPresent restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst securityContext: {} imagePullSecrets: - name: default-secret affinity: {} schedulerName: default-scheduler volumeClaimTemplates: - metadata: name: obs-bs-standard-mountoptionpvc annotations: volume.beta.kubernetes.io/storage-class: obs-standard volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi serviceName: wwww podManagementPolicy: OrderedReady updateStrategy: type: RollingUpdate revisionHistoryLimit: 10
表2 关键参数说明 参数
描述
name
创建的工作负载名称。
image
工作负载的镜像。
mountPath
容器内挂载路径,示例中挂载到“/tmp”路径。
serviceName
工作负载对应的服务,服务创建过程请参见创建有状态负载(StatefulSet)。
“spec.template.spec.containers.volumeMounts.name ”和 “spec.volumeClaimTemplates.metadata.name”有映射关系,必须保持一致。
- 执行如下命令创建Pod。
kubectl create -f obs-deployment-example.yaml
创建完成后,在CCE界面“存储管理 > 对象存储卷”中单击PVC名称,在PVC详情页面可查看对象存储服务和PVC的绑定关系。