Quero adicionar novas sub-redes ao ambiente de gerenciamento do cluster do Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrição
Se você adicionar sub-redes a novas zonas de disponibilidade ou remover sub-redes das zonas de disponibilidade existentes, poderá receber uma mensagem de erro semelhante à seguinte:
“An error occurred (InvalidParameterException) when calling the UpdateClusterConfig operation: Provided subnets belong to the AZs “us-west-2a,us-west-2c,us-west-2d”. But they should belong to the exact set of AZs “us-west-2a,us-west-2c” in which subnets were provided during cluster creation.”
Suas sub-redes devem estar no mesmo conjunto de zonas de disponibilidade que a AWS escolheu para você quando você criou o cluster. As sub-redes também devem estar na mesma Amazon Virtual Private Cloud (Amazon VPC) que a AWS forneceu quando você criou o cluster. A VPC deve ter endereços IP disponíveis em quantidade suficiente para o cluster. Para obter mais informações, consulte Criar uma sub-rede e requisitos e considerações sobre VPC.
Resolução
Para modificar sub-redes de cluster do Amazon EKS, é possível usar o console do Amazon EKS, a AWS CLI ou a eksctl CLI.
Use o console do Amazon EKS
Conclua as seguintes etapas:
- Abra o console do Amazon EKS.
- No painel de navegação, escolha Cluster.
- Selecione Rede e, em seguida, escolha Gerenciar recursos de VPC.
- No menu Sub-redes, selecione as sub-redes a serem adicionadas.
- Selecione Salvar.
- Na seção Rede, confirme se as sub-redes foram adicionadas.
Use a AWS CLI
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
O comando da AWS CLI substitui as sub-redes de cluster existentes pelas sub-redes que você inclui no comando. Para adicionar sub-redes, especifique as sub-redes existentes e as sub-redes adicionais.
-
Execute o comando describe-subnets para identificar as zonas de disponibilidade que você configurou para seu cluster EKS:
aws ec2 describe-subnets --subnet-ids $(aws eks describe-cluster --name your-cluster-name --query 'cluster.resourcesVpcConfig.subnetIds' --output text) --query 'Subnets[*].AvailabilityZone'
Observação: substitua your-cluster-name pelo nome do seu cluster e os exemplos de IDs de sub-rede por seus IDs de sub-rede.
Exemplo de saída:
[
"us-west-2c",
"us-west-2d",
"us-west-2a"
]
-
Execute o comando update-cluster-config para atualizar as sub-redes ambiente de gerenciamento do cluster:
aws eks update-cluster-config --name your-cluster-name \
--resources-vpc-config subnetIds=subnet-1234,subnet-5678,subnet-9101
Observação: substitua your-cluster-name pelo nome do cluster e os exemplos de IDs de sub-rede por seus IDs de sub-rede. Ao adicionar novas sub-redes, certifique-se de representar cada zona de disponibilidade do conjunto original por pelo menos uma sub-rede. Para manter uma sub-rede existente em uma zona de disponibilidade, inclua a sub-rede no comando.
O exemplo a seguir obtém as zonas de disponibilidade atuais do cluster EKS e adiciona novas sub-redes às zonas existentes. O comando update-cluster-config inclui as sub-redes originais e novas para manter a configuração da zona de disponibilidade do cluster e expandir as sub-redes em cada zona:
aws eks describe-cluster --name gpusharing-demo --query 'cluster.resourcesVpcConfig.subnetIds'
[
"subnet-03d59dfc8d9380b4c",
"subnet-0c4f51f27d109fa32",
"subnet-037b42db1a08da5ae"
]
aws eks update-cluster-config --name gpusharing-demo --resources-vpc-config subnetIds=subnet-xxxxxxx80b4c,subnet-xxxxxxx8da5ae,subnet-xxxxxxx9fa32,subnet-xxxxxxee3bb,subnet-xxxxxxa761ac,subnet-xxxxxxde8b8
{
"update": {
"id": "e7ed1fbf-01ab-3472-8204-149cdc3337be",
"status": "InProgress",
"type": "VpcConfigUpdate",
"params": [
{
"type": "Subnets",
"value": "[subnet-xxxxxxx80b4c, subnet-xxxxxxx8da5ae, subnet-xxxxxxxx9fa32, subnet-xxxxxxxee3bb, subnet-xxxxxxxxa761ac, subnet-xxxxxxde8b8]"
}
],
"createdAt": "2024-09-09T18:06:16.493000+00:00",
"errors": []
}
}
Use a CLI eksctl
O comando eksctl CLI substitui as sub-redes de cluster existentes pelas sub-redes que você inclui no comando. Para adicionar sub-redes, especifique as sub-redes existentes e as sub-redes adicionais.
Execute o seguinte comando eksctl para atualizar as sub-redes do ambiente de gerenciamento do cluster:
eksctl utils update-cluster-vpc-config --cluster=your-cluster-name \
--control-plane-subnet-ids=subnet-1234,subnet-5678 --approve
O exemplo de saída a seguir mostra que o cluster foi atualizado para uma sub-rede para cada zona de disponibilidade:
eksctl utils update-cluster-vpc-config --cluster=gpusharing-demo --control-plane-subnet-ids=subnet-03d59dfc8d9380b4c,subnet-0c4f51f27d109fa32,subnet-037b42db1a08da5ae --approve
2024-09-09 18:23:54 [ℹ] using region us-west-2
2024-09-09 18:23:54 [ℹ] will update control plane subnet IDs for cluster "gpusharing-demo" in "us-west-2" to: [subnet-xxxxxxx80b4c subnet-xxxxxxx9fa32 subnet-xxxxxx8da5ae]
2024-09-09 18:32:07 [✔] control plane subnets and security groups for cluster "gpusharing-demo" in "us-west-2" have been updated to: controlPlaneSubnetIDs=[subnet-xxxxxxx80b4c subnet-xxxxxxxx9fa32 subnet-xxxxxxxx8da5ae], controlPlaneSecurityGroupIDs=[sg-xxxxx31d2]
Para usar o arquivo config.yaml para atualizar sub-redes, execute o seguinte comando:
eksctl utils update-cluster-vpc-config -f config.yaml
Exemplo de saída:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: cluster
region: us-west-2
vpc:
controlPlaneSubnetIDs: [subnet-1234, subnet-5678, subnet-9101]
controlPlaneSecurityGroupIDs: [sg-1234, sg-5678]
Informações relacionadas:
Flexibilidade aprimorada da VPC: modifique sub-redes e grupos de segurança no Amazon EKS
Atualizando sub-redes e grupos de segurança do ambiente de gerenciamento no site do eksctl