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 le 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 les nœuds hybrides afin d'être prêts à prendre en charge les charges de travail. Les nœuds hybrides apparaissent avec un statut Not Ready
jusqu'à ce qu'un CNI soit en cours d'exécution. Vous pouvez gérer le CNI avec les outils de votre choix tels que Helm. Les instructions de cette page couvrent la gestion du cycle de vie de Cilium (installation, mise à niveau, suppression). Voir Présentation de Cilium Ingress et de Cilium GatewayType de service LoadBalancer, et Configuration des politiques réseau Kubernetes pour les nœuds hybrides pour savoir comment configurer Cilium pour l'entrée, 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 Amazon VPC 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 figurant précédemment sur cette page a été déplacée vers le référentiel d'exemples hybrides EKS
Compatibilité des versions
La version Cilium v1.17.x
est prise en charge pour les nœuds hybrides EKS pour toutes les versions de Kubernetes prises en charge dans Amazon EKS.
Consultez la section Prise en charge des versions de Kubernetes pour les versions de Kubernetes prises en charge par Amazon EKS. Les nœuds hybrides EKS prennent en charge les mêmes versions de Kubernetes que les clusters Amazon EKS dotés de 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.
Caractéristique du cilium | Soutenu par AWS |
---|---|
Conformité du réseau Kubernetes |
Oui |
Connectivité du cluster principal |
Oui |
Famille d'IP |
IPv4 |
La gestion du cycle de vie |
Helm |
Mode réseau |
Encapsulation VXLAN |
Gestion des adresses IP (IPAM) |
Étendue du cluster Cilium IPAM |
Politique du réseau |
Politique du réseau Kubernetes |
Protocole BGP (Border Gateway Protocol) |
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 du kube-proxy |
Oui |
Considérations relatives au 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.
Vous pouvez utiliser l'URI suivant dans vos helm
commandes pour utiliser ce référentiel :oci://public.ecr.aws/eks/cilium/cilium:1.17.6-0
. Les commandes de cette rubrique utilisent ce référentiel. Notez que certaineshelm repo
commandes ne 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 dépôt Helm local. Utilisez plutôt 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 sur 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 le 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
Installez Cilium sur des nœuds hybrides
Procédure
-
Créez un fichier YAML appelé
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'eks.amazonaws.com/compute-type: hybrid
étiquette de l'agent et de l'opérateur Cilium.-
Configurez
clusterPoolIpv4PodCIDRList
avec 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 alloue des tranches d'adresses IP depuis l'espace IP configuré.clusterPoolIpv4PodCIDRList
Le CIDR de votre pod ne doit pas chevaucher le CIDR de votre nœud sur site, votre CIDR VPC ou le CIDR de votre service Kubernetes. -
Configurez en
clusterPoolIpv4MaskSize
fonction de vos pods requis par nœud. Par exemple,25
pour une taille de segment /25 de 128 pods par nœud. -
Ne le modifiez pas
clusterPoolIpv4PodCIDRList
ou,clusterPoolIpv4MaskSize
après avoir déployé Cilium sur votre cluster, consultez Extension du pool de clusterspour plus d'informations. -
Si vous exécutez Cilium en mode de remplacement de kube-proxy, définissez
kubeProxyReplacement: "true"
vos valeurs Helm et assurez-vous qu'aucun déploiement de kube-proxy ne s'exécute sur les mêmes nœuds que Cilium. -
L'exemple ci-dessous désactive le proxy Envoy Layer 7 (L7) que Cilium utilise pour les politiques réseau L7 et les entrées. Pour plus d’informations, consultez Configuration des politiques réseau Kubernetes pour les nœuds hybrides et Présentation de Cilium Ingress et de Cilium Gateway.
-
L'exemple ci-dessous permet de configurer
loadBalancer.serviceTopology
:true
pour 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 une liste complète des valeurs Helm pour Cilium, consultez la référence Helm dans la documentation
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"
-
-
Installez Cilium sur votre cluster.
-
CILIUM_VERSION
Remplacez-le par une version Cilium (par exemple1.17.5
). Il est recommandé d'utiliser la dernière version du correctif pour la version mineure de Cilium. Vous pouvez trouver la dernière version du correctif disponible dans votre dépôt Helm local à l'aide de lahelm search repo cilium/cilium --versions
commande. -
Si vous utilisez un fichier kubeconfig spécifique, utilisez l'
--kubeconfig
indicateur avec la commande Helm install.helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --version
CILIUM_VERSION
\ --namespace kube-system \ --values cilium-values.yaml
-
-
Vérifiez que votre installation de Cilium a réussi à l'aide des commandes suivantes. Vous devriez voir le
cilium-operator
déploiement et l'cilium-agent
exécution sur 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-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
Mettez à niveau Cilium sur des nœuds hybrides
Avant de mettre à niveau votre déploiement de Cilium, consultez attentivement la documentation de mise à niveau de Cilium et les notes de mise
-
Assurez-vous d'avoir installé la
helm
CLI sur votre environnement de ligne de commande. Consultez la documentation Helmpour les instructions d'installation. -
Exécutez le contrôle de mise à niveau de Cilium avant le vol.
CILIUM_VERSION
Remplacez-le par votre version cible de Cilium. Nous vous recommandons d'exécuter la dernière version du correctif pour votre version mineure de Cilium. Vous trouverez le dernier correctif pour une version mineure donnée de Cilium dans la section Versions stables de la documentationde 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 l'application
cilium-preflight.yaml
, assurez-vous que le nombre deREADY
gousses est le même que le nombre de gousses de cilium en circulation.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 de Cilium avant le vol est également marqué comme READY 1/1. S'il indique READY 0/1, consultez la section de 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 -w
NAME 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
helm upgrade
commande, conservez les valeurs de votre déploiement dans unexisting-cilium-values.yaml
ou utilisez les options de ligne de--set
commande pour 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 de 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 passer d'abord à la dernière version de correctif pour la version mineure existante de Cilium. Pour minimiser les perturbations, définissez l'
upgradeCompatibility
option sur la version initiale de Cilium que vous avez installée dans ce cluster.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 -
(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. Notez que 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 des clusters de production.
helm uninstall cilium --namespace kube-system
Les 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.sh
scriptdans 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