

 **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
<a name="hybrid-nodes-cni"></a>

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](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium), [Art des Dienstes LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) und [Konfiguration von Kubernetes-Netzwerkrichtlinien für Hybridknoten](hybrid-nodes-network-policies.md).

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](https://github.com/aws-samples/eks-hybrid-examples) verschoben.

## Versionskompatibilität
<a name="hybrid-nodes-cilium-version-compatibility"></a>

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.](https://docs.cilium.io/en/stable/operations/system_requirements/)

Informationen zu den von Amazon EKS unterstützten Kubernetes-Versionen finden Sie unter [Kubernetes-Versionsunterstützung](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html). EKS-Hybridknoten verfügen über dieselbe Kubernetes-Versionsunterstützung wie Amazon-EKS-Cluster mit Cloud-Knoten.

## Unterstützte Funktionen
<a name="hybrid-nodes-cilium-support"></a>

 AWS verwaltet Builds von Cilium für EKS-Hybridknoten, die auf dem Open-Source-Projekt [Cilium](https://github.com/cilium/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
<a name="hybrid-nodes-cilium-considerations"></a>
+  **Helm-Repository** — AWS hostet das Cilium Helm-Diagramm im Amazon Elastic Container Registry Public (Amazon ECR Public) bei [Amazon EKS](https://gallery.ecr.aws/eks/cilium/cilium) 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](https://docs.cilium.io/en/stable/network/concepts/routing/#encapsulation) ausgeführt wird. Dieser Modus stellt die geringsten Anforderungen an das zugrunde liegende physische Netzwerk.
+ Standardmäßig [maskiert](https://docs.cilium.io/en/stable/network/concepts/masquerading/) 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](hybrid-nodes-webhooks.md) und [Vorbereitung der Vernetzung für Hybridknoten](hybrid-nodes-networking.md).
+  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](hybrid-nodes-cilium-bgp.md).
+ Die standardmäßige IP-Adressverwaltung (IPAM) in Cilium heißt [Cluster Scope](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/). Dabei weist der Cilium-Operator jedem Knoten auf der Grundlage des vom Benutzer konfigurierten Pods IP-Adressen zu. CIDRs

## Cilium in Hybridknoten installieren
<a name="hybrid-nodes-cilium-install"></a>

### Verfahren
<a name="_procedure"></a>

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](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool).
   + 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](hybrid-nodes-network-policies.md) und [Übersicht über Cilium Ingress und Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium).
   + 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](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).
   + Eine vollständige Liste der Helm-Werte für Cilium finden Sie in der [Helm-Referenz](https://docs.cilium.io/en/stable/helm-reference/) 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"
     ```

1. Installieren Sie Cilium auf Ihrem Cluster.
   + `CILIUM_VERSION`Ersetzen Sie es durch eine Cilium-Version (zum Beispiel `1.17.9-0` oder`1.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
     ```

1. 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](hybrid-nodes-cilium-bgp.md)

   ```
   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
<a name="hybrid-nodes-cilium-upgrade"></a>

Lesen Sie vor dem Upgrade Ihrer Cilium-Bereitstellung die [Cilium-Upgrade-Dokumentation](https://docs.cilium.io/en/v1.17/operations/upgrade/) 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](https://helm.sh/docs/intro/quickstart/).

1. 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](https://github.com/cilium/cilium#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
   ```

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

1. 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](https://docs.cilium.io/en/v1.17/operations/upgrade/#cnp-validation) 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
   ```

1. Vorabprüfung löschen

   ```
   helm uninstall cilium-preflight --namespace kube-system
   ```

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

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

1. (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
<a name="hybrid-nodes-cilium-delete"></a>

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](https://github.com/cilium/cilium/issues/34289).

1. 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`Skript](https://github.com/cilium/cilium/blob/main/plugins/cilium-cni/cni-uninstall.sh) im Cilium-Repository unter gezeigt entfernen. GitHub

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