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:
- Abra o console do Amazon EKS.
- Selecione a guia Complementos.
- Selecione seu complemento e clique em Editar
- Selecione as definições de configuração opcionais.
- 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.
-
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ó.
-
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