Use anotações de pod para associar um endereço IP elástico (EIP) a um pod em um cluster do Alibaba Cloud Container Service for Kubernetes (ACS). Isso concede ao pod um IP público próprio, independente do gateway NAT compartilhado pelo cluster. Permita que o ACS crie e associe automaticamente um EIP ou associe uma instância de EIP existente por ID.
Pré-requisitos
Antes de começar, verifique se você:
Instalou o componente ack-extend-network-controller
Associar um EIP a um pod
Há duas abordagens disponíveis: permitir que o ACS crie e associe automaticamente um EIP ou especifique uma instância de EIP existente por ID. Use a abordagem automática na maioria dos casos. Reserve a abordagem de instância estática para StatefulSets que exigem um IP público persistente e estável.
Crie automaticamente um EIP
Adicione a anotação network.alibabacloud.com/pod-with-eip: "true" à especificação do pod. O ACS cria um EIP e o associa ao pod durante a inicialização.
A alocação automática de EIP pode resultar na criação e liberação repetidas de endereços. Isso ocorre, por exemplo, quando um pod é recriado ou quando o componente da Interface de Rede de Contêiner (CNI) falha ao configure a rede. Para evitar esse problema, especifique uma instância de EIP por ID.
O YAML a seguir apresenta todas as anotações compatíveis com a criação automática de EIP. Cada anotação está marcada como obrigatória ou opcional.
apiVersion: v1
kind: Pod
metadata:
annotations:
network.alibabacloud.com/pod-with-eip: "true" # Required. Enables automatic EIP creation and attachment.
network.alibabacloud.com/eip-bandwidth: "5" # Optional. Maximum bandwidth in Mbit/s.
network.alibabacloud.com/eip-internet-charge-type: "PayByTraffic" # Optional. Metering method: PayByTraffic (default) or PayByBandwidth.
network.alibabacloud.com/eip-instance-charge-type: "PostPaid" # Optional. Billing method: PostPaid (pay-as-you-go) or PrePaid (subscription).
network.alibabacloud.com/eip-isp: "BGP" # Optional. Line type: BGP (Multi-ISP) or BGP_PRO (BGP Multi-ISP Pro).
network.alibabacloud.com/eip-common-bandwidth-package-id: "<package-id>" # Optional. Internet Shared Bandwidth instance ID.
network.alibabacloud.com/eip-public-ip-address-pool-id: "<pool-id>" # Optional. IP address pool ID.
network.alibabacloud.com/eip-resource-group-id: "<resource-group-id>" # Optional. Resource group for the EIP.
network.alibabacloud.com/eip-name: "<eip-name>" # Optional. Display name for the EIP.
network.alibabacloud.com/eip-description: "<description>" # Optional. Description for the EIP.
network.alibabacloud.com/eip-security-protection-types: "<level1>,<level2>"# Optional. Security protection levels, comma-separated.
A tabela a seguir descreve cada anotação em detalhes.
|
Anotação |
Descrição |
|
|
Define se o sistema deve criar e associar automaticamente um EIP. Defina como |
|
|
Largura de banda máxima do EIP. Unidade: Mbit/s. |
|
|
Método de medição. |
|
|
Compatível com versões anteriores. |
|
|
Método de faturamento. |
|
|
Tipo de linha. |
|
|
ID da instância de Internet Shared Bandwidth a ser usada. |
|
|
Pool de endereços IP. Consulte Crie e gerencie um pool de endereços IP. |
|
|
Grupo de recursos do EIP. Consulte Solicitar EIPs. |
|
|
Nome de exibição do EIP. Consulte Solicitar EIPs. |
|
|
Descrição do EIP. Consulte Solicitar EIPs. |
|
|
Nível de proteção de segurança do EIP. Separe vários níveis com vírgula ( |
Especifique uma instância de EIP
Associe um EIP existente a um pod especificando o ID da instância. O controlador de EIP associa o endereço sem modificar a configuração da instância.
Esta abordagem não se aplica a controladores com múltiplas réplicas. Use-a apenas com StatefulSet para aplicações com estado.
Associe cada instância de EIP a apenas um pod por vez. Após a saída do pod, o controlador de EIP desassocia o endereço. Durante esse período, outros pods não podem usar o EIP. Para verifique se um pod e seu EIP foram desassociados, confirme que não existe mais um recurso de EIP de pod com o mesmo nome do pod.
apiVersion: v1
kind: Pod
metadata:
annotations:
network.alibabacloud.com/pod-eip-instanceid: "eip-bp14qxxxxxxx" # Required. The ID of the EIP to attach.
|
Anotação |
Descrição |
|
|
ID do EIP a ser associado, por exemplo, |
|
|
Compatível com Elastic Container Instance. |
Configure a política de liberação de EIP
Use a anotação network.alibabacloud.com/pod-eip-release-strategy para controlar o destino do EIP quando o pod for excluído.
Este recurso aplica-se exclusivamente a StatefulSets para aplicações com estado. Não é compatível com Deployments para aplicações sem estado.
Se você associar um EIP por ID de instância, o controlador nunca liberará esse EIP.
Escolha uma estratégia de liberação com base na necessidade da aplicação de reutilizar o mesmo IP público após a reinicialização do pod:
|
Estratégia |
Comportamento |
Quando usar |
|
|
O EIP é liberado quando o pod é excluído. |
Cargas de trabalho StatefulSet em que a reutilização de IP não é necessária. |
|
|
O EIP nunca é liberado automaticamente. Exclua-o manualmente quando não for mais necessário. |
Quando for necessário preservar o EIP para reatribuição futura. |
|
Duração (ex.: |
O EIP é retido pela duração especificada após a exclusão do pod e depois liberado. Um pod com o mesmo nome criado dentro dessa janela reutiliza o mesmo EIP. |
Aplicações com estado que exigem um IP público estável entre reinicializações de pod, usadas com alocação automática de EIP. |
O valor de duração usa o formato de duração do Go. Por exemplo, 5m30s significa que o EIP será liberado 5 minutos e 30 segundos após a exclusão do pod.
apiVersion: v1
kind: Pod
metadata:
annotations:
network.alibabacloud.com/pod-with-eip: "true"
network.alibabacloud.com/pod-eip-release-strategy: "5m30s" # Retain the EIP for 5m30s after the pod is deleted.
|
Anotação |
Descrição |
|
|
Política de liberação de EIP. |