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
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
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 bestimmtehelm 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
-
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 daseks.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 desclusterPoolIpv4PodCIDRList
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 Beispiel25
für eine Segmentgröße von /25 von 128 Pods pro Knoten. -
Nehmen Sie
clusterPoolIpv4MaskSize
nach der Bereitstellung von Cilium auf Ihrem Cluster keine ÄnderungenclusterPoolIpv4PodCIDRList
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 konfiguriert
loadBalancer.serviceTopology
: Damit Service Traffic Distribution korrekt funktioniert, wenn Sie estrue
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"
-
-
Installieren Sie Cilium auf Ihrem Cluster.
-
CILIUM_VERSION
Ersetzen 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 demhelm 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
-
-
Bestätigen Sie mit den folgenden Befehlen, dass Ihre Cilium-Installation erfolgreich war. Sie sollten die
cilium-operator
Bereitstellung und diecilium-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 konfigurierenkubectl 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
-
Stellen Sie sicher, dass Sie die
helm
CLI in Ihrer Befehlszeilenumgebung installiert haben. Installationsanweisungen finden Sie in der Helm-Dokumentation. -
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 Releasesder 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
-
Stellen Sie nach der Installation von sicher
cilium-preflight.yaml
, dass die Anzahl derREADY
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
-
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
-
Löschen Sie den Preflight
helm uninstall cilium-preflight --namespace kube-system
-
Speichern Sie vor der Ausführung des
helm upgrade
Befehls die Werte für Ihr Deployment in einemexisting-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
-
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 -
(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
-
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
. -
Um die Konfigurationsdateien und Ressourcen auf der Festplatte zu bereinigen, können Sie, wenn Sie die Standardkonfigurationsverzeichnisse verwenden, die Dateien wie im
cni-uninstall.sh
Skriptim Cilium-Repository unter gezeigt entfernen. GitHub -
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