CNI für Hybridknoten konfigurieren - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CNI für Hybridknoten konfigurieren

Cilium ist das AWS unterstützte Container Networking Interface (CNI) für Amazon EKS-Hybridknoten. Sie müssen ein CNI für Hybridknoten installieren, damit diese für die Verarbeitung von Workloads bereit sind. Hybridknoten werden mit dem Status Not Ready angezeigt, bis ein CNI ausgeführt wird. Sie können das CNI mit Tools Ihrer Wahl, wie beispielsweise Helm, verwalten. Die Anweisungen auf dieser Seite behandeln das Lebenszyklusmanagement von Cilium (Installation, Upgrade, Löschung). Informationen zur Konfiguration von Cilium für Ingress, Load Balancing und Netzwerkrichtlinien finden Sie unter Übersicht über Cilium Ingress und Cilium Gateway, Servicetyp LoadBalancer und Konfiguration von Kubernetes-Netzwerkrichtlinien für Hybridknoten.

Cilium wird nicht unterstützt, AWS wenn es auf Knoten in der Cloud ausgeführt wird. AWS Das Amazon VPC CNI ist nicht mit Hybridknoten kompatibel und das VPC CNI ist mit Anti-Affinität für das Label eks.amazonaws.com/compute-type: hybrid konfiguriert.

Die zuvor auf dieser Seite befindliche Calico-Dokumentation wurde in das EKS-Repository für Hybrid-Beispiele verschoben.

Versionskompatibilität

Cilium-Versionen v1.17.x und v1.18.x werden für EKS-Hybridknoten für jede in Amazon EKS unterstützte Kubernetes-Version unterstützt.

Anmerkung

Kernelanforderung für Cilium v1.18.3: Aufgrund der Kernelanforderungen (Linux-Kernel >= 5.10) wird Cilium v1.18.3 nicht unterstützt auf:

  • Ubuntu 20.04

  • Red Hat Enterprise Linux (RHEL) 8

Die Systemanforderungen finden Sie unter Systemanforderungen für Cilium.

Informationen zu den von Amazon EKS unterstützten Kubernetes-Versionen finden Sie unter Kubernetes-Versionsunterstützung. EKS-Hybridknoten verfügen über dieselbe Kubernetes-Versionsunterstützung wie Amazon-EKS-Cluster mit Cloud-Knoten.

Unterstützte Funktionen

AWS verwaltet Builds von Cilium für EKS-Hybridknoten, die auf dem Open-Source-Projekt Cilium basieren. Um Support von AWS Cilium zu erhalten, müssen Sie die von Cilium AWS gepflegten Cilium-Builds und die unterstützten Cilium-Versionen verwenden.

AWS bietet technischen Support für die Standardkonfigurationen der folgenden Funktionen von Cilium zur Verwendung mit EKS-Hybridknoten. Wenn Sie beabsichtigen, Funktionen außerhalb des AWS Supports zu nutzen, wird empfohlen, alternativen kommerziellen Support für Cilium in Anspruch zu nehmen oder über das interne Fachwissen zu verfügen, um Fehler zu beheben und Problemlösungen für das Cilium-Projekt bereitzustellen.

Cilium-Feature Unterstützt von AWS

Kubernetes-Netzwerkkonformität

Ja

Konnektivität des zentralen Clusters

Ja

IP-Familie

IPv4

Verwaltung des Lebenszyklus

Helm

Netzwerkmodus

VXLAN-Kapselung

IP-Adressverwaltung (IPAM)

Cilium-IPAM-Cluster-Umfang

Netzwerkrichtlinie

Kubernetes-Netzwerkrichtlinie

Border Gateway Protocol (BGP)

Cilium-BGP-Steuerebene

Kubernetes Ingress

Cilium Ingress, Cilium-Gateway

Zuweisung von LoadBalancer Dienst-IP-Adressen

Cilium Load Balancer IPAM

Werbung für die LoadBalancer IP-Adresse des Dienstes

Cilium-BGP-Steuerebene

Ersatz für kube-proxy

Ja

Überlegungen zu Cilium

  • Helm-Repository — AWS hostet das Cilium Helm-Diagramm im Amazon Elastic Container Registry Public (Amazon ECR Public) bei Amazon EKS Cilium/Cilium. Zu den verfügbaren Versionen gehören:

    • Cilium v1.17.9: oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0

    • Zilium v1.18.3: oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0

      Die Befehle in diesem Thema verwenden dieses Repository. Beachten Sie, dass bestimmte helm repo-Befehle für Helm-Repositorys in Amazon ECR Public nicht gültig sind. Sie können daher nicht von einem lokalen Helm-Repository-Namen auf dieses Repository verweisen. Verwenden Sie stattdessen in den meisten Befehlen die vollständige URI.

  • Standardmäßig ist Cilium so konfiguriert, dass es im Überlagerungs-/Tunnelmodus mit VXLAN als Kapselungsmethode ausgeführt wird. Dieser Modus stellt die geringsten Anforderungen an das zugrunde liegende physische Netzwerk.

  • Standardmäßig maskiert Cilium die Quell-IP-Adresse des gesamten Pod-Datenverkehrs, der den Cluster verlässt, mit der IP-Adresse des Knotens. Wenn Sie Masquerading deaktivieren, CIDRs muss Ihr Pod in Ihrem lokalen Netzwerk routingfähig sein.

  • Wenn Sie Webhooks auf Hybridknoten ausführen, CIDRs muss Ihr Pod in Ihrem lokalen Netzwerk routingfähig sein. Wenn CIDRs Ihr Pod in Ihrem lokalen Netzwerk nicht routbar ist, wird empfohlen, Webhooks auf Cloud-Knoten im selben Cluster auszuführen. Weitere Informationen finden Sie unter Konfiguration von Webhooks für Hybridknoten und Vorbereitung der Vernetzung für Hybridknoten.

  • AWS empfiehlt, die integrierte BGP-Funktionalität von Cilium zu verwenden, um Ihren Pod in Ihrem lokalen Netzwerk CIDRs routingfähig zu machen. Weitere Informationen zur Konfiguration von Cilium BGP mit Hybridknoten finden Sie unter Konfiguration von Cilium BGP für Hybridknoten.

  • Die standardmäßige IP-Adressverwaltung (IPAM) in Cilium heißt Cluster Scope. Dabei weist der Cilium-Operator jedem Knoten auf der Grundlage des vom Benutzer konfigurierten Pods IP-Adressen zu. CIDRs

Cilium in Hybridknoten installieren

Verfahren

  1. Erstellen Sie eine YAML-Datei mit dem Namen cilium-values.yaml. Im folgenden Beispiel wird Cilium so konfiguriert, dass es nur in Hybridknoten ausgeführt wird, indem die Affinität für das eks.amazonaws.com/compute-type: hybrid-Label für den Cilium-Agenten und -Operator festgelegt wird.

    • Verwenden Sie für die Konfiguration clusterPoolIpv4PodCIDRList denselben Pod, den CIDRs Sie für die Remote-Pod-Netzwerke Ihres EKS-Clusters konfiguriert haben. Beispiel, 10.100.0.0/24. Der Cilium-Operator weist IP-Adressbereiche aus der konfigurierten clusterPoolIpv4PodCIDRList-IP-Umgebung zu. Ihr Pod-CIDR darf sich nicht mit Ihrem On-Premises-Knoten-CIDR, Ihrem VPC-CIDR oder Ihrem Kubernetes-Service-CIDR überschneiden.

    • Konfigurieren Sie clusterPoolIpv4MaskSize basierend auf den von Ihnen benötigten Pods pro Knoten. Beispiel: 25 für eine /25-Segmentgröße von 128 Pods pro Knoten.

    • Ändern Sie clusterPoolIpv4PodCIDRList oder clusterPoolIpv4MaskSize nicht, nachdem Sie Cilium in Ihrem Cluster bereitgestellt haben. Weitere Informationen finden Sie unter Erweiterung des Cluster-Pools.

    • Wenn Sie Cilium im Kube-Proxy-Ersatzmodus ausführen, setzen Sie kubeProxyReplacement: "true" in Ihren Helm-Werten und stellen Sie sicher, dass Sie keine vorhandene Kube-Proxy-Bereitstellung auf denselben Knoten wie Cilium ausführen.

    • Das folgende Beispiel deaktiviert den Envoy Layer 7 (L7)-Proxy, den Cilium für L7-Netzwerkrichtlinien und Ingress verwendet. Weitere Informationen erhalten Sie unter Konfiguration von Kubernetes-Netzwerkrichtlinien für Hybridknoten und Übersicht über Cilium Ingress und Cilium Gateway.

    • Das nachstehende Beispiel konfiguriert loadBalancer.serviceTopology: true für die Verteilung des Service-Datenverkehrs, damit dieser korrekt funktioniert, wenn Sie ihn für Ihre Services konfigurieren. Weitere Informationen finden Sie unter Verteilung des Service-Datenverkehrs konfigurieren.

    • Eine vollständige Liste der Helm-Werte für Cilium finden Sie in der Helm-Referenz in der Cilium-Dokumentation.

      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. Installieren Sie Cilium auf Ihrem Cluster.

    • CILIUM_VERSIONErsetzen Sie es durch eine Cilium-Version (zum Beispiel 1.17.9-0 oder1.18.3-0). Es wird empfohlen, die neueste Patch-Version für die Cilium-Nebenversion zu verwenden.

    • Stellen Sie sicher, dass Ihre Knoten die Kernel-Anforderungen für die von Ihnen gewählte Version erfüllen. Cilium v1.18.3 erfordert einen Linux-Kernel >= 5.10.

    • Wenn Sie eine bestimmte Kubeconfig-Datei verwenden, verwenden Sie das Flag --kubeconfig mit dem Helm-Installationsbefehl.

      helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --version CILIUM_VERSION \ --namespace kube-system \ --values cilium-values.yaml
  3. Bestätigen Sie mit den folgenden Befehlen, dass Ihre Cilium-Installation erfolgreich war Sie sollten die cilium-operator-Bereitstellung und die cilium-agent-Ausführung auf jedem Ihrer Hybridknoten anzeigen können. Darüber hinaus sollten Ihre Hybridknoten nun den Status Ready aufweisen. Informationen darüber, wie Sie Cilium BGP so konfigurieren, dass Ihr Pod in Ihrem lokalen Netzwerk angekündigt wird, finden CIDRs Sie unter. Konfiguration von Cilium BGP für Hybridknoten

    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

Cilium in Hybridknoten aktualisieren

Lesen Sie vor dem Upgrade Ihrer Cilium-Bereitstellung die Cilium-Upgrade-Dokumentation und die Upgrade-Hinweise sorgfältig durch, um die Änderungen in der Zielversion von Cilium zu verstehen.

  1. Stellen Sie sicher, dass Sie die helm-CLI in Ihrer Befehlszeilenumgebung installiert haben. Installationsanweisungen finden Sie in der Helm-Dokumentation.

  2. Führen Sie die Vorabprüfung für das Cilium-Upgrade durch. Ersetzen Sie CILIUM_VERSION durch Ihre gewünschte Cilium-Version. Wir empfehlen, die neueste Patch-Version für Ihre Cilium-Nebenversion zu verwenden. Die neueste Patch-Version für eine bestimmte Cilium-Nebenversion finden Sie im Abschnitt Stabile Versionen der Cilium-Dokumentation.

    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. Stellen Sie nach dem Anwenden von cilium-preflight.yaml sicher, dass die Anzahl der READY-Pods mit der Anzahl der ausgeführten Cilium-Pods übereinstimmt.

    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. Sobald die Anzahl der READY-Pods gleich ist, stellen Sie sicher, dass die Cilium-Bereitstellung vor dem Flug auch als READY 1/1 markiert ist. Wenn „READY 0/1“ angezeigt wird, lesen Sie den Abschnitt zur CNP-Validierung und beheben Sie Probleme mit der Bereitstellung, bevor Sie mit dem Upgrade fortfahren.

    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. Vorabprüfung löschen

    helm uninstall cilium-preflight --namespace kube-system
  6. Bewahren Sie vor dem Ausführen des helm upgrade-Befehls die Werte für Ihre Bereitstellung in einem existing-cilium-values.yaml auf oder verwenden Sie --set-Befehlszeilenoptionen für Ihre Einstellungen, wenn Sie den Upgrade-Befehl ausführen. Der Upgrade-Vorgang überschreibt das Cilium ConfigMap, daher ist es wichtig, dass Ihre Konfigurationswerte beim Upgrade übergeben werden.

    helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
  7. Im normalen Cluster-Betrieb sollten alle Cilium-Komponenten in derselben Version ausgeführt werden. Die folgenden Schritte beschreiben, wie Sie alle Komponenten von einer stabilen Version auf eine spätere stabile Version aktualisieren. Beim Upgrade von einer Nebenversion auf eine andere Nebenversion wird empfohlen, zuerst auf die neueste Patch-Version für die vorhandene Cilium-Nebenversion zu aktualisieren. Um Störungen zu minimieren, setzen Sie die Option upgradeCompatibility auf die ursprüngliche Cilium-Version, die Sie in diesem Cluster installiert haben.

    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. (Optional) Wenn Sie Ihr Upgrade aufgrund von Problemen zurücksetzen müssen, führen Sie die folgenden Befehle aus.

    helm history cilium --namespace kube-system helm rollback cilium [REVISION] --namespace kube-system

Cilium aus Hybridknoten löschen

  1. Führen Sie den folgenden Befehl aus, um alle Cilium-Komponenten aus Ihrem Cluster zu deinstallieren. Beachten Sie, dass die Deinstallation des CNI die Integrität von Knoten und Pods beeinträchtigen kann und nicht in Produktions-Clustern durchgeführt werden sollte.

    helm uninstall cilium --namespace kube-system

    Die von Cilium konfigurierten Schnittstellen und Routen werden standardmäßig nicht entfernt, wenn das CNI aus dem Cluster entfernt wird. Weitere Informationen finden Sie unter dem GitHub Problem.

  2. Um die Konfigurationsdateien und Ressourcen auf der Festplatte zu bereinigen, können Sie, wenn Sie die Standardkonfigurationsverzeichnisse verwenden, die Dateien wie im cni-uninstall.shSkript im Cilium-Repository unter gezeigt entfernen. GitHub

  3. Um die benutzerdefinierten Cilium-Ressourcendefinitionen (CRDs) aus Ihrem Cluster zu entfernen, können Sie die folgenden Befehle ausführen.

    kubectl get crds -oname | grep "cilium" | xargs kubectl delete