Trabalhando com o complemento Amazon VPC CNI plugin for Kubernetes do Amazon EKS - Amazon EKS

Trabalhando com o complemento Amazon VPC CNI plugin for Kubernetes do Amazon EKS

O complemento Amazon VPC CNI plugin for Kubernetes é implantado em cada nó do Amazon EC2 em seu cluster do Amazon EKS. O complemento cria interfaces de rede elásticas e as anexa aos nós do Amazon EC2. O complemento também atribui um endereço IPv4 ou IPv6 privado da sua VPC a cada Pod e serviço.

Uma versão do complemento é implantada com cada nó do Fargate em seu cluster, mas você não a atualiza em nós do Fargate. Há outros plug-ins de CNI compatíveis disponíveis para uso em clusters do Amazon EKS, mas esse é o único plug-in de CNI compatível com o Amazon EKS.

A tabela a seguir lista a versão mais recente do complemento do Amazon EKS disponível para cada versão do Kubernetes.

Versão do Kubernetes 1.29 1.28 1.27 1.26 1.25 1.24 1.23
Tipo Amazon EKS de versão da CNI da VPC v1.18.0-eksbuild.1 v1.18.0-eksbuild.1 v1.18.0-eksbuild.1 v1.18.0-eksbuild.1 v1.18.0-eksbuild.1 v1.18.0-eksbuild.1 v1.18.0-eksbuild.1
Importante

Se você estiver gerenciando esse complemento automaticamente, as versões na tabela podem não ser as mesmas que as versões autogerenciadas disponíveis. Para obter mais informações sobre como atualizar o tipo autogerenciado desse complemento, consulte Atualização do complemento autogerenciado.

Pré-requisitos
Considerações
  • As versões são especificadas como major-version.minor-version.patch-version-eksbuild.build-number.

  • Verifique a compatibilidade de versão para cada atributo

    Alguns recursos de cada versão do Kubernetes do Amazon VPC CNI plugin for exigem determinadas versões do Kubernetes. Ao utilizar diferentes recursos do Amazon EKS, se uma versão específica do complemento for necessária, então ela será anotada na documentação de recursos. A menos que você tenha um motivo específico para executar uma versão anterior, recomendamos que execute a versão mais recente.

Criar o complemento do Amazon EKS

Crie o tipo do Amazon EKS do complemento.

  1. Veja qual versão do complemento está atualmente instalada no cluster.

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    Veja um exemplo de saída abaixo.

    v1.12.6-eksbuild.2
  2. Veja qual tipo de complemento está atualmente instalado no cluster. Dependendo da ferramenta com a qual você criou o cluster, talvez você não tenha o tipo de complemento do Amazon EKS instalado em seu cluster atualmente. Substitua my-cluster pelo nome do cluster.

    $ aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text

    Se um número de versão for retornado, você tem o tipo de complemento do Amazon EKS instalado no cluster, e não precisa completar as etapas restantes deste procedimento. Se um erro for retornado, você não tem o tipo de complemento do Amazon EKS instalado no cluster. Conclua as etapas restantes desse procedimento para instalá-lo.

  3. Salve a configuração do complemento instalado atualmente.

    kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
  4. Crie o complemento usando o AWS CLI. Se você quiser usar o AWS Management Console ou eksctl para criar o complemento, consulte Criar um complemento e especifique vpc-cni como o nome do complemento. Copie o conteúdo a seguir no seu dispositivo. Faça as seguintes modificações no comando, conforme necessário, e execute o comando modificado.

    • Substitua o my-cluster pelo nome do cluster.

    • Substitua v1.18.0-eksbuild.1 pela versão mais recente listada na tabela de versões mais recentes da versão do cluster.

    • Substitua 111122223333 pelo ID da sua conta e AmazonEKSVPCCNIRole pelo nome do perfil do IAM existente que você criou. A especificação de um perfil exige que você tenha um provedor OpenID Connect (OIDC) do IAM para o cluster. Para determinar se você já tem um ou se precisa criar um para o seu cluster, consulte Criar um provedor OIDC do IAM para o cluster.

    aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.18.0-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole

    Se você aplicou configurações personalizadas ao seu complemento atual que entrem em conflito com as configurações padrão do complemento Amazon EKS, a criação poderá falhar. Se a criação falhar, você receberá um erro que poderá ajudar a resolver o problema. Como alternativa, você pode adicionar --resolve-conflicts OVERWRITE ao comando anterior. Isso permite que o complemento substitua todas as configurações personalizadas existentes. Depois de criar o complemento, você pode atualizá-lo com suas configurações personalizadas.

  5. Confirme se a versão mais recente do complemento para a versão Kubernetes do seu cluster foi adicionada ao cluster. Substitua o my-cluster pelo nome do cluster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text

    Pode levar alguns segundos para que a criação do complemento seja concluída.

    Veja um exemplo de saída abaixo.

    v1.18.0-eksbuild.1
  6. Se você fez configurações personalizadas no complemento original, antes de criar o complemento Amazon EKS, use a configuração que você salvou em uma etapa anterior para atualizar o complemento Amazon EKS com as configurações personalizadas.

  7. (Opcional) Instale cni-metrics-helper em seu cluster. Ele extrai a interface de rede elástica e as informações de endereço IP, agrega-as em um nível de cluster e publica as métricas no Amazon CloudWatch. Para obter mais informações, consulte cni-metrics-helper no GitHub.

Atualizar o complemento do Amazon EKS

Atualize o tipo do Amazon EKS do complemento. Se você não adicionou o tipo Amazon EKS do complemento ao cluster, adicione-o ou consulte Atualização do complemento autogerenciado, em vez de concluir esse procedimento.

  1. Veja qual versão do complemento está atualmente instalada no cluster. Substitua my-cluster pelo nome do cluster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text

    Veja um exemplo de saída abaixo.

    v1.12.6-eksbuild.2

    Se a versão retornada for a mesma da versão do Kubernetes do cluster na tabela de versões mais recente, você já tem a versão mais recente instalada no cluster e não precisa concluir o restante desse procedimento. Se você receber um erro, em vez de um número de versão no resultado, você não tem o tipo Amazon EKS do complemento instalado no cluster. Você precisa criar o complemento antes de poder atualizá-lo com este procedimento.

  2. Salve a configuração do complemento instalado atualmente.

    kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
  3. Atualize o complemento usando a AWS CLI. Se você quiser usar o AWS Management Console ou eksctl para atualizar o complemento, consulte Atualizar um complemento. Copie o conteúdo a seguir no seu dispositivo. Faça as seguintes modificações no comando, conforme necessário, e execute o comando modificado.

    • Substitua o my-cluster pelo nome do cluster.

    • Substitua v1.18.0-eksbuild.1 pela versão mais recente listada na tabela de versões mais recentes da versão do cluster.

    • Substitua 111122223333 pelo ID da sua conta e AmazonEKSVPCCNIRole pelo nome do perfil do IAM existente que você criou. A especificação de um perfil exige que você tenha um provedor OpenID Connect (OIDC) do IAM para o cluster. Para determinar se você já tem um ou se precisa criar um para o seu cluster, consulte Criar um provedor OIDC do IAM para o cluster.

    • A opção PRESERVE de --resolve-conflicts mantém os valores de configuração existentes para o complemento. Se você definiu valores personalizados para as configurações do complemento e não usar essa opção, o Amazon EKS sobrescreverá seus valores pelos valores padrão. Se você usar essa opção, recomendamos testar qualquer alteração de campo e valor em um cluster que não seja de produção antes de atualizar o complemento no cluster de produção. Se você alterar esse valor para OVERWRITE, todas as configurações serão alteradas para os valores padrão do Amazon EKS. Se você definiu valores personalizados para qualquer configuração, eles poderão ser sobrescritos pelos valores padrão do Amazon EKS. Se você alterar esse valor para none, o Amazon EKS não alterará o valor de nenhuma configuração, mas a atualização poderá falhar. Se a atualização falhar, você receberá uma mensagem de erro para ajudar a resolver o conflito.

    • Se você não estiver atualizando uma configuração, remova --configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}' do comando. Se você estiver atualizando uma configuração, substitua "env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"} pela configuração que você quiser definir. Neste exemplo, a variável de ambiente AWS_VPC_K8S_CNI_EXTERNALSNAT é definida como true. O valor que você especificar deve ser válido para o esquema da configuração. Se não souber qual é o esquema de configuração, execute aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.18.0-eksbuild.1, substituindo v1.18.0-eksbuild.1 pelo número da versão do complemento cuja configuração você deseja ver. O esquema é retornado na saída. Se você tiver alguma configuração personalizada existente, quiser remover tudo e definir os valores de todas as configurações de volta aos padrões do Amazon EKS, remova “env”: {"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"} do comando, para que {} fique vazio. Para obter uma explicação de cada configuração, consulte Variáveis de configuração CNI no GitHub.

      aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.18.0-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}'

      Pode levar alguns segundos para que a atualização seja concluída.

  4. Confirme se a versão do complemento foi atualizada. Substitua o my-cluster pelo nome do cluster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni

    Pode levar alguns segundos para que a atualização seja concluída.

    Veja um exemplo de saída abaixo.

    { "addon": { "addonName": "vpc-cni", "clusterName": "my-cluster", "status": "ACTIVE", "addonVersion": "v1.18.0-eksbuild.1", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region:111122223333:addon/my-cluster/vpc-cni/74c33d2f-b4dc-8718-56e7-9fdfa65d14a9", "createdAt": "2023-04-12T18:25:19.319000+00:00", "modifiedAt": "2023-04-12T18:40:28.683000+00:00", "serviceAccountRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole", "tags": {}, "configurationValues": "{\"env\":{\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":\"true\"}}" } }

Atualização do complemento autogerenciado

Importante

Recomendamos adicionar o tipo Amazon EKS do complemento ao seu cluster em vez de usar o tipo autogerenciado do complemento. Se você não estiver familiarizado com a diferença entre os tipos, consulte Complementos do Amazon EKS. Para obter mais informações sobre como adicionar um complemento do Amazon EKS ao cluster, consulte Criar um complemento. Se você não conseguir usar o complemento do Amazon EKS, recomendamos que você envie um problema sobre o motivo pelo qual não pode usar o repositório GitHub para roteiro de contêineres.

  1. Confirme que você não tem o tipo de complemento Amazon EKS instalado em seu cluster. Substitua my-cluster pelo nome do cluster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text

    Se uma mensagem erro for retornada, você não tem o tipo de complemento do Amazon EKS instalado no cluster. Para gerenciar automaticamente o complemento, conclua as etapas restantes neste procedimento para atualizar o complemento. Se receber um número de versão, você tem o tipo de complemento do Amazon EKS instalado no cluster. Para atualizá-lo, use o procedimento em Atualizar um complemento, em vez de usar este procedimento. Se não estiver familiarizado com a diferença entre os tipos de complemento, consulte Complementos do Amazon EKS.

  2. Veja qual versão da imagem do contêiner está atualmente instalada em seu cluster.

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    Veja um exemplo de saída abaixo.

    v1.12.6-eksbuild.2

    O resultado pode não incluir o número da compilação.

  3. Faça o backup de suas configurações atuais para que você possa definir as mesmas configurações após atualizar sua versão.

    kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
  4. Para examinar as versões disponíveis e se familiarizar com as alterações feitas na versão para a qual você deseja atualizar, consulte releases no GitHub. Observe que recomendamos atualizar para a mesma versão major.minor.patch listada na tabela de versões mais recentes disponíveis, mesmo se versões posteriores estiverem disponíveis no GitHub. As versões de compilação listadas na tabela não são especificadas nas versões autogerenciadas listadas no GitHub. Atualize a versão concluindo as tarefas em uma das seguintes opções:

    • Se você não tiver nenhuma configuração personalizada para o complemento, execute o comando abaixo do cabeçalho To apply this release: no GitHub específico da versão para a qual você está atualizando.

    • Se você tiver configurações personalizadas, baixe o manifesto com o comando a seguir. Altere https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.18.0/config/master/aws-k8s-cni.yaml para a URL da versão no GitHub para a qual você estiver atualizando.

      curl -O https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.18.0/config/master/aws-k8s-cni.yaml

      Se necessário, modifique o manifesto com as configurações personalizadas do backup que você fez em uma etapa anterior e aplique o manifesto modificado ao cluster. Se seus nós não tiverem acesso aos repositórios privados do Amazon ECR do Amazon EKS dos quais as imagens são extraídas (veja as linhas que começam com image: no manifesto), você precisará baixar as imagens, copiá-las para seu próprio repositório e modificar o manifesto a fim de extrair as imagens do seu repositório. Para ter mais informações, consulte Copiar uma imagem de contêiner de um repositório para outro.

      kubectl apply -f aws-k8s-cni.yaml
      
  5. Confirme se agora a nova versão está instalada em seu cluster.

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    Veja um exemplo de saída abaixo.

    v1.18.0
  6. (Opcional) Instale cni-metrics-helper em seu cluster. Ele extrai a interface de rede elástica e as informações de endereço IP, agrega-as em um nível de cluster e publica as métricas no Amazon CloudWatch. Para obter mais informações, consulte cni-metrics-helper no GitHub.