Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

(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

  1. Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
  2. 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.

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