Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Cómo configurar una CNI para nodos híbridos

Modo de enfoque
Cómo configurar una CNI para nodos híbridos - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Cilium y Calico son compatibles como interfaces de red de contenedores (CNIs) para los Nodos híbridos de Amazon EKS. Debe instalar una CNI para que los nodos híbridos estén listos para atender cargas de trabajo. Los nodos híbridos aparecen con el estado Not Ready hasta que una CNI está en ejecución. Puede administrar estas CNI con las herramientas que elija, como Helm. La CNI de Amazon VPC no es compatible con los nodos híbridos y está configurada con antiafinidad para la etiqueta eks.amazonaws.com/compute-type: hybrid.

Compatibilidad de versiones de CNI

La versión 3.29.x de Calico es compatible y recomendada para los Nodos híbridos de EKS para todas las versiones de Kubernetes compatibles con Amazon EKS.

La versión 1.16.x de Cilium es compatible y recomendada para los Nodos híbridos de EKS para todas las versiones de Kubernetes compatibles con Amazon EKS.

Capacidades compatibles

AWS admite las siguientes capacidades de Cilium y Calico para su uso con nodos híbridos. Si planea utilizar funcionalidades fuera del alcance del soporte de AWS, recomendamos obtener soporte comercial para el complemento o contar con expertos internos que puedan resolver problemas y contribuir con correcciones al proyecto del complemento CNI.

Característica Cilium Calico

Conformidad de la red Kubernetes

Conectividad entre el plano de control y el nodo

Conectividad entre el plano de control y el pod

Administración del ciclo de vida

Instalar, actualizar, eliminar

Instalar, actualizar, eliminar

Modos de redes

VXLAN

VXLAN

Administración de direcciones IP (IPAM)

Ámbito de clúster (IPAM de Cilium)

IPAM de Calico

Familia de IP

IPv4

IPv4

BGP

Sí (plano de control de Cilium)

Cómo instalar Cilium en nodos híbridos

  1. Asegúrese de haber instalado la CLI de Helm en el entorno de línea de comandos. Consulte la documentación de Helm para consultar las instrucciones de instalación.

  2. Instale el repositorio de Helm de Cilium.

    helm repo add cilium https://helm.cilium.io/
  3. Cree un archivo YAML denominado cilium-values.yaml. Si configuró al menos una red de pods remotos, configure los mismos CIDR de pod para la clusterPoolIPv4PodCIDRList. No debe cambiar la clusterPoolIPv4PodCIDRList después de implementar Cilium en el clúster. Puede configurar clusterPoolIPv4MaskSize en función de los pods que necesite por nodo; consulte Cómo ampliar el grupo de clústeres en la documentación de Cilium. Para obtener una lista completa de los valores de Helm para Cilium, consulte la referencia de Helm en la documentación de Cilium. El siguiente ejemplo configura todos los componentes de Cilium para que se ejecuten únicamente en los nodos híbridos, ya que llevan la etiqueta eks.amazonaws.com/compute-type: hybrid.

    De forma predeterminada, Cilium enmascara la dirección IP de origen de todo el tráfico de los pods que sale del clúster con la dirección IP del nodo. Esto permite que Cilium se ejecute con clústeres de Amazon EKS que tienen redes de pods remotos configuradas y con clústeres que no tienen redes de pods remotas configuradas. Si desactiva el enmascaramiento para la implementación de Cilium, deberá configurar el clúster de Amazon EKS con las redes de pods remotos y anunciar las direcciones de pods en la red en las instalaciones. Si ejecuta webhooks en los nodos híbridos, debe configurar el clúster con las redes de pods remotos y debe anunciar las direcciones de los pods en la red en las instalaciones.

    Una forma habitual de anunciar las direcciones de los pods en la red en las instalaciones es mediante BGP. Para usar BGP con Cilium, debe configurar bgpControlPlane.enabled: true. Para obtener más información sobre la compatibilidad de BGP con Cilium, consulte el Plano de control de BGP de Cilium en la documentación de Cilium.

    affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid ipam: mode: cluster-pool operator: clusterPoolIPv4MaskSize: 25 clusterPoolIPv4PodCIDRList: - POD_CIDR operator: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid unmanagedPodWatcher: restart: false envoy: enabled: false
  4. Instale Cilium en el clúster. Sustituya CILIUM_VERSION por la versión de Cilium que desee. Se recomienda ejecutar la versión más reciente de la revisión para la versión secundaria de Cilium. Puede encontrar la versión más reciente de la revisión de una versión secundaria determinada de Cilium en la sección Versiones estables de la documentación de Cilium. Si va a habilitar BGP para la implementación, agregue la marca --set bgpControlPlane.enabled=true en el siguiente comando. Si va a utilizar un archivo kubeconfig específico, utilice la marca --kubeconfig con el comando de instalación de Helm.

    helm install cilium cilium/cilium \ --version CILIUM_VERSION \ --namespace kube-system \ --values cilium-values.yaml
  5. Puede confirmar que la instalación de Cilium se haya realizado correctamente con los siguientes comandos. Debería ver la implementación del cilium-operator y el cilium-agent en ejecución en cada uno de los nodos híbridos. Además, los nodos híbridos se deben encontrar en el estado Ready. Para obtener información sobre cómo configurar BGP para Cilium, continúe con el siguiente paso.

    kubectl get pods -n kube-system
    NAME READY STATUS RESTARTS AGE cilium-jjjn8 1/1 Running 0 11m cilium-operator-d4f4d7fcb-sc5xn 1/1 Running 0 11m
    kubectl get nodes
    NAME STATUS ROLES AGE VERSION mi-04a2cf999b7112233 Ready <none> 19m v1.31.0-eks-a737599
  6. Para usar BGP con Cilium para anunciar las direcciones de los pods en la red en las instalaciones, debe haber instalado Cilium con bgpControlPlane.enabled: true. Para configurar BGP en Cilium, cree primero un archivo llamado cilium-bgp-cluster.yaml con una CiliumBGPClusterConfig con peerAddress establecido en la IP del enrutador en las instalaciones con el que se establece el emparejamiento. Configure los valores de localASN y peerASN según la configuración del enrutador en las instalaciones.

    apiVersion: cilium.io/v2alpha1 kind: CiliumBGPClusterConfig metadata: name: cilium-bgp spec: nodeSelector: matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid bgpInstances: - name: "rack0" localASN: ONPREM_ROUTER_ASN peers: - name: "onprem-router" peerASN: PEER_ASN peerAddress: ONPREM_ROUTER_IP peerConfigRef: name: "cilium-peer"
  7. Aplique la configuración de clúster de BGP de Cilium al clúster.

    kubectl apply -f cilium-bgp-cluster.yaml
  8. El recurso CiliumBGPPeerConfig define una configuración de emparejamiento de BGP. Varios pares pueden compartir la misma configuración y proporcionar una referencia al recurso CiliumBGPPeerConfig común. Cree un archivo llamado cilium-bgp-peer.yaml para establecer la configuración de emparejamiento de la red en las instalaciones. Consulte la Configuración de emparejamiento de BGP en la documentación de Cilium para obtener una lista completa de las opciones de configuración.

    apiVersion: cilium.io/v2alpha1 kind: CiliumBGPPeerConfig metadata: name: cilium-peer spec: timers: holdTimeSeconds: 30 keepAliveTimeSeconds: 10 gracefulRestart: enabled: true restartTimeSeconds: 120 families: - afi: ipv4 safi: unicast advertisements: matchLabels: advertise: "bgp"
  9. Aplique la configuración de emparejamiento de BGP de Cilium al clúster.

    kubectl apply -f cilium-bgp-peer.yaml
  10. El recurso de CiliumBGPAdvertisement se utiliza para definir varios tipos de anuncios y los atributos asociados a estos. Cree un archivo llamado cilium-bgp-advertisement.yaml y configure el recurso de CiliumBGPAdvertisement con los ajustes que desee.

    apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisements labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR" - advertisementType: "Service" service: addresses: - ClusterIP - ExternalIP - LoadBalancerIP
  11. Aplique la configuración de anuncio de BGP de Cilium al clúster.

    kubectl apply -f cilium-bgp-advertisement.yaml

    Puede confirmar que el emparejamiento de BGP funcionó con la CLI de Cilium mediante el comando cilium bgp peers. Debería ver los valores correctos en la salida del entorno y el estado de la sesión como established. Consulte la Guía de solución de problemas y operaciones en la documentación de Cilium para obtener más información sobre la solución de problemas.

Cómo actualizar Cilium en nodos híbridos

Antes de actualizar la implementación de Cilium, revise detenidamente la documentación de actualización de Cilium y las notas de actualización para comprender los cambios en la versión de destino de Cilium.

  1. Asegúrese de haber instalado helm CLI en el entorno de línea de comandos. Consulte la documentación de Helm para consultar las instrucciones de instalación.

  2. Instale el repositorio de Helm de Cilium.

    helm repo add cilium https://helm.cilium.io/
  3. Ejecute la comprobación previa a la actualización de Cilium. Sustituya CILIUM_VERSION por la versión de destino de Cilium. Le recomendamos ejecutar la versión más reciente del parche para la versión secundaria de Cilium. Puede encontrar la versión más reciente de la revisión de una versión secundaria determinada de Cilium en la sección Versiones estables de la documentación de Cilium.

    helm install cilium-preflight cilium/cilium --version CILIUM_VERSION \ --namespace=kube-system \ --set preflight.enabled=true \ --set agent=false \ --set operator.enabled=false
  4. Después de aplicar cilium-preflight.yaml, asegúrese de que la cantidad de pods READY sea la misma que la cantidad de pods de Cilium en ejecución.

    kubectl get ds -n kube-system | sed -n '1p;/cilium/p'
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE cilium 2 2 2 2 2 <none> 1h20m cilium-pre-flight-check 2 2 2 2 2 <none> 7m15s
  5. Una vez que la cantidad de pods en READY sea igual, asegúrese de que la implementación de verificación previa de Cilium también esté marcada como READY 1/1. Si aparece READY 0/1, consulte la sección Validación del CNP y resuelva los problemas relacionados con la implementación antes de continuar con la actualización.

    kubectl get deployment -n kube-system cilium-pre-flight-check -w
    NAME READY UP-TO-DATE AVAILABLE AGE cilium-pre-flight-check 1/1 1 0 12s
  6. Elimine la verificación previa

    helm uninstall cilium-preflight --namespace kube-system
  7. Durante las operaciones normales del clúster, todos los componentes de Cilium deben ejecutar la misma versión. En los siguientes pasos se describe cómo actualizar todos los componentes de una versión estable a una versión estable posterior. Al actualizar de una versión secundaria a otra secundaria, se recomienda actualizar primero a la versión de revisión más reciente para la versión secundaria de Cilium existente. Para minimizar las interrupciones, la opción upgradeCompatibility se debe establecer en la versión inicial de Cilium que instaló en este clúster.

    Antes de ejecutar el comando de actualización de Helm, conserve los valores de la implementación en un cilium-values.yaml o utilice las opciones de línea de comandos de --set para la configuración. La operación de actualización sobrescribe el ConfigMap de Cilium, por lo que es fundamental que se transmitan los valores de configuración al realizar la actualización. Si utiliza BGP, se recomienda utilizar la opción de línea de comandos de --set bgpControlPlane=true en lugar de proporcionar esta información en el archivo de valores.

    helm upgrade cilium cilium/cilium --version CILIUM_VERSION \ --namespace kube-system \ --set upgradeCompatibility=1.X \ -f cilium-values.yaml
  8. (Opcional) Si necesita revertir la actualización debido a problemas, ejecute los siguientes comandos.

    helm history cilium --namespace kube-system helm rollback cilium [REVISION] --namespace kube-system

Elimine Cilium de los nodos híbridos

  1. Ejecute el siguiente comando para desinstalar todos los componentes de Cilium del clúster. Tenga en cuenta que la desinstalación de la CNI puede afectar al estado de los nodos y los pods, por lo que no se debe realizar en clústeres de producción.

    helm uninstall cilium --namespace kube-system

    Las interfaces y rutas configuradas por Cilium no se eliminan de forma predeterminada cuando se elimina la CNI del clúster; consulte la edición de GitHub para obtener más información.

  2. Para limpiar los archivos de configuración y recursos en disco, si utiliza los directorios de configuración estándar, puede eliminar los archivos como se indica el script cni-uninstall.sh proporcionado en el repositorio de Cilium en GitHub.

  3. Para eliminar las definiciones de recursos personalizadas (CRD) de Cilium del clúster, puede ejecutar los siguientes comandos.

    kubectl get crds -oname | grep "cilium" | xargs kubectl delete

Cómo instalar Calico en nodos híbridos

  1. Asegúrese de haber instalado la CLI de Helm en el entorno de línea de comandos. Consulte la documentación de Helm para consultar las instrucciones de instalación.

  2. Instale el repositorio de Helm de Cilium.

    helm repo add projectcalico https://docs.tigera.io/calico/charts
  3. Cree un archivo YAML llamado calico-values.yaml que configure Calico con afinidad para que se ejecute en nodos híbridos. Para obtener más información sobre los diferentes modos de red de Calico, consulte Cómo determinar la mejor opción de red en la documentación de Calico.

    1. Sustituya POD_CIDR por los rangos CIDR de los pods. Si configuró el clúster de Amazon EKS con redes de pods remotos, el POD_CIDR que especifique para Calico debe ser el mismo que el de las redes de pods remotos. Por ejemplo, 10.100.0.0/24.

    2. Sustituya CIDR_SIZE por el tamaño del segmento de CIDR que quiera asignar a cada nodo. Por ejemplo, 25 para un tamaño de segmento de /25. Para obtener más información sobre el blockSize de CIDR y cómo cambiar el blockSize, consulte Cómo cambiar el tamaño del bloque de grupos de direcciones IP en la documentación de Calico.

    3. En el siguiente ejemplo, natOutgoing está habilitado y bgp desactivado. En esta configuración, Calico se puede ejecutar en clústeres de Amazon EKS que tienen configurada una red de pods remotos y en clústeres que no la tienen configurada. Si tiene natOutgoing configurado como desactivado, debe configurar el clúster con las redes de pods remotos, y la red en las instalaciones debe ser capaz de dirigir correctamente el tráfico destinado a los CIDR de los pods. Una forma habitual de anunciar las direcciones de los pods en la red en las instalaciones es mediante BGP. Para utilizar BGP con Calico, debe habilitar bgp. En el siguiente ejemplo se configuran todos los componentes de Calico para que se ejecuten únicamente en los nodos híbridos, ya que llevan la marca eks.amazonaws.com/compute-type: hybrid. Si ejecuta webhooks en los nodos híbridos, debe configurar el clúster con las redes de pods remotos y debe anunciar las direcciones de los pods en la red en las instalaciones. En el siguiente ejemplo se configura controlPlaneReplicas: 1. Aumente el valor si tiene varios nodos híbridos y desea ejecutar los componentes del plano de control de Calico con alta disponibilidad.

      installation: enabled: true cni: type: Calico ipam: type: Calico calicoNetwork: bgp: Disabled ipPools: - cidr: POD_CIDR blockSize: CIDR_SIZE encapsulation: VXLAN natOutgoing: Enabled nodeSelector: eks.amazonaws.com/compute-type == "hybrid" controlPlaneReplicas: 1 controlPlaneNodeSelector: eks.amazonaws.com/compute-type: hybrid calicoNodeDaemonSet: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid csiNodeDriverDaemonSet: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid calicoKubeControllersDeployment: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid typhaDeployment: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid
  4. Instale Calico en el clúster. Sustituya CALICO_VERSION por la versión de Calico que desee (por ejemplo, la 3.29.0) y consulte las versiones de Calico para encontrar la revisión más reciente para la versión secundaria de Calico. Se recomienda ejecutar la versión más reciente de la revisión para la versión secundaria de Calico. Si utiliza un archivo kubeconfig específico, utilice la marca --kubeconfig.

    helm install calico projectcalico/tigera-operator \ --version CALICO_VERSION \ --namespace kube-system \ -f calico-values.yaml
  5. Puede confirmar que la instalación de Calico se haya realizado correctamente con los siguientes comandos. Debería ver la implementación de tigera-operator y el agente de calico-node en ejecución en cada uno de los nodos híbridos, calico-apiserver, csi-node-driver y calico-kube-controllers implementados. Además, los nodos híbridos se deben encontrar en el estado Ready. Si utiliza natOutgoing: Disabled, entonces ninguno de los componentes de Calico se podrá iniciar correctamente hasta que anuncie las direcciones de los pods en la red en las instalaciones. Para obtener información sobre cómo configurar BGP para Calico, continúe con el siguiente paso.

    kubectl get pods -A
    NAMESPACE NAME READY STATUS RESTARTS AGE calico-apiserver calico-apiserver-6c77bb6d46-2n8mq 1/1 Running 0 69s calico-system calico-kube-controllers-7c5f8556b5-7h267 1/1 Running 0 68s calico-system calico-node-s5nnk 1/1 Running 0 68s calico-system calico-typha-6487cc9d8c-wc5jm 1/1 Running 0 69s calico-system csi-node-driver-cv42d 2/2 Running 0 68s kube-system coredns-7bb495d866-2lc9v 1/1 Running 0 6m27s kube-system coredns-7bb495d866-2t8ln 1/1 Running 0 157m kube-system kube-proxy-lxzxh 1/1 Running 0 18m kube-system tigera-operator-f8bc97d4c-28b4d 1/1 Running 0 90s
    kubectl get nodes
    NAME STATUS ROLES AGE VERSION mi-0c6ec2f6f79176565 Ready <none> 5h13m v1.31.0-eks-a737599
  6. Si ha instalado Calico sin BGP, omita este paso. Para configurar BGP, cree un archivo llamado calico-bgp.yaml con una configuración BGPPeer y una BGPConfiguration. Es importante distinguir entre BGPPeer y BGPConfiguration. BGPPeer es el enrutador o recurso remoto habilitado para BGP con el que se emparejarán los nodos de un clúster de Calico. El valor asNumber de la configuración de BGPPeer es similar al ajuste peerASN de Cilium. El valor BGPConfiguration se aplica a cada nodo de Calico y el valor asNumber para la BGPConfiguration es equivalente al ajuste localASN de Cilium. Sustituya los valores ONPREM_ROUTER_IP, ONPREM_ROUTER_ASN y LOCAL_ASN que aparecen en el ejemplo siguiente, por los valores correspondientes al entorno en las instalaciones. La configuración de keepOriginalNextHop: true se utiliza para garantizar que cada nodo anuncie únicamente el CIDR de la red de pods que le pertenece.

    apiVersion: projectcalico.org/v3 kind: BGPPeer metadata: name: calico-hybrid-nodes spec: peerIP: ONPREM_ROUTER_IP asNumber: ONPREM_ROUTER_ASN keepOriginalNextHop: true --- apiVersion: projectcalico.org/v3 kind: BGPConfiguration metadata: name: default spec: nodeToNodeMeshEnabled: false asNumber: LOCAL_ASN
  7. Aplique el archivo al clúster.

    kubectl apply -f calico-bgp.yaml
  8. Confirme que los pods de Calico se ejecutan con el siguiente comando.

    kubectl get pods -n calico-system -w
    NAMESPACE NAME READY STATUS RESTARTS AGE calico-apiserver calico-apiserver-598bf99b6c-2vltk 1/1 Running 0 3h24m calico-system calico-kube-controllers-75f84bbfd6-zwmnx 1/1 Running 31 (59m ago) 3h20m calico-system calico-node-9b2pg 1/1 Running 0 5h17m calico-system calico-typha-7d55c76584-kxtnq 1/1 Running 0 5h18m calico-system csi-node-driver-dmnmm 2/2 Running 0 5h18m kube-system coredns-7bb495d866-dtn4z 1/1 Running 0 6h23m kube-system coredns-7bb495d866-mk7j4 1/1 Running 0 6h19m kube-system kube-proxy-vms28 1/1 Running 0 6h12m kube-system tigera-operator-55f9d9d565-jj9bg 1/1 Running 0 73m

Si se presentaron problemas durante estos pasos, consulte la orientación para la solución de problemas en la documentación de Calico.

Cómo actualizar Calico en nodos híbridos

Antes de actualizar la implementación de Calico, revise detenidamente la documentación de actualización de Calico y las notas de la versión para comprender los cambios en la versión de destino de Calico. Los pasos de actualización varían en función de si se utiliza Helm, del operador de Calico y del tipo de almacén de datos. En los siguientes pasos se presupone que se utiliza Helm.

  1. Descargue el manifiesto de operador de la versión de Calico a la que va a actualizar. Sustituya CALICO_VERSION por la versión a la que va a actualizar; por ejemplo, v3.29.0. Asegúrate de anteponer v a la major.minor.patch.

    kubectl apply --server-side --force-conflicts \ -f https://raw.githubusercontent.com/projectcalico/calico/CALICO_VERSION/manifests/operator-crds.yaml
  2. Ejecute helm upgrade para actualizar la implementación de Calico. Sustituya CALICO_VERSION por la versión a la que va a actualizar; por ejemplo, v3.29.0. Cree el archivo calico-values.yaml a partir de los valores de configuración que utilizó para instalar Calico.

    helm upgrade calico projectcalico/tigera-operator \ --version CALICO_VERSION \ --namespace kube-system \ -f calico-values.yaml

Cómo eliminar Calico de los nodos híbridos

  1. Ejecute el siguiente comando para desinstalar los componentes de Calico del clúster. Tenga en cuenta que la desinstalación de la CNI puede afectar al estado de los nodos y los pods, por lo que no se debe efectuar en clústeres de producción. Si instaló Calico en un espacio de nombres que no sea kube-system, cambie el espacio de nombres en el siguiente comando.

    helm uninstall calico --namespace kube-system

    Tenga en cuenta que las interfaces y rutas configuradas por Calico no se eliminan de forma predeterminada cuando elimina la CNI del clúster.

  2. Para limpiar los archivos de configuración y recursos en disco, elimine los archivos de Calico de los directorios /opt/cni y /etc/cni.

  3. Para eliminar las CRD de Calico del clúster, ejecute los siguientes comandos.

    kubectl get crds -oname | grep "calico" | xargs kubectl delete
    kubectl get crds -oname | grep "tigera" | xargs kubectl delete
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.