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 para um pod

Cenários

No Cloud Native Network 2.0, os pods usam ENIs da VPC ou sub-ENIs para rede. Você pode vincular diretamente EIPs a pods.

Para associar um EIP a um pod, basta definir o valor da anotação yangtse.io/pod-with-eip como true ao criar o pod. Em seguida, o EIP é automaticamente alocado e vinculado ao pod.

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 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
  • Para acessar um pod vinculado a um EIP da Internet, adicione regras de grupo de segurança para permitir o tráfego de solicitação de destino.
  • Apenas um EIP pode ser vinculado a um pod.
  • Configure a anotação relacionada ao EIP ao criar um pod. Depois que o pod é criado, as anotações relacionadas ao EIP não podem ser modificadas.
  • Não execute operações no EIP associado a um pod por meio do console ou da API do EIP. Caso contrário, o EIP pode funcionar mal. As operações incluem alterar o nome do EIP, excluir, desvincular ou vincular o EIP e alterar o modo de cobrança do EIP.
  • Depois que um EIP alocado automaticamente é excluído manualmente, a rede funciona mal. Neste caso, reconstrua o pod.

Alocar um EIP com um Pod

Ao criar um pod, defina a anotação pod-with-eip como true. Um EIP será automaticamente alocado e vinculado ao pod.

O seguinte usa uma implantação chamada 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 uma Implementação, não é necessário especificar o ID da largura de banda. O seguinte mostra um exemplo:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            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-bandwidth-name: <eip_bandwidth_name>  # EIP bandwidth name
        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 quando você cria uma Implementação, é necessário especificar o ID da largura de banda. O seguinte mostra um exemplo:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            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 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

Verificar se o EIP vinculado ao pod está disponível

Depois que um EIP é alocado a um pod, o controlador de rede de contêiner vincula o EIP ao pod e grava o resultado da alocação de volta na anotação yangtse.io/allocated-ipv4-eip do pod. O tempo de inicialização dos contêineres de serviço do pod pode ser anterior ao momento em que o resultado de alocação do EIP é gravado de volta.

Você pode configurar um contêiner init para o pod, associar a anotação yangtse.io/allocated-ipv4-eip ao contêiner init por meio de um volume downwardAPI e verificar se o EIP foi alocado no contêiner init. Você pode configurar o contêiner init da seguinte maneira:

apiVersion: v1
kind: Pod
metadata:
  name: example
  annotations:
    yangtse.io/pod-with-eip: "true"  
    yangtse.io/eip-bandwidth-size: "5" 
    yangtse.io/eip-network-type: 5_bgp
    yangtse.io/eip-charge-mode: bandwidth
    yangtse.io/eip-bandwidth-name: "xxx"
spec:
  initContainers:
  - name: init
    image: busybox:latest
    command: ['timeout', '60', 'sh', '-c', "until grep -E '[0-9]+' /etc/eipinfo/allocated-ipv4-eip; do echo waiting for allocated-ipv4-eip; sleep 2; done"]
    volumeMounts:
        - name: eipinfo
          mountPath: /etc/eipinfo
  volumes:
    - name: eipinfo
      downwardAPI:
        items:
          - path: "allocated-ipv4-eip"
            fieldRef:
              fieldPath: metadata.annotations['yangtse.io/allocated-ipv4-eip']
...

Excluir um EIP com um pod

Quando você excluir um pod, o EIP alocado automaticamente para o pod também será excluído.