Subnet customizada para Pods no cluster AWS EKS

Em ambientes produtivos de grande escala cada minuto do ambiente paralisado pode gerar grandes prejuízos as corporações. Podemos passar por situações onde utilizamos todos os ip´s da subnet, com isso falta IP para subir novos Nodes e/ou Pods no ambiente.

Problema

Após a analise no cluster, notamos que vários Worker Nodes e Pods não conseguiam alocar IP´s para eles, analisando o Auto-scaling identificamos que algumas instancias também não estavam conseguindo alocar ips para elas.

Quando analisamos as subnets identificamos que os ips delas acabaram.

Solução

Para resolver o problema vamos utilizar o Add-on VPC-CNI, para isso temos que garantir que o Add-on esteja na ultima versão.

Utilize o comando abaixo para obter a versão mais atualizada ou atualize a versão caso necessário: 

kubectl describe daemonset aws-node –namespace kube-system | grep Image | cut -d “/” -f 2

Para mais informações clique aqui.

Alocar os Pods em outra subnet liberando assim IP´s para os Worker Nodes e segregando o ambiente de rede. Subnets diferentes para Pods e Worker Nodes.

Para isso criamos os arquivos abaixo, um para para subnet em sua AZ.

cat <<EOF  | kubectl apply -f –
apiVersion: crd.k8s.amazonaws.com/v1alpha1
kind: ENIConfig
metadata:
 name: us-east-2a
spec:
  securityGroups:
    – sg-xxxxxxxxxxxx
  subnet: subnet-XXXXXXXX
EOF

cat <<EOF | kubectl apply -f –
apiVersion: crd.k8s.amazonaws.com/v1alpha1
kind: ENIConfig
metadata:
 name: us-east-2b
spec:
  securityGroups:
    – sg-xxxxxxxxxxxx
  subnet: subnet-YYYYYYYYY
EOF

Aplicamos dois parâmetros no Add-On VPC-CPI (AWS-NODE) com com os comandos abaixo:

kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true

Habilitar o Add-On VPC-CPI (AWS-NODE) use outras subnets para alocar ips.

kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=topology.kubernetes.io/zone

Habilitar um Label na AZ correspondente.

Para garantir que tudo inicie nas suas determinadas subnets, reinicie todo o ambiente.

Conclusão

Agora podemos colocar os pods em outras subnets e Security Group, podendo assim segregar as subnets do ControlPlane e Pods, ou, colocar em uma subnet que tem mais ip´s livres.

Quer ficar por dentro de mais artigos Tech’s como esse?

Acompanhe nosso Blog!

Referência

https://repost.aws/knowledge-center/eks-custom-subnet-for-pod