Aidez à améliorer cette page
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurer CNI pour les nœuds hybrides
Cilium est l'interface réseau de conteneurs (CNI) prise en AWS charge par les nœuds hybrides Amazon EKS. Vous devez installer un CNI pour que les nœuds hybrides soient prêts à prendre en charge les charges de travail. Les nœuds hybrides apparaissent avec le statut Not Ready jusqu’à ce qu’un CNI soit en cours d’exécution. Vous pouvez gérer le CNI à l’aide des outils de votre choix, tels que Helm. Les instructions fournies sur cette page concernent la gestion du cycle de vie de Cilium (installation, mise à niveau, suppression). Consultez Présentation de Cilium Ingress et Cilium Gateway, Type de service LoadBalancer, et Configurer les politiques réseau Kubernetes pour les nœuds hybrides pour savoir comment configurer Cilium pour l’ingress, l’équilibrage de charge et les politiques réseau.
Cilium n'est pas pris en charge AWS lorsqu'il est exécuté sur des nœuds dans AWS le cloud. Le CNI VPC Amazon n’est pas compatible avec les nœuds hybrides et le CNI VPC est configuré avec une anti-affinité pour l’étiquette eks.amazonaws.com/compute-type: hybrid.
La documentation Calico qui figurait auparavant sur cette page a été déplacée vers le référentiel d’exemples hybrides EKS
Compatibilité des versions
Les versions Cilium v1.17.x et B v1.18.x sont prises en charge pour les nœuds hybrides EKS pour chaque version de Kubernetes prise en charge dans Amazon EKS.
Note
Configuration requise pour le noyau Cilium v1.18.3 : En raison de l'exigence du noyau (noyau Linux >= 5.10), Cilium v1.18.3 n'est pas pris en charge sur :
-
Ubuntu 20.04
-
Red Hat Enterprise Linux (RHEL) 8
Pour la configuration système requise, consultez la section Configuration requise pour Cilium.
Consultez la prise en charge des versions Kubernetes pour connaître les versions Kubernetes prises en charge par Amazon EKS. Les nœuds hybrides EKS prennent en charge la même version de Kubernetes que les clusters Amazon EKS avec nœuds cloud.
Fonctionnalités prises en charge
AWS gère des versions de Cilium pour les nœuds hybrides EKS basées sur le projet open source Cilium
AWS fournit un support technique pour les configurations par défaut des fonctionnalités suivantes de Cilium à utiliser avec les nœuds hybrides EKS. Si vous envisagez d'utiliser des fonctionnalités hors du champ d' AWS assistance, il est recommandé d'obtenir un support commercial alternatif pour Cilium ou de disposer de l'expertise interne nécessaire pour résoudre les problèmes et apporter des correctifs au projet Cilium.
| Fonction Cilium | Soutenu par AWS |
|---|---|
|
Conformité au réseau Kubernetes |
Oui |
|
Connectivité au cluster principal |
Oui |
|
Famille d'IP |
IPv4 |
|
La gestion du cycle de vie |
Helm |
|
Mode réseau |
Encapsulation VXLAN |
|
Gestion des adresses IP (IPAM) |
Champ d’application du cluster Cilium IPAM |
|
Stratégie de réseau |
Stratégie réseau Kubernetes |
|
Protocole de passerelle frontière (BGP) |
Plan de contrôle Cilium BGP |
|
Entrée Kubernetes |
Cilium Ingress, Cilium Gateway |
|
Allocation d' LoadBalancer adresses IP de service |
Équilibreur de charge Cilium IPAM |
|
Publicité d'adresse LoadBalancer IP du service |
Plan de contrôle Cilium BGP |
|
remplacement de kube-proxy |
Oui |
Considérations relatives à Cilium
-
Référentiel Helm : AWS héberge le graphique Cilium Helm dans le Amazon Elastic Container Registry Public (Amazon ECR Public) sur Amazon EKS Cilium/Cilium.
Les versions disponibles incluent : -
Cilium v1.17.9 :
oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0 -
Cilium v1.18.3 :
oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0Les commandes de cette rubrique utilisent ce référentiel. Notez que certaines commandes
helm repone sont pas valides pour les référentiels Helm dans Amazon ECR Public. Vous ne pouvez donc pas faire référence à ce référentiel à partir d’un nom de référentiel Helm local. Au lieu de cela, utilisez l’URI complet dans la plupart des commandes.
-
-
Par défaut, Cilium est configuré pour fonctionner en mode overlay/tunnel avec VXLAN comme méthode d’encapsulation
. Ce mode présente le moins d’exigences sur le réseau physique sous-jacent. -
Par défaut, Cilium masque
l’adresse IP source de tout le trafic du pod quittant le cluster au profit de l’adresse IP du nœud. Si vous désactivez le masquage, votre pod CIDRs doit être routable sur votre réseau local. -
Si vous exécutez des webhooks sur des nœuds hybrides, votre pod CIDRs doit être routable sur votre réseau local. Si votre pod CIDRs n'est pas routable sur votre réseau local, il est recommandé d'exécuter des webhooks sur les nœuds cloud du même cluster. Pour plus d’informations, consultez Configurer les webhooks pour les nœuds hybrides et Préparer la mise en réseau pour les nœuds hybrides.
-
AWS recommande d'utiliser la fonctionnalité BGP intégrée de Cilium pour rendre votre pod CIDRs routable sur votre réseau local. Pour plus d’informations sur la configuration de Cilium BGP avec des nœuds hybrides, consultez Configurer Cilium BGP pour les nœuds hybrides.
-
La gestion des adresses IP (IPAM) par défaut dans Cilium s'appelle Cluster Scope
, où l'opérateur Cilium alloue des adresses IP à chaque nœud en fonction du pod configuré par l'utilisateur. CIDRs
Installer Cilium sur les nœuds hybrides
Procédure
-
Créez un fichier YAML nommé
cilium-values.yaml. L’exemple suivant configure Cilium pour qu’il s’exécute uniquement sur des nœuds hybrides en définissant l’affinité pour l’étiquetteeks.amazonaws.com/compute-type: hybridde l’agent et de l’opérateur Cilium.-
Configurez
clusterPoolIpv4PodCIDRListavec le même pod CIDRs que celui que vous avez configuré pour les réseaux de pods distants de votre cluster EKS. Par exemple,10.100.0.0/24. L’opérateur Cilium attribue des tranches d’adresses IP à partir de l’espace IPclusterPoolIpv4PodCIDRListconfiguré. Votre CIDR de pod ne doit pas chevaucher votre CIDR de nœud sur site, votre CIDR VPC ou votre CIDR de service Kubernetes. -
Configurez
clusterPoolIpv4MaskSizeen fonction du nombre de pods requis par nœud. Par exemple,25pour une taille de segment /25 de 128 pods par nœud. -
Ne modifiez pas
clusterPoolIpv4PodCIDRListouclusterPoolIpv4MaskSizeaprès avoir déployé Cilium sur votre cluster, consultez la section Extension du pool de clusterspour plus d’informations. -
Si vous exécutez Cilium en mode de remplacement de kube-proxy, définissez
kubeProxyReplacement: "true"dans vos valeurs Helm et assurez-vous qu’aucun déploiement kube-proxy n’est en cours d’exécution sur les mêmes nœuds que Cilium. -
L’exemple ci-dessous désactive le proxy Envoy Layer 7 (L7) utilisé par Cilium pour les politiques réseau L7 et l’entrée. Pour plus d’informations, consultez Configurer les politiques réseau Kubernetes pour les nœuds hybrides et Présentation de Cilium Ingress et Cilium Gateway.
-
L’exemple ci-dessous configure
loadBalancer.serviceTopology:truepour que la distribution du trafic de service fonctionne correctement si vous la configurez pour vos services. Pour de plus amples informations, veuillez consulter Configuration de la distribution du trafic de service. -
Pour obtenir la liste complète des valeurs Helm pour Cilium, consultez la référence Helm
dans la documentation Cilium. affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid ipam: mode: cluster-pool operator: clusterPoolIPv4MaskSize:25clusterPoolIPv4PodCIDRList: -POD_CIDRloadBalancer: 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"
-
-
Installez Cilium sur votre cluster.
-
CILIUM_VERSIONRemplacez-le par une version Cilium (par exemple1.17.9-0ou1.18.3-0). Il est recommandé d’utiliser la dernière version du correctif pour la version mineure de Cilium. -
Assurez-vous que vos nœuds répondent aux exigences du noyau pour la version que vous choisissez. Cilium v1.18.3 nécessite un noyau Linux >= 5.10.
-
Si vous utilisez un fichier kubeconfig spécifique, utilisez le drapeau
--kubeconfigavec la commande d’installation Helm.helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --versionCILIUM_VERSION\ --namespace kube-system \ --values cilium-values.yaml
-
-
Vérifiez que l’installation de Cilium s’est bien déroulée à l’aide des commandes suivantes. Vous devriez voir le déploiement
cilium-operatoret l’exécutioncilium-agentsur chacun de vos nœuds hybrides. De plus, vos nœuds hybrides devraient désormais avoir un statutReady. Pour plus d'informations sur la façon de configurer Cilium BGP pour promouvoir votre pod sur votre réseau local, passez CIDRs à. Configurer Cilium BGP pour les nœuds hybrideskubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGE cilium-jjjn8 1/1 Running 0 11m cilium-operator-d4f4d7fcb-sc5xn 1/1 Running 0 11mkubectl get nodesNAME STATUS ROLES AGE VERSION mi-04a2cf999b7112233 Ready <none> 19m v1.31.0-eks-a737599
Mettre à niveau Cilium sur les nœuds hybrides
Avant de mettre à niveau votre déploiement Cilium, consultez attentivement la documentation relative à la mise à niveau de Cilium
-
Assurez-vous d’avoir installé l’interface
helmCLI dans votre environnement de ligne de commande. Consultez la documentation Helmpour obtenir les instructions d’installation. -
Exécutez le contrôle de mise à niveau de Cilium avant le vol. Remplacez
CILIUM_VERSIONpar votre version cible de Cilium. Nous vous recommandons d’utiliser la dernière version du correctif pour votre version mineure de Cilium. Vous trouverez la dernière version du correctif pour une version mineure donnée de Cilium dans la section Versions stablesde la documentation 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 -
Après avoir appliqué le
cilium-preflight.yaml, assurez-vous que le nombre de podsREADYcorrespond au nombre de pods Cilium en cours d’exécution.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 -
Une fois que le nombre de pods READY est égal, assurez-vous que le déploiement préalable de Cilium est également marqué comme READY 1/1. Si le message READY 0/1 s’affiche, consultez la section Validation CNP
et résolvez les problèmes liés au déploiement avant de poursuivre la mise à niveau. kubectl get deployment -n kube-system cilium-pre-flight-check -wNAME READY UP-TO-DATE AVAILABLE AGE cilium-pre-flight-check 1/1 1 0 12s -
Supprimer le pré-vol
helm uninstall cilium-preflight --namespace kube-system -
Avant d’exécuter la commande
helm upgrade, conservez les valeurs de votre déploiement dans unexisting-cilium-values.yamlou utilisez les options de ligne de commande--setpour vos paramètres lorsque vous exécutez la commande de mise à niveau. L'opération de mise à niveau remplace le Cilium ConfigMap. Il est donc essentiel que vos valeurs de configuration soient transmises lors de la mise à niveau.helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml -
Pendant le fonctionnement normal du cluster, tous les composants Cilium doivent exécuter la même version. Les étapes suivantes décrivent comment mettre à niveau tous les composants d’une version stable vers une version stable ultérieure. Lors de la mise à niveau d’une version mineure vers une autre version mineure, il est recommandé de commencer par mettre à niveau vers la dernière version corrective de la version mineure existante de Cilium. Pour minimiser les perturbations, définissez l’option
upgradeCompatibilitysur la version initiale de Cilium que vous avez installée dans ce cluster.helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --versionCILIUM_VERSION\ --namespace kube-system \ --set upgradeCompatibility=1.X\ -f existing-cilium-values.yaml -
(Facultatif) Si vous devez annuler votre mise à niveau en raison de problèmes, exécutez les commandes suivantes.
helm history cilium --namespace kube-system helm rollback cilium [REVISION] --namespace kube-system
Supprimer Cilium des nœuds hybrides
-
Exécutez la commande suivante pour désinstaller tous les composants Cilium de votre cluster. Remarque : la désinstallation du CNI peut avoir un impact sur l’état des nœuds et des pods et ne doit pas être effectuée sur les clusters de production.
helm uninstall cilium --namespace kube-systemLes interfaces et les routes configurées par Cilium ne sont pas supprimées par défaut lorsque le CNI est supprimé du cluster. Consultez le GitHub problème
pour plus d'informations. -
Pour nettoyer les fichiers de configuration et les ressources sur disque, si vous utilisez les répertoires de configuration standard, vous pouvez supprimer les fichiers comme indiqué par le
cni-uninstall.shscriptdans le référentiel Cilium sur. GitHub -
Pour supprimer les définitions de ressources personnalisées Cilium (CRDs) de votre cluster, vous pouvez exécuter les commandes suivantes.
kubectl get crds -oname | grep "cilium" | xargs kubectl delete