Configurer le CNI pour les nœuds hybrides - Amazon EKS

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. Pour bénéficier de l'assistance de AWS Cilium, vous devez utiliser les versions de Cilium AWS maintenues et les versions de Cilium prises en charge.

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

Installez Cilium sur des nœuds hybrides

Procédure

  1. 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 clusters pour 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"
  2. Installez Cilium sur votre cluster.

    • CILIUM_VERSIONRemplacez-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 la helm search repo cilium/cilium --versions commande.

    • Si vous utilisez un fichier kubeconfig spécifique, utilisez l'--kubeconfigindicateur 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
  3. 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-agentexé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 hybrides

    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

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 à niveau pour comprendre les modifications apportées à la version cible de Cilium.

  1. Assurez-vous d'avoir installé la helm CLI sur votre environnement de ligne de commande. Consultez la documentation Helm pour les instructions d'installation.

  2. Exécutez le contrôle de mise à niveau de Cilium avant le vol. CILIUM_VERSIONRemplacez-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 documentation 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
  3. Après l'applicationcilium-preflight.yaml, assurez-vous que le nombre de READY 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
  4. 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
  5. Supprimer le pré-vol

    helm uninstall cilium-preflight --namespace kube-system
  6. Avant d'exécuter la helm upgrade commande, conservez les valeurs de votre déploiement dans un existing-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
  7. 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'upgradeCompatibilityoption 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
  8. (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

  1. 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.

  2. 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.shscript dans le référentiel Cilium sur. GitHub

  3. 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