(kubectl) Criação de uma Implementação montada com um volume do OBS
Cenário
Depois que um volume do OBS é criado ou importado para o CCE, você pode montá-lo para uma carga de trabalho.
Observações e restrições
O exemplo de configuração a seguir se aplica a clusters do Kubernetes 1.13 ou anterior.
Procedimento
- Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
- Execute os comandos a seguir para configurar o arquivo obs-deployment-example.yaml, que é usado para criar um pod.
touch obs-deployment-example.yaml
vi obs-deployment-example.yaml
Exemplo de montar um volume do OBS para uma Implementação (volume compartilhado, baseada em PVC):apiVersion: apps/v1 kind: Deployment metadata: name: obs-deployment-example # Workload name 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 # Mount path name: pvc-obs-example restartPolicy: Always imagePullSecrets: - name: default-secret volumes: - name: pvc-obs-example persistentVolumeClaim: claimName: pvc-obs-auto-example # PVC name
Tabela 1 Parâmetros principais Parâmetro
Descrição
name
Nome do pod a ser criado.
app
Nome da aplicação em execução no pod.
mountPath
Caminho de montagem no contêiner.
spec.template.spec.containers.volumeMounts.name e spec.template.spec.volumes.name devem ser consistentes porque eles têm uma relação de mapeamento.
Exemplo de montar um volume do OBS para um StatefulSet (volume dedicado, baseado em modelo de PVC):
Exemplo de 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
Tabela 2 Parâmetros principais Parâmetro
Descrição
name
Nome da carga de trabalho criada.
image
Imagem da carga de trabalho.
mountPath
Caminho de montagem no contêiner. Neste exemplo, o volume é montado no diretório /tmp.
serviceName
Serviço correspondente à carga de trabalho. Para obter detalhes sobre como criar um Serviço, consulte Criação de um StatefulSet.
spec.template.spec.containers.volumeMounts.name e spec.volumeClaimTemplates.metadata.name devem ser consistentes porque têm uma relação de mapeamento.
- Execute o seguinte comando para criar o pod:
kubectl create -f obs-deployment-example.yaml
Após a conclusão da criação, escolha Storage > OBS no console do CCE e clique no nome da PVC. Na página de detalhes da PVC, você pode ver a relação de vinculação entre o serviço OBS e a PVC.