CNI für Hybridknoten konfigurieren - Amazon EKS

Hilf mit, diese Seite zu verbessern

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.

Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, 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 installieren, damit Hybridknoten bereit sind, Workloads zu bedienen. Hybridknoten werden mit Status angezeigt, Not Ready bis ein CNI ausgeführt wird. Sie können das CNI mit Tools Ihrer Wahl wie Helm verwalten. Die Anweisungen auf dieser Seite beziehen sich auf das Lebenszyklusmanagement von Cilium (Installation, Upgrade, Löschen). Informationen Überblick über Cilium Ingress und Cilium Gateway zur Konfiguration von Cilium Kubernetes-Netzwerkrichtlinien für Hybridknoten konfigurieren für Eingangs-, Lastausgleich- und Netzwerkrichtlinien finden Sie unter, und. Art des Dienstes LoadBalancer

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 konfiguriert. eks.amazonaws.com/compute-type: hybrid

Die Calico-Dokumentation, die sich zuvor auf dieser Seite befand, wurde in das EKS Hybrid Examples Repository verschoben.

Versionskompatibilität

Die Cilium-Version v1.17.x wird für EKS-Hybridknoten für jede in Amazon EKS unterstützte Kubernetes-Version unterstützt.

Informationen zu den von Amazon EKS unterstützten Kubernetes-Versionen finden Sie unter Kubernetes-Versionsunterstützung. EKS-Hybridknoten unterstützen dieselbe Kubernetes-Version 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-Funktion Unterstützt von AWS

Kubernetes-Netzwerkkonformität

Ja

Kerncluster-Konnektivität

Ja

IP-Familie

IPv4

Verwaltung des Lebenszyklus

Helm

Netzwerkmodus

VXLAN-Kapselung

IP-Adressverwaltung (IPAM)

Geltungsbereich des Cilium-IPAM-Clusters

Netzwerkrichtlinie

Kubernetes-Netzwerkrichtlinie

Border Gateway Protocol (BGP)

Cilium BGP-Steuerebene

Kubernetes-Eingang

Cilium-Eingang, Cilium-Gateway

Zuweisung von Dienst-IP-Adressen LoadBalancer

Cilium Load Balancer IPAM

Werbung für die IP-Adresse des Dienstes LoadBalancer

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. Sie können den folgenden URI in Ihren helm Befehlen verwenden, um dieses Repository zu verwenden:. oci://public.ecr.aws/eks/cilium/cilium:1.17.6-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, sodass Sie nicht von einem lokalen Helm-Repository-Namen aus auf dieses Repository verweisen können. Verwenden Sie stattdessen in den meisten Befehlen den vollständigen URI.

  • Standardmäßig ist Cilium so konfiguriert, dass es im Overlay-/Tunnelmodus mit VXLAN als Kapselungsmethode ausgeführt wird. Dieser Modus hat 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, für die 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 Webhooks für Hybridknoten konfigurieren und Bereiten Sie das Netzwerk für Hybridknoten vor.

  • 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. Cilium BGP für Hybridknoten konfigurieren

  • 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

Installieren Sie Cilium auf Hybridknoten

Verfahren

  1. Erstellen Sie eine YAML-Datei mit dem Namen. cilium-values.yaml Im folgenden Beispiel wird Cilium so konfiguriert, dass es nur auf 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 innerhalb des clusterPoolIpv4PodCIDRList konfigurierten IP-Bereichs zu. Ihr Pod-CIDR darf sich nicht mit Ihrem lokalen Node-CIDR, Ihrem VPC-CIDR oder Ihrem Kubernetes-Service CIDR überschneiden.

    • Konfigurieren Sie basierend clusterPoolIpv4MaskSize auf Ihren erforderlichen Pods pro Knoten. Zum Beispiel 25 für eine Segmentgröße von /25 von 128 Pods pro Knoten.

    • Nehmen Sie clusterPoolIpv4MaskSize nach der Bereitstellung von Cilium auf Ihrem Cluster keine Änderungen clusterPoolIpv4PodCIDRList vor. Weitere Informationen finden Sie unter Erweiterung des Cluster-Pools.

    • Wenn Sie Cilium im Kube-Proxy-Ersatzmodus ausführen, geben Sie Ihre Helm-Werte ein und stellen Sie sicher, dass keine bestehende Kube-Proxy-Bereitstellung auf denselben Knoten wie Cilium läuft. kubeProxyReplacement: "true"

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

    • Im folgenden Beispiel wird Folgendes konfiguriertloadBalancer.serviceTopology: Damit Service Traffic Distribution korrekt funktioniert, wenn Sie es true für Ihre Dienste konfigurieren. Weitere Informationen finden Sie unter Konfigurieren Sie die Verteilung des Servicedatenverkehrs.

    • 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 Beispiel1.17.5). Es wird empfohlen, die neueste Patch-Version für die Cilium-Nebenversion zu verwenden. Sie können die neueste verfügbare Patch-Version in Ihrem lokalen Helm-Repository mit dem helm search repo cilium/cilium --versions Befehl finden.

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

      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 sehen. Außerdem sollten Ihre Hybridknoten jetzt den Status habenReady. Informationen darüber, wie Sie Cilium BGP so konfigurieren, dass Ihr Pod CIDRs in Ihrem lokalen Netzwerk angekündigt wird, finden Sie unter. Cilium BGP für Hybridknoten konfigurieren

    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

Führen Sie ein Upgrade von Cilium auf Hybridknoten durch

Lesen Sie vor dem Upgrade Ihrer Cilium-Bereitstellung sorgfältig die Cilium-Upgrade-Dokumentation und die Upgrade-Hinweise, um sich über die Änderungen in der Cilium-Zielversion zu informieren.

  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 den Cilium-Upgrade-Pre-Flight-Check durch. Ersetzen Sie es CILIUM_VERSION durch Ihre Zielversion von Cilium. Wir empfehlen, dass Sie die neueste Patch-Version für Ihre Cilium-Nebenversion ausführen. Die neueste Patch-Version für eine bestimmte Cilium-Kleinversion finden Sie im Abschnitt Stable Releases 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 der Installation von sichercilium-preflight.yaml, dass die Anzahl der READY Pods der Anzahl der laufenden Cilium-Pods entspricht.

    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 der Einsatz von Cilium vor dem Flug ebenfalls als READY 1/1 gekennzeichnet ist. Wenn READY 0/1 angezeigt wird, lesen Sie im Abschnitt CNP-Validierung nach 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. Löschen Sie den Preflight

    helm uninstall cilium-preflight --namespace kube-system
  6. Speichern Sie vor der Ausführung des helm upgrade Befehls die Werte für Ihr Deployment in einem existing-cilium-values.yaml 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. Während des normalen Clusterbetriebs sollten alle Cilium-Komponenten dieselbe Version ausführen. In den folgenden Schritten wird beschrieben, 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 bestehende Cilium-Nebenversion zu aktualisieren. Um Unterbrechungen zu minimieren, stellen Sie die upgradeCompatibility Option auf die ursprüngliche Cilium-Version ein, 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 rückgängig machen müssen, führen Sie die folgenden Befehle aus.

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

Löschen Sie Cilium von Hybridknoten

  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 daher nicht auf Produktionsclustern 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