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

Configuração de um EIP estático para um pod

Cenários

No Cloud Native Network 2.0, é possível atribuir endereços IP públicos (EIPs) estáticos a pods ou StatefulSets criados diretamente.

Restrições

  • Para usar um EIP estático ou um EIP alocado automaticamente, envie um tíquete de serviço para solicitar a permissão para criar e excluir APIs do EIP v3.
  • Você pode configurar um EIP estático para um pod somente em clusters do CCE Turbo das seguintes versões:
    • v1.19: v1.19.16-r20 ou mais recente
    • v1.21: v1.21.10-r0 ou mais recente
    • v1.23: v1.23.8-r0 ou mais recente
    • v1.25: v1.25.3-r0 ou mais recente
    • v1.25 ou mais recente
  • A função de EIP estática deve ser ativada juntamente com a função de alocar automaticamente um EIP para um pod. Para mais detalhes, consulte Configuração de um EIP para um pod.
  • Somente pods de StatefulSet ou pods criados diretamente podem ser vinculados a EIPs estáticos. Implementações, DaemonSets e outros tipos de cargas de trabalho não podem ser vinculados a EIPs estáticos.
  • Depois que um EIP estático é alocado, os atributos do EIP não podem ser modificados pelo pod dentro do ciclo de vida do EIP (antes que o EIP expire ou ainda esteja sendo usado pelo pod).
  • Não configure um EIP estático para serviços que não têm requisitos específicos em EIPs de pod. Caso contrário, a reconstrução do pod leva mais tempo.

Configuração de um EIP estático para um pod

Ao criar um pod para ser vinculado a um endereço IP estático, configure a anotação de EIP. Em seguida, um EIP será automaticamente alocado e vinculado ao pod.

O seguinte usa um StatefulSet chamado nginx como um exemplo. Para obter detalhes sobre anotações, consulte Tabela 1.

  • Para um EIP alocado automaticamente com uma largura de banda dedicada ao criar um StatefulSet, não é necessário especificar o ID da largura de banda. O seguinte mostra um exemplo:
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx
    spec:
      serviceName: nginx
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            yangtse.io/static-eip: 'true'   # Static EIP bound to the pod
            yangtse.io/static-eip-expire-no-cascading: 'false'   # Deleting the EIP with the associated workload
            yangtse.io/static-eip-expire-duration: 5m   # Interval for reclaiming expired EIPs
            yangtse.io/pod-with-eip: 'true'   # An EIP will be automatically allocated when the pod is created.
            yangtse.io/eip-bandwidth-size: '5'    # EIP bandwidth
            yangtse.io/eip-network-type: 5_bgp    # EIP type
            yangtse.io/eip-charge-mode: bandwidth    # EIP billing mode
            yangtse.io/eip-ip-version: '4'     # EIP version, for example, IPv4
        spec:
          containers:
            - name: container-0
              image: nginx:alpine
              resources:
                limits:
                  cpu: 100m
                  memory: 200Mi
                requests:
                  cpu: 100m
                  memory: 200Mi
          imagePullSecrets:
            - name: default-secret
  • Para um EIP alocado automaticamente com uma largura de banda compartilhada ao criar um StatefulSet, é necessário especificar o ID da largura de banda. O seguinte mostra um exemplo:
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx
    spec:
      serviceName: nginx
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            yangtse.io/static-eip: 'true'   # Static EIP bound to the pod
            yangtse.io/pod-with-eip: 'true'   # An EIP will be automatically allocated when the pod is created.
            yangtse.io/eip-network-type: 5_bgp    # EIP type
            yangtse.io/eip-bandwidth-id: <eip_bandwidth_id>    # Shared bandwidth ID of the EIP
        spec:
          containers:
            - name: container-0
              image: nginx:alpine
              resources:
                limits:
                  cpu: 100m
                  memory: 200Mi
                requests:
                  cpu: 100m
                  memory: 200Mi
          imagePullSecrets:
            - name: default-secret
Tabela 1 Anotações do EIP estático do pod

Anotação

Obrigatório

Valor padrão

Descrição

Intervalo de valor

yangtse.io/static-eip

Sim

false

Especifica se o EIP estático de um pod deve ser ativado. Esta função é suportada apenas para pods de StatefulSet ou pods sem ownerReferences. Esta função está desativada por padrão.

false ou true

yangtse.io/static-eip-expire-duration

Não

5m

Especifica o intervalo para recuperar o EIP estático expirado após a exclusão do pod com um EIP estático.

O formato de tempo é Go time type, por exemplo, 1h30m e 5m. Para obter detalhes, consulte Go time type.

yangtse.io/static-eip-expire-no-cascading

Não

false

Especifica se deve desativar a recuperação em cascata de cargas de trabalho do StatefulSet.

O valor padrão é false, indicando que o EIP estático correspondente será excluído com a carga de trabalho de StatefulSet. Se quiser manter o EIP estático de um novo StatefulSet com o mesmo nome durante o intervalo para recuperar o EIP expirado, defina o valor como true.

false ou true

Tabela 2 Anotações para alocação de um EIP com um pod

Anotação

Obrigatório

Valor padrão

Descrição

Value Range

yangtse.io/pod-with-eip

Sim

false

Se alocar um EIP com um pod e vincular o EIP ao pod

false ou true

yangtse.io/eip-bandwidth-size

Não

5

Largura de banda, em Mbit/s

1 Mbit/s a 2000 Mbit/s por padrão

O intervalo específico varia de acordo com as regiões. Para obter detalhes, consulte o console do EIP.

yangtse.io/eip-network-type

Não

5_bgp

Tipo de EIP

  • 5_bgp
  • 5_union
  • 5_sbgp

    O tipo específico varia de acordo com as regiões. Para obter detalhes, consulte o console do EIP.

yangtse.io/eip-charge-mode

Obrigatório quando é utilizada uma largura de banda dedicada

Nenhum

Faturado por tráfego ou largura de banda

Se uma largura de banda compartilhada for usada, esse parâmetro poderá ser deixado em branco.

  • bandwidth: cobrado pela largura de banda
  • traffic: cobrado pelo tráfego

yangtse.io/eip-bandwidth-id

Obrigatório quando uma largura de banda compartilhada é usada

Nenhum

ID de uma largura de banda existente

Se você especificar esse parâmetro, só poderá configurar um tipo do EIP, que é opcional.

Se uma largura de banda dedicada for usada, esse parâmetro poderá ser deixado em branco.

Nenhuma

yangtse.io/eip-bandwidth-name

Não

Nome do pod

Nome da largura de banda

  • Insira de 1 a 64 caracteres. Apenas letras, dígitos, hifens (-), sublinhados (_) e pontos (.) são permitidos.
  • Comprimento mínimo: 1 caractere
  • Comprimento máximo: 64 caracteres

Excluir um EIP estático

Depois que um pod for excluído, se outro pod com o mesmo nome for criado antes que o EIP estático expire, o EIP ainda poderá ser usado. O EIP estático é excluído somente se não houver um novo pod com o nome do pod excluído antes que o EIP expire ou se a função de excluir o EIP com o StatefulSet associado estiver ativada e o StatefulSet for excluído.