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.
Cilium et Calico sont pris en charge en tant qu'interfaces réseau de conteneurs () CNIs pour 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 les gérer CNIs avec les outils de votre choix tels que Helm. 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
Compatibilité des versions CNI
La version Calico 3.29.x
est prise en charge et recommandée pour les nœuds hybrides EKS pour chaque version de Kubernetes prise en charge dans Amazon EKS.
La version Cilium 1.16.x
est prise en charge et recommandée pour les nœuds hybrides EKS pour chaque version de Kubernetes prise en charge dans Amazon EKS.
Fonctionnalités prises en charge
AWS prend en charge les fonctionnalités suivantes de Cilium et Calico pour une utilisation avec des nœuds hybrides. Si vous envisagez d'utiliser des fonctionnalités hors du champ d' AWS assistance, nous vous recommandons d'obtenir un support commercial pour le plugin ou de disposer de l'expertise interne nécessaire pour résoudre les problèmes et apporter des correctifs au projet de plugin CNI.
Fonctionnalité | Cilium | Calico |
---|---|---|
Conformité du réseau Kubernetes |
Oui |
Oui |
Connectivité entre le plan de contrôle et le nœud |
Oui |
Oui |
Connectivité entre le plan de contrôle et le module |
Oui |
Oui |
La gestion du cycle de vie |
Installation, mise à niveau, suppression |
Installation, mise à niveau, suppression |
Mode réseau |
VXLAN |
VXLAN |
Gestion des adresses IP (IPAM) |
Étendue du cluster (Cilium IPAM) |
Calicot IPAM |
Famille d'IP |
IPv4 |
IPv4 |
BGP |
Oui (Cilium Control Plane) |
Oui |
Installez Cilium sur des nœuds hybrides
-
Assurez-vous d'avoir installé la CLI helm sur votre environnement de ligne de commande. Consultez la documentation Helm
pour les instructions d'installation. -
Installez le dépôt Cilium Helm.
helm repo add cilium https://helm.cilium.io/
-
Créez un fichier YAML appelé
cilium-values.yaml
. Si vous avez configuré au moins un réseau de pods distants, configurez le même pod CIDRs pour votreclusterPoolIPv4PodCIDRList
. Vous ne devez pas modifier votreclusterPoolIPv4PodCIDRList
après avoir déployé Cilium sur votre cluster. Vous pouvez configurerclusterPoolIPv4MaskSize
en fonction des pods requis par nœud, voir Expansion du pool de clustersdans la documentation de Cilium. Pour une liste complète des valeurs Helm pour Cilium, consultez la référence Helm dans la documentation de Cilium. L'exemple suivant configure tous les composants Cilium pour qu'ils s'exécutent uniquement sur les nœuds hybrides, puisqu'ils portent l'étiquette. eks.amazonaws.com/compute-type: hybrid
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. Cela permet à Cilium de fonctionner avec des clusters Amazon EKS sur lesquels des réseaux de modules distants sont configurés et avec des clusters sur lesquels aucun réseau de modules distants n'est configuré. Si vous désactivez le masquage pour votre déploiement de Cilium, vous devez configurer votre cluster Amazon EKS avec vos réseaux de pods distants et vous devez publier les adresses de vos pods auprès de votre réseau local. Si vous exécutez des webhooks sur vos nœuds hybrides, vous devez configurer votre cluster avec vos réseaux de pods distants et vous devez annoncer les adresses de vos pods sur votre réseau local.
Une méthode courante pour annoncer les adresses des pods sur votre réseau local consiste à utiliser le protocole BGP. Pour utiliser BGP avec Cilium, vous devez définir.
bgpControlPlane.enabled: true
Pour plus d'informations sur le support BGP de Cilium, consultez le plan de contrôle BGP de Ciliumdans 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 operator: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid unmanagedPodWatcher: restart: false envoy: enabled: false
-
Installez Cilium sur votre cluster. Remplacez-le
CILIUM_VERSION
par la version de Cilium de votre choix. Il est recommandé 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. Si vous activez BGP pour votre déploiement, ajoutez l' --set bgpControlPlane.enabled=true
indicateur dans la commande ci-dessous. Si vous utilisez un fichier kubeconfig spécifique, utilisez l'--kubeconfig
indicateur avec la commande Helm install.helm install cilium cilium/cilium \ --version
CILIUM_VERSION
\ --namespace kube-system \ --values cilium-values.yaml -
Vous pouvez vérifier que votre installation de Cilium s'est bien déroulée à 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 configuration de BGP pour Cilium, passez à l'étape suivante.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
-
Pour utiliser BGP avec Cilium afin de publier les adresses de vos pods sur votre réseau local, vous devez avoir installé Cilium avec.
bgpControlPlane.enabled: true
Pour configurer le BGP dans Cilium, créez d'abord un fichier appelécilium-bgp-cluster.yaml
CiliumBGPClusterConfig
avec l'peerAddress
adresse IP de votre routeur local avec lequel vous effectuez l'appairage. Configurez lelocalASN
etpeerASN
en fonction de la configuration de votre routeur local.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"
-
Appliquez la configuration du cluster Cilium BGP à votre cluster.
kubectl apply -f cilium-bgp-cluster.yaml
-
La
CiliumBGPPeerConfig
ressource définit une configuration homologue BGP. Plusieurs homologues peuvent partager la même configuration et fournir une référence à laCiliumBGPPeerConfig
ressource commune. Créez un fichier nommécilium-bgp-peer.yaml
pour configurer la configuration homologue de votre réseau local. Consultez la configuration du pair BGPdans la documentation de Cilium pour une liste complète des options de configuration. 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"
-
Appliquez la configuration Cilium BGP Peer à votre cluster.
kubectl apply -f cilium-bgp-peer.yaml
-
La
CiliumBGPAdvertisement
ressource est utilisée pour définir différents types de publicités et les attributs qui leur sont associés. Créez un fichier nommécilium-bgp-advertisement.yaml
et configurez laCiliumBGPAdvertisement
ressource avec les paramètres souhaités.apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisements labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR" - advertisementType: "Service" service: addresses: - ClusterIP - ExternalIP - LoadBalancerIP
-
Appliquez la configuration de publicité Cilium BGP à votre cluster.
kubectl apply -f cilium-bgp-advertisement.yaml
Vous pouvez confirmer que le peering BGP a fonctionné avec la CLI Cilium
à l'aide de la commande. cilium bgp peers
Vous devriez voir les valeurs correctes dans la sortie pour votre environnement et l'état de la session sous la formeestablished
. Consultez le guide de dépannage et d'exploitationdans la documentation de Cilium pour plus d'informations sur le dépannage.
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. -
Installez le dépôt Cilium Helm.
helm repo add cilium https://helm.cilium.io/
-
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 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
-
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.Avant d'exécuter la commande helm upgrade, conservez les valeurs de votre déploiement dans a
cilium-values.yaml
ou utilisez les options de ligne de--set
commande pour vos paramètres. 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. Si vous utilisez BGP, il est recommandé d'utiliser l'option de ligne de--set bgpControlPlane=true
commande au lieu de fournir ces informations dans votre fichier de valeurs.helm upgrade cilium cilium/cilium --version CILIUM_VERSION \ --namespace kube-system \ --set upgradeCompatibility=1.X \ -f 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
Installez Calico sur des nœuds hybrides
-
Assurez-vous d'avoir installé la CLI helm sur votre environnement de ligne de commande. Consultez la documentation Helm
pour les instructions d'installation. -
Installez le dépôt Cilium Helm.
helm repo add projectcalico https://docs.tigera.io/calico/charts
-
Créez un fichier YAML appelé
calico-values.yaml
qui configure Calico avec affinité pour qu'il s'exécute sur des nœuds hybrides. Pour plus d'informations sur les différents modes de mise en réseau de Calico, consultez la section Déterminer la meilleure option de mise en réseaudans la documentation de Calico. -
POD_CIDR
Remplacez-les par les plages CIDR de vos pods. Si vous avez configuré votre cluster Amazon EKS avec des réseaux de pods distants,POD_CIDR
ceux que vous spécifiez pour Calico doivent être identiques aux réseaux de pods distants. Par exemple,10.100.0.0/24
. -
Remplacez
CIDR_SIZE
par la taille du segment CIDR que vous souhaitez allouer à chaque nœud. Par exemple,25
pour une taille de segment /25. Pour plus d'informations sur le CIDRblockSize
et la modification dublockSize
, voir Modifier la taille de bloc du pool IPdans la documentation de Calico. -
Dans l'exemple ci-dessous,
natOutgoing
est activé etbgp
est désactivé. Dans cette configuration, Calico peut fonctionner sur des clusters Amazon EKS sur lesquels Remote Pod Network est configuré et peut fonctionner sur des clusters sur lesquels Remote Pod Network n'est pas configuré. Si vous aveznatOutgoing
défini cette option sur désactivé, vous devez configurer votre cluster avec les réseaux de vos pods distants et votre réseau local doit être en mesure d'acheminer correctement le trafic destiné à votre pod CIDRs. Une méthode courante pour annoncer les adresses des pods sur votre réseau local consiste à utiliser le protocole BGP. Pour utiliser BGP avec Calico, vous devez l'activer.bgp
L'exemple ci-dessous configure tous les composants Calico pour qu'ils s'exécutent uniquement sur les nœuds hybrides, puisqu'ils portent l'eks.amazonaws.com/compute-type: hybrid
étiquette. Si vous exécutez des webhooks sur vos nœuds hybrides, vous devez configurer votre cluster avec vos réseaux Remote Pod et vous devez annoncer les adresses de vos pods sur votre réseau local. L'exemple ci-dessous permet de configurercontrolPlaneReplicas: 1
et d'augmenter la valeur si vous avez plusieurs nœuds hybrides et que vous souhaitez exécuter les composants du plan de contrôle Calico de manière hautement disponible.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
-
-
Installez Calico sur votre cluster.
CALICO_VERSION
Remplacez-le par la version de Calico de votre choix (par exemple 3.29.0), consultez les versions de Calicopour trouver le dernier correctif pour votre version mineure de Calico. Il est recommandé d'exécuter la dernière version du correctif pour la version mineure de Calico. Si vous utilisez un kubeconfig
fichier spécifique, utilisez le--kubeconfig
drapeau.helm install calico projectcalico/tigera-operator \ --version
CALICO_VERSION
\ --namespace kube-system \ -f calico-values.yaml -
Vous pouvez vérifier que votre installation de Calico s'est bien déroulée à l'aide des commandes suivantes. Vous devriez voir le
tigera-operator
déploiement, l'calico-node
agent exécuté sur chacun de vos nœuds hybrides, lecalico-apiserver
csi-node-driver
, etcalico-kube-controllers
déployé. De plus, vos nœuds hybrides devraient désormais avoir un statutReady
. Si vous en utiliseznatOutgoing: Disabled
, tous les composants Calico ne pourront pas démarrer correctement tant que vous n'aurez pas annoncé les adresses de vos pods sur votre réseau local. Pour plus d'informations sur la configuration de BGP pour Calico, passez à l'étape suivante.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
-
Si vous avez installé Calico sans BGP, ignorez cette étape. Pour configurer BGP, créez un fichier appelé
calico-bgp.yaml
avec uneBGPPeer
configuration et unBGPConfiguration
. Il est important de distinguerBGPPeer
etBGPConfiguration
.BGPPeer
Il s'agit du routeur compatible BGP ou de la ressource distante avec laquelle les nœuds d'un cluster Calico seront homologues. LaBGPPeer
configurationasNumber
in est similaire au réglage Cilium.peerASN
LeBGPConfiguration
est appliqué à chaque nœud Calico et leasNumber
forBGPConfiguration
est équivalent au paramètre Cilium.localASN
RemplacezONPREM_ROUTER_IP
ONPREM_ROUTER_ASN
, etLOCAL_ASN
dans l'exemple ci-dessous par les valeurs de votre environnement sur site. LekeepOriginalNextHop: true
paramètre est utilisé pour garantir que chaque nœud annonce uniquement le CIDR du réseau de pods dont il est propriétaire.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
-
Appliquez le fichier à votre cluster.
kubectl apply -f calico-bgp.yaml
-
Vérifiez que les pods Calico sont en cours d'exécution à l'aide de la commande suivante.
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 vous avez rencontré des problèmes au cours de ces étapes, consultez les instructions de dépannage
Mettez à niveau Calico sur des nœuds hybrides
Avant de mettre à niveau votre déploiement Calico, consultez attentivement la documentation de mise à niveau de Calico
-
Téléchargez le manifeste de l'opérateur pour la version de Calico vers laquelle vous effectuez la mise à niveau.
CALICO_VERSION
Remplacez-le par la version vers laquelle vous effectuez la mise à niveau, par exemplev3.29.0
. Assurez-vous d'ajouter le au fichierv
major.minor.patch.kubectl apply --server-side --force-conflicts \ -f https://raw.githubusercontent.com/projectcalico/calico/
CALICO_VERSION
/manifests/operator-crds.yaml -
Exécutez
helm upgrade
pour mettre à niveau votre déploiement Calico. Remplacez CALICO_VERSION par la version vers laquelle vous effectuez la mise à niveau, par exemple.v3.29.0
Créez lecalico-values.yaml
fichier à partir des valeurs de configuration que vous avez utilisées pour installer Calico.helm upgrade calico projectcalico/tigera-operator \ --version
CALICO_VERSION
\ --namespace kube-system \ -f calico-values.yaml
Supprimer Calico des nœuds hybrides
-
Exécutez la commande suivante pour désinstaller les composants Calico 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. Si vous avez installé Calico dans un espace de noms autre que le
kube-system
changement d'espace de noms dans la commande ci-dessous.helm uninstall calico --namespace kube-system
Notez que les interfaces et les routes configurées par Calico ne sont pas supprimées par défaut lorsque vous supprimez le CNI du cluster.
-
Pour nettoyer les fichiers de configuration et les ressources sur disque, supprimez les fichiers Calico des répertoires
/opt/cni
et/etc/cni
. -
Pour supprimer le Calico CRDs de votre cluster, exécutez les commandes suivantes.
kubectl get crds -oname | grep "calico" | xargs kubectl delete
kubectl get crds -oname | grep "tigera" | xargs kubectl delete