Ir para o conteúdo

Como evito conflitos de configuração ao criar ou atualizar meus complementos gerenciados pelo Amazon EKS?

5 minuto de leitura
0

Quero evitar conflitos de configuração ao criar ou atualizar meus complementos gerenciados pelo Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrição

Quando você usa a AWS Command Line Interface (AWS CLI) para modificar as configurações de complementos gerenciados pelo Amazon EKS, conflitos de configuração podem ocorrer. Se você não especificar como gerenciar esses conflitos, receberá a seguinte mensagem de erro:

“Conflicts found when trying to apply. Will not continue due to resolve conflicts mode.”

Para resolver esse problema, realize uma das ações a seguir:

  • Use o console do Amazon EKS que gerencia automaticamente os conflitos de configuração para atualizar a configuração.
  • Use a AWS CLI com o parâmetro resolve-conflicts OVERWRITE para substituir explicitamente a configuração existente.

Resolução

Observação: se você receber erros ao executar comandos da 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.

Grave suas configurações em um arquivo JSON

Grave suas configurações em um arquivo JSON baseado no complemento que você usa. Para obter mais informações sobre as opções de configuração do complemento, consulte amazon-vpc-cni-k8s, aws-ebs-csi-driver e coredns no site do GitHub.

Complemento da Amazon Virtual Private Cloud (Amazon VPC) CNI:

cat <<EOF > example-json-file
{
    "env": {
        "MINIMUM_IP_TARGET": "example-minimum-ip-target",
        "WARM_ENI_TARGET": "example-warm-eni-target",
        "WARM_IP_TARGET": "example-ip-target"
      }
}
EOF

Observação: substitua example-minimum-ip-target pelo número mínimo de endereços IP que cada nó deve manter. Além disso, substitua example-warm-eni-target pelo número de interfaces de rede elástica que o complemento deve manter disponíveis para atribuição de pod. Por fim, substitua example-ip-target pelo número de endereços IP que o complemento deve manter disponíveis para atribuição de pod.

Complemento do driver CSI do Amazon Elastic Block Store (Amazon EBS):

cat <<EOF > example-json-file  
{  
    "node": {  
        "volumeAttachLimit": example-volume-limit  
    }  
}  
EOF

Observação: substitua example-volume-limit pelo número máximo de volumes que o complemento do driver CSI do Amazon EBS pode anexar a um nó. Esse valor deve ser menor ou igual à cota de anexação de volume do tipo de instância do Amazon Elastic Compute Cloud (Amazon EC2).

CoreDNS:

cat <<EOF > example-json-file  
{  
    "resources": {  
        "limits": {  
            "cpu": "example-cpu-limit",  
            "memory": "example-memory-limit",  
        },  
        "requests": {  
            "cpu": "example-cpu-request",  
            "memory": "example-memory-request"  
        }  
    }  
}  
EOF

Observação: substitua example-cpu-limit pela CPU máxima que o CoreDNS pode usar e example-memory-limit pelo máximo de recursos de memória que o CoreDNS pode usar. Além disso, substitua example-cpu-request pela CPU mínima que o CoreDNS exige para ser executado e example-memory-request pelos recursos mínimos de memória que o CoreDNS precisa para ser executado.

Aplique o arquivo JSON ao complemento

Use o console do Amazon EKS

Conclua as etapas a seguir:

  1. Abra o console do Amazon EKS.
  2. Selecione a guia Complementos.
  3. Selecione seu complemento e clique em Editar
  4. Selecione as definições de configuração opcionais.
  5. Em Valores de configuração, insira as configurações do seu arquivo JSON.

Use a AWS CLI

Para aplicar o arquivo JSON ao instalar o complemento pela primeira vez, execute o seguinte comando create-addon:

aws eks create-addon --addon-name add-on ---cluster-name example-cluster-name --resolve-conflicts OVERWRITE --configuration-values file://example-json-file

Observação: substitua example-cluster-name pelo nome do seu cluster do Amazon EKS. Além disso, substitua complemento por vpc-cni para o complemento CNI da Amazon VPC, aws-ebs-csi-driver para o complemento do driver CSI do Amazon EBS ou coredns para o complemento CoreDNS. Por fim, substitua example-json-file pelo nome do seu arquivo de configuração JSON.

Para aplicar o arquivo JSON a um complemento existente, execute o seguinte comando update-addon:

aws eks update-addon --addon-name add-on ---cluster-name example-cluster-name --resolve-conflicts OVERWRITE --configuration-values file://example-json-file

Observação: substitua example-cluster-name pelo nome do seu cluster do Amazon EKS. Além disso, substitua complemento por vpc-cni para o complemento CNI da Amazon VPC, aws-ebs-csi-driver para o complemento do driver CSI do Amazon EBS ou coredns para o complemento CoreDNS. Por fim, substitua example-json-file pelo nome do seu arquivo de configuração JSON.

Teste suas atualizações

Para confirmar que seu complemento usa a configuração atualizada, execute o comando a seguir com base no complemento que você usa.

CNI e CoreDNS da Amazon VPC:

kubectl get pods -n kube-system example-aws-node-pod-ID -o jsonpath='{.spec.containers[*].env}'

Observação: substitua example-aws-node-pod-ID pelo ID do pod do seu nó ou pelo ID do pod do seu coreDNS.

Driver CSI do Amazon EBS:

kubectl get ds -n kube-system ebs-csi-node -o jsonpath='{.spec.template.spec.containers[*].args}'

Tolerâncias de atualização

Quando precisar atualizar as tolerâncias de nós para seus complementos, é possível incluí-las em seu arquivo de configuração. Assim como outras alterações de configuração, é possível aplicar essas atualizações usando o console do Amazon EKS ou a AWS CLI com o parâmetro resolve-conflicts OVERWRITE.

  1. Crie sua configuração de tolerância no formato YAML:

    cat <<EOF > example-yaml-file
    tolerations:
          - effect: example-effect
            key: example-key
            operator: example-operator
            value: example-value
    EOF

    Observação: substitua example-yaml-file pelo nome do seu arquivo de configuração YAML. Além disso, substitua example-effect por NoSchedule, PreferNoSchedule ou NoExecute e example-operator por Equal ou Exists. Por fim, substitua example-key pela chave de taint do seu nó e example-value pelo valor de taint do seu nó.

  2. Aplique a configuração. Use uma das seguintes opções:

    • Console do Amazon EKS: Siga as mesmas etapas na seção “Use o console do Amazon EKS”.
      -ou-
    • AWS CLI: Use create-addon ou update-addon command with com o parâmetro --resolve-conflicts OVERWRITE, conforme mostrado na seção “Use a AWS CLI”.

Informações relacionadas

Determinar os campos que podem ser personalizados para os complementos do Amazon EKS

Amazon EKS add-ons: Advanced configuration [Complementos do Amazon EKS: Configuração avançada

AWS OFICIALAtualizada há 7 meses