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

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

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

Los complementos de Amazon EKS se instalan en el clúster mediante configuraciones estándar de prácticas recomendadas. Para obtener más información acerca de cómo agregar un complemento de Amazon EKS al clúster, consulte Complementos de Amazon EKS.

Es posible que desee personalizar la configuración de un complemento de Amazon EKS para habilitar características avanzadas. Amazon EKS utiliza la característica de aplicación del lado del servidor de Kubernetes para habilitar la administración de un complemento por parte de Amazon EKS sin sobrescribir la configuración de los ajustes que Amazon EKS no administra. Para obtener más información, consulte Server-side Apply (Aplicación del lado del servidor) en la documentación de Kubernetes. Para ello, Amazon EKS administra un conjunto mínimo de campos para cada complemento que instala. Puede modificar todos los campos que no estén administrados por Amazon EKS u otro proceso de plano de control de Kubernetes, como kube-controller-manager, sin problema.

importante

La modificación de un campo administrado por Amazon EKS impide que Amazon EKS administre el complemento y puede provocar que los cambios se sobrescriban cuando se actualiza un complemento.

Sintaxis de administración de campos

Cuando se visualizan los detalles de un objeto de Kubernetes, los campos administrados y los no administrados se devuelven en la salida. Los campos administrados pueden ser de uno de los tipos siguientes:

  • Completamente administrado: Amazon EKS administra todas las claves del campo. Las modificaciones de algún valor provocan un conflicto.

  • Parcialmente administrado: Amazon EKS administra algunas claves del campo. Solo las modificaciones de las claves administradas explícitamente por Amazon EKS provocan un conflicto.

Ambos tipos de campos se etiquetan con manager: eks.

Cada clave es o bien un . que representa el campo en sí, que siempre se asigna a un conjunto vacío, o una cadena que representa un subcampo o elemento. La salida para la administración del campo consta de los siguientes tipos de declaraciones:

  • f:name, donde name es el nombre de un campo de una lista.

  • k:keys, donde keys es un mapa de los campos de un elemento de lista.

  • v:value, donde value es el valor exacto con formato JSON de un elemento de lista.

  • i:index, donde index es la posición de un elemento en la lista.

Las siguientes partes de salida para el complemento CoreDNS ilustran las declaraciones anteriores:

  • Campos completamente administrados: si para un campo administrado se ha especificado f: (campo), pero no k: (clave), se administra todo el campo. Las modificaciones a los valores de este campo provocan un conflicto.

    En la siguiente salida, puede ver que el contenedor llamado coredns está administrado por eks. Los subcampos args, image y imagePullPolicy también están administrados por eks. Las modificaciones de algún valor de estos campos provocan un conflicto.

    [...]
    f:containers:
      k:{"name":"coredns"}:
      .: {}
      f:args: {}
      f:image: {}
      f:imagePullPolicy: {}
    [...]
    manager: eks
    [...]
  • Campos parcialmente administrados: si una clave administrada tiene especificado un valor, se administran las claves declaradas para ese campo. La modificación de las claves especificadas provoca un conflicto.

    En el siguiente resultado, puede ver que eks administra los volúmenes config-volume y tmp establecidos con la clave name.

    [...]
    f:volumes:
      k:{"name":"config-volume"}:
        .: {}
        f:configMap:
          f:items: {}
          f:name: {}
        f:name: {}
      k:{"name":"tmp"}:
        .: {}
        f:name: {}
    [...]
    manager: eks
    [...]
  • Adición de claves a campos parcialmente administrados: si solo se administra un valor de clave específico, puede agregar claves adicionales, como argumentos, a un campo sin provocar ningún conflicto. Si agrega claves adicionales, asegúrese de que el campo no esté administrado primero. Agregar o modificar cualquier valor administrado provoca un conflicto.

    En el siguiente resultado, puede ver que tanto la clave name como el campo name están administrados. Agregar o modificar cualquier nombre de contenedor provoca un conflicto con esta clave administrada.

    [...]
    f:containers:
      k:{"name":"coredns"}:
    [...]
        f:name: {}
    [...]
    manager: eks
    [...]

Procedimiento

Puede utilizar kubectl para ver qué campos administra Amazon EKS en cualquier complemento de Amazon EKS.

Puede modificar todos los campos que no estén administrados por Amazon EKS u otro proceso de plano de control de Kubernetes, como kube-controller-manager, sin problema.

  1. Determine el complemento que desea examinar. Para ver todas las deployments y los DaemonSets implementados en el clúster, consulte Vea los recursos de Kubernetes.

  2. Para ver los campos administrados por un complemento, ejecute el siguiente comando:

    kubectl get type/add-on-name -n add-on-namespace -o yaml

    Por ejemplo, puede ver los campos administrados para el complemento CoreDNS con el siguiente comando.

    kubectl get deployment/coredns -n kube-system -o yaml

    La administración de campos se muestra en la siguiente sección de la salida devuelta.

    [...]
    managedFields:
      - apiVersion: apps/v1
        fieldsType: FieldsV1
        fieldsV1:                        
    [...]               
    nota

    Si no ve managedFields en la salida, agregue --show-managed-fields al comando y ejecútelo de nuevo. La versión de kubectl que utiliza determina si los campos administrados se devuelven de forma predeterminada.

Siguientes pasos

Para su complemento, personalice los campos que no son propiedad de AWS.