Configuração de um endereço IP estático para um pod
Cenários
No Cloud Native Network 2.0, cada pod é associado a uma ENI, fornecendo um endereço IP estático aos pods do StatefulSet (ENI de contêiner). Essa é uma prática comum no controle de acesso, registro de serviços, descoberta de serviços e auditoria de registros de endereços IP estáticos.
Por exemplo, se um serviço StatefulSet precisa controlar o acesso de um banco de dados em nuvem, você pode corrigir o endereço IP do pod do serviço e configurar o grupo de segurança do banco de dados em nuvem para permitir que apenas o endereço IP do serviço acesse o banco de dados.
Restrições
- Você pode configurar um endereço IP estático para um pod somente em clusters do CCE Turbo das seguintes versões:
- v1.23: v1.23.7-r0 ou mais recente
- v1.25: v1.25.3-r0 ou mais recente
- v1.25 ou mais recente
- Atualmente, apenas pods de StatefulSet ou pods sem ownerReferences podem ser configuradas com endereços IP estáticos. As Implementações, os DaemonSets e outros tipos de cargas de trabalho não podem ser configurados com endereços IP estáticos. Além disso, pods com HostNetwork não podem ser configurados com endereços IP estáticos.
- Não configure endereços IP estáticos para serviços que não tenham requisitos específicos para endereços IP de pod. Caso contrário, a reconstrução do pod leva mais tempo e o uso do endereço IP diminui.
- As anotações do endereço IP estático do objeto pod não podem ser modificadas diretamente. Caso contrário, a modificação não terá efeito em segundo plano. Para modificar as anotações, modifique a configuração de annotations no campo spec.template da carga de trabalho de StatefulSet correspondente.
- Se não houver ENIs no nó em que o pod com um endereço IP estático é reconstruído e agendado (as ENIs pré-vinculadas também ocupam a cota de ENIs), as ENIs de endereço IP estático antecipam os ENIs pré-vinculadas. Neste caso, a pod começa um pouco lentamente. Se um nó usar um endereço IP estático, configure adequadamente a política de pré-vinculação dinâmica para o nó para garantir que nem todas as ENIs sejam pré-vinculadas.
Usar o kubectl
Você pode adicionar anotações a um StatefulSet para ativar ou desativar a função de endereço IP estático do pod.
apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx spec: serviceName: nginx replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: pod.alpha.kubernetes.io/initialized: 'true' yangtse.io/static-ip: 'true' yangtse.io/static-ip-expire-no-cascading: 'false' yangtse.io/static-ip-expire-duration: 5m 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 |
Valor padrão |
Descrição |
Intervalo de valor |
---|---|---|---|
yangtse.io/static-ip |
false |
Especifica se o endereço IP 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-ip-expire-duration |
5m |
Especifica o intervalo para recuperar a ENI expirada do endereço IP estático depois que o pod com um endereço IP estático for excluído. |
O formato de tempo é Go time type, por exemplo, 1h30m e 5m. Para obter detalhes, consulte Go time type. |
yangtse.io/static-ip-expire-no-cascading |
false |
Especifica se deve desativar a recuperação em cascata de cargas de trabalho do StatefulSet. O valor padrão é false, indicando que o endereço IP estático da ENI correspondente será excluído com a carga de trabalho StatefulSet. Se quiser manter o endereço IP estático de um novo StatefulSet com o mesmo nome durante o intervalo para recuperar a ENI expirada, defina o valor como true. |
false ou true |