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.
Webhooks für Hybridknoten konfigurieren
Auf dieser Seite werden Überlegungen zum Ausführen von Webhooks mit Hybridknoten beschrieben. Webhooks werden in Kubernetes-Anwendungen und Open-Source-Projekten wie dem Load AWS Balancer Controller und dem CloudWatch Observability Agent verwendet, um Mutations- und Validierungsfunktionen zur Laufzeit auszuführen.
Routbare Pod-Netzwerke
Wenn Sie in der Lage sind, Ihren lokalen Pod-CIDR in Ihrem lokalen Netzwerk routingfähig zu machen, können Sie Webhooks auf Hybridknoten ausführen. Es gibt verschiedene Techniken, mit denen Sie Ihren lokalen Pod-CIDR in Ihrem lokalen Netzwerk routingfähig machen können, darunter Border Gateway Protocol (BGP), statische Routen oder andere benutzerdefinierte Routing-Lösungen. BGP ist die empfohlene Lösung, da sie skalierbarer und einfacher zu verwalten ist als alternative Lösungen, die eine benutzerdefinierte oder manuelle Routenkonfiguration erfordern. AWS unterstützt die BGP-Funktionen von Cilium und Calico für Werbe-Pods CIDRs. Weitere Informationen finden Sie unter Ein CNI für Hybridknoten konfigurieren undRoutbarer Remote-Pod CIDRs.
Pod-Netzwerke, die nicht routbar sind
Wenn Sie Ihren lokalen Pod-CIDR in Ihrem lokalen Netzwerk nicht routingfähig machen können und Webhooks ausführen müssen, empfehlen wir, dass Sie alle Webhooks auf Cloud-Knoten im selben EKS-Cluster wie Ihre Hybridknoten ausführen.
Überlegungen zu Clustern im gemischten Modus
Cluster im gemischten Modus sind als EKS-Cluster definiert, bei denen sowohl Hybridknoten als auch Knoten in der AWS Cloud ausgeführt werden. Beachten Sie bei der Ausführung eines Clusters im gemischten Modus die folgenden Empfehlungen:
-
Führen Sie das VPC-CNI auf Knoten in der AWS Cloud und entweder Cilium oder Calico auf Hybridknoten aus. Cilium und Calico werden nicht unterstützt, AWS wenn sie auf Knoten in der Cloud ausgeführt werden. AWS
-
Konfigurieren Sie Webhooks so, dass sie auf Knoten in der Cloud ausgeführt werden. AWS Weitere Informationen Konfigurieren Sie Webhooks für Add-Ons zur Konfiguration der Webhooks für AWS und Community-Add-Ons finden Sie unter.
-
Wenn für Ihre Anwendungen Pods erforderlich sind, die auf Knoten in der AWS Cloud ausgeführt werden, um direkt mit Pods zu kommunizieren, die auf Hybridknoten ausgeführt werden („Ost-West-Kommunikation“), und Sie das VPC-CNI auf Knoten in der AWS Cloud und Cilium oder Calico auf Hybridknoten verwenden, muss Ihr lokales Pod-CIDR in Ihrem lokalen Netzwerk routbar sein.
-
Führen Sie mindestens ein CoreDNS-Replikat auf Knoten in der AWS Cloud und mindestens ein CoreDNS-Replikat auf Hybridknoten aus.
-
Konfigurieren Sie die Dienstdatenverkehrsverteilung so, dass der Dienstverkehr lokal in der Zone bleibt, aus der er stammt. Weitere Informationen zur Verteilung des Dienstverkehrs finden Sie unterKonfigurieren Sie die Verteilung des Servicedatenverkehrs.
-
Wenn Sie AWS Application Load Balancers (ALB) oder Network Load Balancers (NLB) für Workload-Verkehr auf Hybridknoten verwenden, müssen die IP-Ziele, die mit dem ALB oder NLB verwendet werden, routbar sein. AWS
-
Das Metrics Server-Add-on erfordert Konnektivität von der EKS-Steuerebene zur Pod-IP-Adresse des Metrics Servers. Wenn Sie das Metrics Server-Add-on auf Hybridknoten ausführen, muss Ihr lokales Pod-CIDR in Ihrem lokalen Netzwerk routingfähig sein.
-
Um Metriken für Hybridknoten mithilfe von Amazon Managed Service for Prometheus (AMP) Managed Collectors zu sammeln, muss Ihr lokaler Pod-CIDR in Ihrem lokalen Netzwerk routingfähig sein. Oder Sie können den AMP Managed Collector für die Metriken und Ressourcen der EKS-Kontrollebene, die in der AWS Cloud ausgeführt werden, und das AWS Add-on Distro for OpenTelemetry (ADOT) verwenden, um Metriken für Hybridknoten zu sammeln.
Cluster im gemischten Modus konfigurieren
Um die mutierenden und validierenden Webhooks zu sehen, die auf Ihrem Cluster ausgeführt werden, können Sie den Ressourcentyp Erweiterungen im Bereich Ressourcen der EKS-Konsole für Ihren Cluster anzeigen oder Sie können die folgenden Befehle verwenden. EKS meldet auch Webhook-Metriken im Cluster-Observability-Dashboard, weitere Informationen finden Sie unter. Überwachen Sie Ihren Cluster mit dem Observability-Dashboard
kubectl get mutatingwebhookconfigurations
kubectl get validatingwebhookconfigurations
Konfigurieren Sie die Verteilung des Servicedatenverkehrs
Wenn Sie Cluster im gemischten Modus ausführen, empfehlen wir, Service Traffic Distribution
Wenn Sie Cilium als Ihr CNI verwenden, müssen Sie das CNI mit der enable-service-topology
Einstellung auf ausführen, um Service Traffic Distribution true
zu aktivieren. Sie können diese Konfiguration mit dem Helm-Installationsflag übergeben --set loadBalancer.serviceTopology=true
oder eine bestehende Installation mit dem Cilium-CLI-Befehl cilium config set enable-service-topology true
aktualisieren. Der Cilium-Agent, der auf jedem Knoten ausgeführt wird, muss nach der Aktualisierung der Konfiguration für eine bestehende Installation neu gestartet werden.
Ein Beispiel für die Konfiguration von Service Traffic Distribution für den CoreDNS-Dienst finden Sie im folgenden Abschnitt. Wir empfehlen, dass Sie dasselbe für alle Services in Ihrem Cluster aktivieren, um unbeabsichtigten Umgebungsverkehr zu vermeiden.
CoreDNS-Replikate konfigurieren
Wenn Sie Cluster im gemischten Modus ausführen, empfehlen wir, dass Sie mindestens ein CoreDNS-Replikat auf Hybridknoten und mindestens ein CoreDNS-Replikat auf Knoten in der Cloud haben. AWS
-
Fügen Sie beispielsweise für jeden Ihrer Hybridknoten ein Topologiezonen-Label hinzu.
topology.kubernetes.io/zone: onprem
Sie können das Label auch in dernodeadm init
Phase festlegen, indem Sie das Label in Ihrernodeadm
Konfiguration angeben, sieheNode Config zum Anpassen von Kubelet (optional). Beachten Sie, dass auf Knoten, die in der AWS Cloud laufen, automatisch ein Topologiezonenlabel zugewiesen wird, das der Availability Zone (AZ) des Knotens entspricht.kubectl label node
hybrid-node-name
topology.kubernetes.io/zone=zone
-
Fügen
podAntiAffinity
Sie der CoreDNS-Bereitstellung mit dem Topologiezonenschlüssel hinzu. Oder Sie können die CoreDNS-Bereitstellung während der Installation mit EKS-Add-Ons konfigurieren.kubectl edit deployment coredns -n kube-system
spec: template: spec: affinity: ... podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: k8s-app operator: In values: - kube-dns topologyKey: kubernetes.io/hostname weight: 100 - podAffinityTerm: labelSelector: matchExpressions: - key: k8s-app operator: In values: - kube-dns topologyKey: topology.kubernetes.io/zone weight: 50 ...
-
Fügen Sie die Einstellung
trafficDistribution: PreferClose
zurkube-dns
Dienstkonfiguration hinzu, um die Verteilung des Dienstverkehrs zu aktivieren.kubectl patch svc kube-dns -n kube-system --type=merge -p '{ "spec": { "trafficDistribution": "PreferClose" } }'
-
Sie können überprüfen, ob Service Traffic Distribution aktiviert ist, indem Sie sich die Endpunkt-Slices für den
kube-dns
Service ansehen. Ihre Endpunkt-Slices müssen die Zonenbeschriftungenhints
für Ihre Topologie aufweisen, wodurch bestätigt wird, dass Service Traffic Distribution aktiviert ist. Wenn Sie die nichthints
für jede Endpunktadresse sehen, ist Service Traffic Distribution nicht aktiviert.kubectl get endpointslice -A | grep "kube-dns"
kubectl get endpointslice [.replaceable]`kube-dns-<id>` -n kube-system -o yaml
addressType: IPv4 apiVersion: discovery.k8s.io/v1 endpoints: - addresses: - <your-hybrid-node-pod-ip> hints: forZones: - name: onprem nodeName: <your-hybrid-node-name> zone: onprem - addresses: - <your-cloud-node-pod-ip> hints: forZones: - name: us-west-2a nodeName: <your-cloud-node-name> zone: us-west-2a
Konfigurieren Sie Webhooks für Add-Ons
Die folgenden Add-Ons verwenden Webhooks und werden für die Verwendung mit Hybridknoten unterstützt.
-
AWS Load Balancer Balancer-Controller
-
CloudWatch Agent für Beobachtbarkeit
-
AWS Distribution für OpenTelemetry (ADOT)
-
cert-manager
In den folgenden Abschnitten finden Sie Informationen zur Konfiguration der Webhooks, die von diesen Add-Ons für die Ausführung auf Knoten in der Cloud verwendet werden. AWS
AWS Load Balancer Balancer-Controller
Um den Load AWS Balancer Controller in einem Cluster-Setup im gemischten Modus zu verwenden, müssen Sie den Controller auf Knoten in der AWS Cloud ausführen. Fügen Sie dazu Ihrer Helm-Wertekonfiguration Folgendes hinzu oder geben Sie die Werte mithilfe der EKS-Add-On-Konfiguration an.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
CloudWatch Observability-Agent
Das CloudWatch Observability Agent-Add-on verfügt über einen Kubernetes-Operator, der Webhooks verwendet. Um den Operator auf Knoten in der AWS Cloud in einem Cluster-Setup im gemischten Modus auszuführen, bearbeiten Sie die CloudWatch Observability Agent-Operatorkonfiguration. Sie können die Operatoraffinität während der Installation mit Helm- und EKS-Add-Ons nicht konfigurieren (siehe containers-roadmap
kubectl edit -n amazon-cloudwatch deployment amazon-cloudwatch-observability-controller-manager
spec: ... template: ... spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
AWS Distribution für (ADOT) OpenTelemetry
Das Add-on AWS Distro for OpenTelemetry (ADOT) verfügt über einen Kubernetes-Operator, der Webhooks verwendet. Um den Operator auf Knoten in der AWS Cloud in einem Cluster-Setup im gemischten Modus auszuführen, fügen Sie Ihrer Helm-Wertekonfiguration Folgendes hinzu oder geben Sie die Werte mithilfe der EKS-Add-On-Konfiguration an.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
Wenn Ihr Pod-CIDR in Ihrem lokalen Netzwerk nicht routbar ist, muss der ADOT-Collector auf Hybridknoten ausgeführt werden, um die Metriken von Ihren Hybridknoten und den darauf laufenden Workloads zu extrahieren. Bearbeiten Sie dazu die benutzerdefinierte Ressourcendefinition (CRD).
kubectl -n opentelemetry-operator-system edit opentelemetrycollectors.opentelemetry.io adot-col-prom-metrics
spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid
Sie können den ADOT-Collector so konfigurieren, dass er nur Metriken von Hybridknoten und Ressourcen, die auf Hybridknoten ausgeführt werden, scannt, indem Sie scrape_configs
in der ADOT Collector-CRD-Konfiguration jeweils Folgendes relabel_configs
hinzufügen.
relabel_configs: - action: keep regex: hybrid source_labels: - __meta_kubernetes_node_label_eks_amazonaws_com_compute_type
cert-manager
Für die Installation des ADOT-Add-Ons müssen die TLS-Zertifikate, die vom ADOT-Operator Webhook verwendet werden, installiert werden. cert-manager
führt auch Webhooks aus und Sie können es so konfigurieren, dass es auf Knoten in der AWS Cloud mit der folgenden Konfiguration für Helm-Werte ausgeführt wird.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid webhook: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid cainjector: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid startupapicheck: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid
cert-manager
Das cert-manager
Add-on führt Webhooks aus und Sie können es so konfigurieren, dass es auf Knoten in der AWS Cloud mit der folgenden Helm-Wertekonfiguration ausgeführt wird.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid webhook: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid cainjector: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid startupapicheck: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - hybrid