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.
Configuración de una CNI para nodos híbridos
Cilium es la interfaz de red de contenedores (CNI) compatible con AWS 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 la CNI con las herramientas que elija, como Helm. Las instrucciones de esta página tratan la administración del ciclo de vida de Cilium (instalar, actualizar, eliminar). Consulte Información general sobre Cilium Ingress y Cilium Gateway, LoadBalancer del tipo de servicio y Configuración de políticas de red de Kubernetes para nodos híbridos para saber cómo configurar Cilium para las políticas de entrada, equilibrio de carga y red.
Cilium no es compatibles con AWS cuando se ejecuta en nodos en la nube de AWS. 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
.
La documentación de Calico que aparecía anteriormente en esta página se ha trasladado al repositorio de ejemplos de Nodos híbridos de EKS
Compatibilidad de versiones
La versión v1.17.x
de Cilium es compatible con los Nodos híbridos de EKS para todas las versiones de Kubernetes compatibles con Amazon EKS.
Consulte la compatibilidad de versiones de Kubernetes para ver las versiones que admite Amazon EKS. Los Nodos híbridos de EKS tienen la misma compatibilidad de versiones de Kubernetes que los clústeres de Amazon EKS con nodos en la nube.
Capacidades compatibles
AWS mantiene versiones de Cilium para los Nodos híbridos de EKS que se basan en el proyecto de código abierto Cilium
AWS ofrece soporte técnico para las configuraciones predeterminadas de las siguientes capacidades de Cilium para su uso con Nodos híbridos de EKS. Si planea utilizar la funcionalidad fuera del ámbito del soporte de AWS, es recomendable obtener soporte comercial alternativo para Cilium o contar con expertos internos que puedan resolver problemas y contribuir con correcciones al proyecto de Cilium.
Característica Cilium | Compatible con AWS |
---|---|
Conformidad de la red Kubernetes |
Sí |
Conectividad del clúster principal |
Sí |
Familia de IP |
IPv4 |
Administración del ciclo de vida |
Helm |
Modos de redes |
Encapsulación mediante VXLAN |
Administración de direcciones IP (IPAM) |
Ámbito del clúster de IPAM de Cilium |
Política de red |
Política de red de Kubernetes |
Protocolo de puerta de enlace fronteriza (BGP) |
Cilium BGP Control Plane |
Kubernetes Ingress |
Cilium Ingress, Cilium Gateway |
Asignación de IP de LoadBalancer de servicio |
Cilium Load Balancer IPAM |
Anuncio de dirección IP de LoadBalancer de servicio |
Cilium BGP Control Plane |
Reemplazo de kube-proxy |
Sí |
Consideraciones sobre Cilium
-
Repositorio de Helm: AWS aloja el gráfico de Helm de Cilium en Amazon Elastic Container Registry Público (Amazon ECR Público) en Amazon EKS Cilium/Cilium
. Puede usar el siguiente URI en sus comandos de helm
para usar este repositorio:oci://public.ecr.aws/eks/cilium/cilium:1.17.6-0
. Los comandos de este tema utilizan este repositorio. Tenga en cuenta que ciertos comandoshelm repo
no son válidos para los repositorios de Helm en Amazon ECR Público, por lo que no puede hacer referencia a este repositorio desde un nombre de repositorio de Helm local. En su lugar, use el URI completo en la mayoría de los comandos. -
De forma predeterminada, Cilium está configurado para ejecutarse en modo de superposición/túnel con VXLAN como método de encapsulación
. Este modo es el que impone menos requisitos a la red física subyacente. -
De forma predeterminada, Cilium enmascara
la dirección IP de origen de todo el tráfico de pods que sale del clúster, asignándole la dirección IP del nodo. Si desactiva el enmascarado, los CIDR de los pods deben ser enrutables en la red en las instalaciones. -
Si ejecuta webhooks en nodos híbridos, los CIDR de los pods deben ser enrutable en la red en las instalaciones. Si los CIDR de los pods no son enrutables en la red en las instalaciones, se recomienda ejecutar los webhooks en los nodos en la nube del mismo clúster. Para obtener más información, consulte Configuración de webhooks para nodos híbridos y Cómo preparar las redes para los nodos híbridos.
-
AWS recomienda usar la funcionalidad del BGP integrada de Cilium para hacer que los CIDR de los pods sean enrutables en la red en las instalaciones. Para obtener más información sobre cómo configurar el BGP de Cilium con nodos híbridos, consulte Configuración del BGP de Cilium para nodos híbridos.
-
La administración de direcciones IP (IPAM) predeterminada en Cilium se llama Ámbito del clúster
, donde el operador de Cilium asigna direcciones IP para cada nodo en función de los CIDR de pods configurados por el usuario.
Cómo instalar Cilium en nodos híbridos
Procedimiento
-
Cree un archivo YAML denominado
cilium-values.yaml
. En el siguiente ejemplo se configura Cilium para que se ejecute únicamente en nodos híbridos. Para ello, establece afinidad para la etiquetaeks.amazonaws.com/compute-type: hybrid
para el operador y el agente de Cilium.-
Configure
clusterPoolIpv4PodCIDRList
con los mismos CIDR de los pods que configuró para las redes de pods remotas del clúster de EKS. Por ejemplo,10.100.0.0/24
. El operador de Cilium asigna segmentos de direcciones IP desde el espacio de IPclusterPoolIpv4PodCIDRList
configurado. El CIDR de los pods no debe superponerse con el CIDR de los nodos en las instalaciones, el CIDR de las VPC o el CIDR de los servicios de Kubernetes. -
Configure
clusterPoolIpv4MaskSize
según los pods requeridos por nodo. Por ejemplo,25
para un tamaño de segmento /25 de 128 pods por nodo. -
No cambie
clusterPoolIpv4PodCIDRList
niclusterPoolIpv4MaskSize
después de implementar Cilium en su clúster. Consulte Expanding the cluster poolpara obtener más información. -
Si está ejecutando Cilium en el modo de reemplazo de kube-proxy, configure
kubeProxyReplacement: "true"
en sus valores de Helm y asegúrese de que no tenga ninguna implementación de kube-proxy existente en ejecución en los mismos nodos que Cilium. -
En el siguiente ejemplo se desactiva el proxy de capa 7 (L7) de Envoy que Cilium utiliza para las políticas de red y el ingreso de la capa 7. Para obtener más información, consulte Configuración de políticas de red de Kubernetes para nodos híbridos y Información general sobre Cilium Ingress y Cilium Gateway.
-
En el siguiente ejemplo se configura
loadBalancer.serviceTopology
:true
para que la distribución del tráfico del servicio funcione correctamente si la configura para sus servicios. Para obtener más información, consulte Configurar la distribución de tráfico del servicio. -
Para obtener una lista completa de los valores de Helm para Cilium, consulte la referencia de Helm
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
loadBalancer: serviceTopology: true operator: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid unmanagedPodWatcher: restart: false loadBalancer: serviceTopology: true envoy: enabled: false kubeProxyReplacement: "false"
-
-
Instale Cilium en el clúster.
-
Sustituya
CILIUM_VERSION
por una versión de Cilium (por ejemplo,1.17.5
). Se recomienda utilizar la versión más reciente del parche para la versión secundaria de Cilium. Puede encontrar la versión más reciente del parche disponible en el repositorio local de Helm con el comandohelm search repo cilium/cilium --versions
. -
Si va a utilizar un archivo kubeconfig específico, utilice la marca
--kubeconfig
con el comando de instalación de Helm.helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --version
CILIUM_VERSION
\ --namespace kube-system \ --values cilium-values.yaml
-
-
Confirme que la instalación de Cilium se haya realizado correctamente con los siguientes comandos. Debería ver la implementación del
cilium-operator
y elcilium-agent
en ejecución en cada uno de los nodos híbridos. Además, los nodos híbridos se deben encontrar en el estadoReady
. Para obtener información sobre cómo configurar el BGP de Cilium para anunciar los CIDR de los pods en la red en las instalaciones, continúe con Configuración del BGP de Cilium para nodos híbridos.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
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
-
Asegúrese de haber instalado
helm
CLI en el entorno de línea de comandos. Consulte la documentación de Helmpara consultar las instrucciones de instalación. -
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 establesde la documentación de Cilium. helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \ --namespace=kube-system \ --set preflight.enabled=true \ --set agent=false \ --set operator.enabled=false
-
Después de aplicar
cilium-preflight.yaml
, asegúrese de que la cantidad de podsREADY
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
-
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
-
Elimine la verificación previa
helm uninstall cilium-preflight --namespace kube-system
-
Antes de ejecutar el comando
helm upgrade
, conserve los valores de la implementación enexisting-cilium-values.yaml
o utilice las opciones de línea de comandos de--set
para la configuración al ejecutar el comando de actualizació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.helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
-
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.helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version
CILIUM_VERSION
\ --namespace kube-system \ --set upgradeCompatibility=1.X
\ -f existing-cilium-values.yaml -
(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
-
Ejecute el siguiente comando para desinstalar todos los componentes de Cilium del clúster. Tenga en cuenta que desinstalar el CNI podría afectar el estado de los nodos y pods, y no debería realizarse 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. -
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. -
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