Saltar al contenido

¿Cómo evito los conflictos de configuración al crear o actualizar mis complementos administrados de Amazon EKS?

5 minutos de lectura
0

Quiero evitar conflictos de configuración al crear o actualizar mis complementos administrados mediante Amazon Elastic Kubernetes Service (Amazon EKS).

Descripción corta

Cuando utilizas la interfaz de la línea de comandos de AWS (AWS CLI) para modificar las configuraciones de los complementos que gestiona Amazon EKS, es posible que se produzcan conflictos de configuración. Si no especificas cómo gestionar estos conflictos, verás el siguiente mensaje de error:

«Conflicts found when trying to apply. Will not continue due to resolve conflicts mode.»

Para solucionar este problema, toma una de estas medidas:

  • Utiliza la consola de Amazon EKS que gestiona automáticamente los conflictos de configuración para actualizar la configuración.
  • Utiliza la AWS CLI con el parámetro resolve-conflicts OVERWRITE para anular explícitamente la configuración existente.

Resolución

Nota: Si se muestran errores al poner en marcha comandos de AWS CLI, consulta Solución de errores de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Escritura de las configuraciones en un archivo JSON

Escribe tus configuraciones en un archivo JSON según el complemento que utilices. Para obtener información sobre las opciones de configuración de los complementos, consulta amazon-vpc-cni-k8s, aws-ebs-csi-driver y coredns en el sitio web de GitHub.

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

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

Nota: Sustituye example-minimum-ip-target por la cantidad mínima de direcciones IP que debe mantener cada nodo. Además, sustituye example-warm-eni-target por la cantidad de interfaces de red elásticas que el complemento debe tener disponibles para la asignación de pods. Por último, sustituye example-ip-target por la cantidad de direcciones IP que el complemento debe tener disponibles para la asignación de pods.

Complemento de CSI de Amazon Elastic Block Store (Amazon EBS)

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

Nota: Sustituye example-volume-limit por el número máximo de volúmenes que el complemento del controlador CSI de Amazon EBS puede adjuntar a un nodo. Este valor debe ser inferior o igual a la cuota de asociación del volumen del tipo de instancia de 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

Nota: Sustituye example-cpu-limit por la CPU máxima que puede usar CoreDNS y example-memory-limit por el máximo de recursos de memoria que puede usar CoreDNS. Además, sustituye example-cpu-request por la CPU mínima que CoreDNS necesita para ejecutarse y example-memory-request por los recursos de memoria mínimos que CoreDNS necesita para ejecutarse.

Aplicación del archivo JSON al complemento

Uso de la consola de Amazon EKS

Sigue estos pasos:

  1. Abre la consola de Amazon EKS.
  2. Selecciona la pestaña Complementos.
  3. Selecciona tu complemento y, a continuación, elige Editar.
  4. Elige los parámetros de configuración opcionales.
  5. Para los valores de configuración, introduce las configuraciones de tu archivo JSON.

Uso de AWS CLI

Para aplicar el archivo JSON al instalar el complemento por primera vez, ejecuta el siguiente 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

Nota: Reemplaza example-cluster-name por el nombre de tu clúster de Amazon EKS. Además, sustituye el complemento por vpc-cni para el complemento de CNI de Amazon VPC, aws-ebs-csi-driver para el complemento del controlador de CSI de Amazon EBS o coredns para el complemento CoreDNS. Por último, reemplaza example-json-file por el nombre de tu archivo de configuración JSON.

Para aplicar el archivo JSON a un complemento existente, ejecuta el siguiente 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

Nota: Reemplaza example-cluster-name por el nombre de tu clúster de Amazon EKS. Además, sustituye el complemento por vpc-cni para el complemento de CNI de Amazon VPC, aws-ebs-csi-driver para el complemento del controlador de CSI de Amazon EBS o coredns para el complemento CoreDNS. Por último, reemplaza example-json-file por el nombre de tu archivo de configuración JSON.

Prueba las actualizaciones

Para confirmar que el complemento usa una configuración actualizada, ejecuta el siguiente comando según el complemento que utilices.

CNI y CoreDNS de Amazon VPC:

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

Nota: Sustituya example-aws-node-pod-ID por tu ID de pod de nodo o de CoreDNS.

Controlador CSI de Amazon EBS:

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

Actualización de tolerancias

Cuando necesites actualizar las tolerancias de nodos de tus complementos, puedes incluirlas en tu archivo de configuración. Igual que sucede con otros cambios de configuración, puedes aplicar estas actualizaciones mediante la consola de Amazon EKS o la AWS CLI con el parámetro resolve-conflicts OVERWRITE.

  1. Crea tu configuración de tolerancia en formato YAML:

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

    Nota: Sustituye example-yaml-file por el nombre del archivo de configuración de YAML. Además, sustituye example-effect por NoSchedule, PreferNoSchedule o NoExecute y example-operator por Equal o Exists. Por último, sustituye example-key por tu clave de taint de nodo y example-value por tu valor de taint de nodo.

  2. Aplica la configuración. Usa una de las siguientes opciones:

    • Consola de Amazon EKS: sigue los mismos pasos de la sección «Uso de la consola de Amazon EKS».
      O bien:
    • AWS CLI: Utiliza el comando create-addon o update-addon con el parámetro**--resolve-conflicts OVERWRITE**, tal y como se muestra en la sección «Uso de la AWS CLI».

Información relacionada

Determinación de los campos que se pueden personalizar para los complementos de Amazon EKS

Complementos de Amazon EKS: configuración avanzada

OFICIAL DE AWSActualizada hace 7 meses