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.
Central de ajuda/ Cloud Container Engine/ Perguntas frequentes/ Armazenamento/ Como alcançar a compatibilidade entre o ExtendPathMode e o client-go de Kubernetes?
Atualizado em 2025-05-23 GMT+08:00

Como alcançar a compatibilidade entre o ExtendPathMode e o client-go de Kubernetes?

Cenário

A estrutura do pod do Kubernetes não contém ExtendPathMode. Portanto, quando um usuário chama a API para criar um pod ou implementação usando client-go, o pod criado não contém ExtendPathMode. O CCE fornece uma solução para garantir a compatibilidade com o client-go do Kubernetes.

Solução

  • Ao criar um pod, você precisa adicionar kubernetes.io/extend-path-mode à annotation do pod.
  • Ao criar uma implantação, você precisa adicionar kubernetes.io/extend-path-mode a kubernetes.io/extend-path-mode no modelo.

O seguinte é um exemplo de YAML de criação de um pod. Depois que a palavra-chave kubernetes.io/extend-path-mode for adicionada à annotation, os campos containername, name e mountpath serão correspondentes e o extendpathmode correspondente será adicionado ao volumeMount.

apiVersion: v1
kind: Pod
metadata:
  name: test-8b59d5884-96vdz
  generateName: test-8b59d5884-
  namespace: default
  selfLink: /api/v1/namespaces/default/pods/test-8b59d5884-96vdz
  labels:
    app: test
    pod-template-hash: 8b59d5884
  annotations:
    kubernetes.io/extend-path-mode: '[{"containername":"container-0","name":"vol-156738843032165499","mountpath":"/tmp","extendpathmode":"PodUID"}]'
    metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]'
  ownerReferences:
    - apiVersion: apps/v1
      kind: ReplicaSet
      name: test-8b59d5884
      uid: 2633020b-cd23-11e9-8f83-fa163e592534
      controller: true
      blockOwnerDeletion: true
spec:
  volumes:
    - name: vol-156738843032165499
      hostPath:
        path: /tmp
        type: ''
    - name: default-token-4s959
      secret:
        secretName: default-token-4s959
        defaultMode: 420
  containers:
    - name: container-0
      image: 'nginx:latest'
      env:
        - name: PAAS_APP_NAME
          value: test
        - name: PAAS_NAMESPACE
          value: default
        - name: PAAS_PROJECT_ID
          value: b6315dd3d0ff4be5b31a963256794989
      resources:
        limits:
          cpu: 250m
          memory: 512Mi
        requests:
          cpu: 250m
          memory: 512Mi
      volumeMounts:
        - name: vol-156738843032165499
          mountPath: /tmp
          extendPathMode: PodUID
        - name: default-token-4s959
          readOnly: true
          mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      imagePullPolicy: Always
  restartPolicy: Always
  terminationGracePeriodSeconds: 30
  dnsPolicy: ClusterFirst
  serviceAccountName: default
  serviceAccount: default
  nodeName: 192.168.0.24
  securityContext: {}
  imagePullSecrets:
    - name: default-secret
    - name: default-secret
  affinity: {}
  schedulerName: default-scheduler
  tolerations:
    - key: node.kubernetes.io/not-ready
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 300
    - key: node.kubernetes.io/unreachable
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 300
  priority: 0
  dnsConfig:
    options:
      - name: timeout
        value: ''
      - name: ndots
        value: '5'
      - name: single-request-reopen
  enableServiceLinks: true
Tabela 1 Descrições de parâmetros-chave

Parâmetro

Tipo

Descrição

containername

String

Nome de um contêiner.

name

String

Nome de um volume.

mountpath

String

Caminho de montagem.

extendpathmode

String

Um diretório de terceiro nível é adicionado ao diretório/subdiretório de volume criado para facilitar a obtenção de um único arquivo de saída de pod.

Os seguintes cinco tipos são suportados. Para obter detalhes, consulte Logs de contêiner.

  • None: o caminho estendido não está configurado.
  • PodUID: ID de um pod.
  • PodName: nome de um pod.
  • PodUID/ContainerName: ID de um pod ou nome de um contêiner.
  • PodName/ContainerName: nome de um pod ou contêiner.