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