View a markdown version of this page

Erste Schritte mit dem EKS Hybrid Nodes Gateway - 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.

Erste Schritte mit dem EKS Hybrid Nodes Gateway

Diese Seite führt Sie durch die Voraussetzungen, die Vorbereitung der Umgebung, die Installation, Überprüfung und Deinstallation des Amazon EKS Hybrid Nodes Gateways. Eine Einführung in das Gateway und seine Architektur finden Sie unterAmazon EKS-Gateway für Hybridknoten.

Voraussetzungen

Stellen Sie vor der Installation des Hybrid Nodes Gateways sicher, dass Ihre Umgebung die folgenden Anforderungen erfüllt:

  • EKS-Cluster mit Cilium CNI- und VTEP-Unterstützung — Ihr EKS-Cluster muss die EKS-Version von Cilium als CNI auf Hybridknoten verwenden, und Cilium VTEP muss aktiviert sein. Weitere Informationen finden Sie unter CNI für das Hybrid Nodes Gateway konfigurieren.

  • AWS VPC-CNI auf Cloud-Knoten — Die Gateway-Knoten und andere Cloud-Knoten im Cluster müssen die AWS VPC-CNI verwenden. Das Gateway nutzt VPC-native Routing, um den Verkehr zwischen der VPC und dem VXLAN-Tunnel weiterzuleiten.

  • Hybride Konnektivität — Eine private Verbindung zwischen Ihrer VPC und der lokalen Umgebung ist erforderlich. Sie können AWS Direct Connect, AWS Site-to-Site VPN oder Ihre eigene VPN-Lösung verwenden. Weitere Informationen finden Sie unter Vorbereitung der Vernetzung für Hybridknoten.

  • VXLAN-Verkehr zulässig — Die Sicherheitsgruppen, die den Gateway-EC2-Instances zugeordnet sind, müssen eingehenden und ausgehenden UDP-Verkehr auf Port 8472 zulassen. Auf der Seite des Hybridknotens müssen die lokalen Firewallregeln auch UDP-Port 8472-Verkehr zu und von den IP-Adressen der Gateway-Knoten zulassen.

  • IAM-Berechtigungen für die Verwaltung von Routing-Tabellen — Das Gateway benötigt die folgenden EC2-Aktionen, um VPC-Routing-Tabellen zu verwalten:

    • ec2:DescribeRouteTables

    • ec2:CreateRoute

    • ec2:ReplaceRoute

    • ec2:DescribeInstances

      Sie können diese Berechtigungen auf eine der folgenden Arten gewähren:

      EKS Pod Identity (recommended)

      Verwenden Sie EKS Pod Identity, um nur dem Dienstkonto des Gateway-Pods Berechtigungen zu erteilen.

      1. Installieren Sie das EKS Pod Identity Agent-Add-On auf Ihrem Cluster, falls es noch nicht installiert ist:

        aws eks create-addon \ --cluster-name CLUSTER_NAME \ --addon-name eks-pod-identity-agent
      2. Erstellen Sie eine IAM-Rolle mit den erforderlichen EC2-Berechtigungen und einer Vertrauensrichtlinie für EKS Pod Identity:

        cat > gateway-trust-policy.json << 'EOF' { "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": ["sts:AssumeRole", "sts:TagSession"] } ] } EOF aws iam create-role \ --role-name EKSHybridNodesGatewayRole \ --assume-role-policy-document file://gateway-trust-policy.json aws iam put-role-policy \ --role-name EKSHybridNodesGatewayRole \ --policy-name HybridNodesGatewayRouteTable \ --policy-document '{ "Version": "2012-10-17" , "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeRouteTables", "ec2:CreateRoute", "ec2:ReplaceRoute", "ec2:DescribeInstances" ], "Resource": "*" }] }'
      3. Erstellen Sie eine Pod-Identitätszuordnung, die die IAM-Rolle mit dem Gateway-Dienstkonto verknüpft:

        aws eks create-pod-identity-association \ --cluster-name CLUSTER_NAME \ --namespace eks-hybrid-nodes-gateway \ --service-account eks-hybrid-nodes-gateway \ --role-arn arn:aws:iam::ACCOUNT_ID:role/EKSHybridNodesGatewayRole
      Node IAM role

      Fügen Sie der IAM-Rolle, die dem Instanzprofil der Gateway-Knoten zugeordnet ist, eine Inline- oder verwaltete Richtlinie mit den erforderlichen Berechtigungen hinzu:

      aws iam put-role-policy \ --role-name NODE_ROLE_NAME \ --policy-name HybridNodesGatewayRouteTable \ --policy-document '{ "Version": "2012-10-17" , "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeRouteTables", "ec2:CreateRoute", "ec2:ReplaceRoute", "ec2:DescribeInstances" ], "Resource": "*" }] }'

      Alle Pods auf den Gateway-Knoten werden über diese Berechtigungen verfügen.

  • Automatischer EKS-Modus (wenn Sie den automatischen Modus für Gateway-Knoten verwenden) — Wenn Sie den EKS-Automatikmodus zur Bereitstellung von Gateway-Knoten verwenden möchten, muss der automatische Modus auf Ihrem EKS-Cluster aktiviert sein. Weitere Informationen finden Sie unter Aktivieren des EKS-Automatikmodus.

Bereiten Sie Gateway-Knoten vor

Das Gateway benötigt für eine hohe Verfügbarkeit mindestens zwei EC2-Knoten. Es gibt zwei unterstützte Knotenkonfigurationsoptionen für das Gateway:

  • Automatischer EKS-Modus (empfohlen)— Knoten werden automatisch mit einem NodePool und NodeClass bereitgestellt. Source/destination Check, Labels und Taints sind alle deklarativ konfiguriert.

  • Verwaltete Knotengruppen— Sie stellen Knoten mithilfe einer verwalteten Knotengruppe oder selbstverwalteter Knoten bereit. Labels können über die API für verwaltete Knotengruppen konfiguriert werden, und die source/destination Überprüfung kann mithilfe einer benutzerdefinierten Startvorlage mit Benutzerdaten deaktiviert werden.

Automatischer EKS-Modus (empfohlen)

Wenn Sie den EKS-Automatikmodus verwenden, müssen Sie NodeClass vor der Installation des Helm-Diagramms ein NodePool und erstellen. Dadurch werden NodePool EC2-Instances mit den richtigen Labels, Taints und der korrekten source/destination Prüfkonfiguration ausgestattet. Sie müssen Knoten nicht manuell bereitstellen oder konfigurieren.

Wenden Sie die folgenden Ressourcen auf Ihren Cluster an und ersetzen Sie dabei die Platzhalterwerte:

  • YOUR_NODE_ROLE— Der Name der Node-IAM-Rolle, die vom EKS Auto Mode zur Bereitstellung von Knoten verwendet wird. Dies ist die Rolle, die Sie konfiguriert (oder die EKS erstellt hat), als Sie den automatischen Modus auf dem Cluster aktiviert haben. Weitere Informationen finden Sie unter Erstellen einer Node-IAM-Rolle für den automatischen EKS-Modus.

  • YOUR_CLUSTER_NAME— Ihr EKS-Clustername.

  • SUBNET_ID_1, SUBNET_ID_2 — Subnetz-IDs in verschiedenen Availability Zones, in denen Gateway-Knoten bereitgestellt werden.

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: hybrid-gateway spec: advancedNetworking: sourceDestCheck: DisabledPrimaryENI role: YOUR_NODE_ROLE securityGroupSelectorTerms: - tags: aws:eks:cluster-name: YOUR_CLUSTER_NAME subnetSelectorTerms: - id: SUBNET_ID_1 - id: SUBNET_ID_2 --- apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: hybrid-gateway spec: template: metadata: labels: hybrid-gateway-node: "true" spec: expireAfter: 336h nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: hybrid-gateway requirements: - key: karpenter.sh/capacity-type operator: In values: - on-demand - key: eks.amazonaws.com/instance-category operator: In values: - c - m - r - key: eks.amazonaws.com/instance-generation operator: Gt values: - "4" - key: kubernetes.io/arch operator: In values: - amd64 - key: kubernetes.io/os operator: In values: - linux taints: - key: hybrid-gateway-node effect: NoSchedule terminationGracePeriod: 24h0m0s disruption: budgets: - nodes: 10% consolidateAfter: 30s consolidationPolicy: WhenEmptyOrUnderutilized

Schlüsselfelder in dieser Konfiguration:

  • advancedNetworking.sourceDestCheck: DisabledPrimaryENI— Deaktiviert die source/destination EC2-Prüfung auf der primären ENI des Knotens, sodass das Gateway Datenverkehr weiterleiten kann, der nicht an sich selbst adressiert ist.

  • taints— Dieser Fehler hybrid-gateway-node: NoSchedule stellt sicher, dass nur Gateway-Pods auf diesen Knoten über einen entsprechenden Toleranzplan verfügen.

  • labels— Das hybrid-gateway-node: "true" Label wird von der Knotenauswahl des Helm-Diagramms verwendet, um Gateway-Pods auf diese Knoten auszurichten.

  • nodeClassRef— Verbindet NodePool die NodeClass mit der source/destination Prüfkonfiguration.

Verwaltete Knotengruppen

Wenn Sie verwaltete Knotengruppen verwenden, erstellen Sie eine spezielle Knotengruppe für das Gateway mit den erforderlichen Labels, Taints und einer benutzerdefinierten Startvorlage, die die source/destination Überprüfung beim Start deaktiviert.

Schritt 1: Eine Startvorlage erstellen

Erstellen Sie eine Startvorlage mit Benutzerdaten, die die source/destination Überprüfung auf der primären ENI beim Starten der Instance deaktiviert:

# Create the launch template with user data to disable source/dest check USERDATA=$(cat <<'SCRIPT' | base64 -w 0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==BOUNDARY==" --==BOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \ -H "X-aws-ec2-metadata-token-ttl-seconds: 60") MAC=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ http://169.254.169.254/latest/meta-data/mac) ENI_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ "http://169.254.169.254/latest/meta-data/network/interfaces/macs/${MAC}/interface-id") REGION=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ http://169.254.169.254/latest/meta-data/placement/region) aws ec2 modify-network-interface-attribute \ --network-interface-id "$ENI_ID" \ --no-source-dest-check \ --region "$REGION" --==BOUNDARY==-- SCRIPT ) aws ec2 create-launch-template \ --launch-template-name YOUR_CLUSTER_NAME-gateway-lt \ --launch-template-data "{\"UserData\":\"${USERDATA}\",\"MetadataOptions\":{\"HttpTokens\":\"required\",\"HttpPutResponseHopLimit\":2}}"
Anmerkung

Die IAM-Rolle des Knotens muss über die ec2:ModifyNetworkInterfaceAttribute entsprechende Berechtigung verfügen, damit das Benutzerdatenskript erfolgreich ausgeführt werden kann. Das mehrteilige MIME-Format stellt sicher, dass die Benutzerdaten zusammen mit dem EKS-Bootstrap-Skript ausgeführt werden.

Schritt 2: Erstellen Sie die verwaltete Knotengruppe

Erstellen Sie eine dedizierte verwaltete Knotengruppe mit dem Gateway-Label, Taint und der Startvorlage aus Schritt 1:

aws eks create-nodegroup \ --cluster-name YOUR_CLUSTER_NAME \ --nodegroup-name YOUR_CLUSTER_NAME-gateway-nodes \ --subnets SUBNET_ID_1 SUBNET_ID_2 \ --node-role YOUR_NODE_ROLE_ARN \ --instance-types INSTANCE_TYPE \ --ami-type AL2023_x86_64_STANDARD \ --scaling-config desiredSize=2,maxSize=2,minSize=2 \ --labels hybrid-gateway-node=true \ --taints "key=hybrid-gateway-node,effect=NO_SCHEDULE" \ --launch-template "name=YOUR_CLUSTER_NAME-gateway-lt,version=1"

Dadurch wird eine verwaltete Knotengruppe mit 2 Knoten erstellt, in der:

  • --labelslegt festhybrid-gateway-node=true, dass der Knotenselektor des Helm-Diagramms auf diese Knoten abzielt.

  • --taintsfügt einen NoSchedule Makel hinzu, sodass nur Gateway-Pods mit einem entsprechenden Toleranzplan auf diesen Knoten verwendet werden.

  • --launch-templatehängt die Startvorlage an, die die Überprüfung beim Systemstart deaktiviert source/destination .

Verwenden Sie Subnetze in verschiedenen Availability Zones für hohe Verfügbarkeit.

Installation mit Helm

EKS Auto Mode

Führen Sie den folgenden Befehl aus, um das Gateway mit dem EKS-Automatikmodus zu installieren:

helm install eks-hybrid-nodes-gateway \ oci://public.ecr.aws/eks/eks-hybrid-nodes-gateway \ --version 1.0.0 \ --namespace eks-hybrid-nodes-gateway \ --create-namespace \ --set vpcCIDR=VPC_CIDR \ --set podCIDRs=POD_CIDRS \ --set routeTableIDs=ROUTE_TABLE_IDS

Verwaltete Knotengruppen oder selbstverwaltete Knoten

Legen Sie für verwaltete Knotengruppen oder selbstverwaltete Knoten Folgendes fest: autoMode.enabled=false

helm install eks-hybrid-nodes-gateway \ oci://public.ecr.aws/eks/eks-hybrid-nodes-gateway \ --version 1.0.0 \ --namespace eks-hybrid-nodes-gateway \ --create-namespace \ --set autoMode.enabled=false \ --set vpcCIDR=VPC_CIDR \ --set podCIDRs=POD_CIDRS \ --set routeTableIDs=ROUTE_TABLE_IDS

Erforderliche Helm-Werte

Die folgenden Werte sind für alle Installationen erforderlich:

Wert Description

vpcCIDR

Der CIDR-Block Ihrer EKS-Cluster-VPC (z. B.10.0.0.0/16). Wird für die Cilium-VTEP-Konfiguration verwendet, sodass Hybridknoten den Verkehr über das Gateway weiterleiten VPC-bound .

podCIDRs

Comma-separated Liste der Pod-CIDRs, die von Cilium auf Hybridknoten verwendet werden (z. B.). 10.100.0.0/16,10.101.0.0/16 Das Gateway erstellt VPC-Routentabelleneinträge und VXLAN-Routen für diese CIDRs.

routeTableIDs

Comma-separated Liste der zu VPC VPC-Routentabellen-IDs (z. B.rtb-0abc1234def567890,rtb-0fed9876cba543210). Das Gateway erstellt in diesen Tabellen Routen, die Hybrid-Pod-CIDRs auf die aktive Gateway-Instanz verweisen.

Eine vollständige Liste der konfigurierbaren Werte finden Sie unterReferenz zur Konfiguration des Amazon EKS Hybrid Nodes Gateways.

Überprüfen der Installation

Stellen Sie nach der Installation des Gateways sicher, dass es läuft und fehlerfrei ist.

Überprüfen Sie den Pod-Status

Vergewissern Sie sich, dass zwei Gateway-Pods laufen:

kubectl get pods -n eks-hybrid-nodes-gateway

Sie sollten eine Ausgabe sehen, die der folgenden ähnelt:

NAME READY STATUS RESTARTS AGE eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 1/1 Running 0 2m eks-hybrid-nodes-gateway-5d4f6a7b8c-def34 1/1 Running 0 2m

Überprüfen Sie die Wahl des Vorsitzenden

Vergewissern Sie sich, dass ein Pod den Leasingvertrag für die Wahl des Leiters erworben hat:

kubectl get lease -n eks-hybrid-nodes-gateway

Die Ausgabe zeigt den aktuellen Leader in der HOLDER Spalte:

NAME HOLDER AGE hybrid-gateway-leader eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 2m

Überprüfen Sie den Integritätsendpunkt

Stellen Sie mithilfe von Portweiterleitung sicher, dass der Integritätsendpunkt auf dem Leader-Pod reagiert:

kubectl port-forward -n eks-hybrid-nodes-gateway LEADER_POD_NAME 8088:8088 & curl -s http://localhost:8088/healthz

Ein fehlerfreies Gateway gibt eine HTTP 200-Antwort zurück.

Überprüfen Sie die Einträge in der VPC-Routentabelle

Vergewissern Sie sich in der Amazon VPC-Konsole oder mithilfe der AWS CLI, dass Ihre VPC-Routing-Tabellen Einträge für die Hybrid-Pod-CIDRs enthalten, die auf die ENI der Leader-Gateway-Instance verweisen:

aws ec2 describe-route-tables \ --route-table-ids ROUTE_TABLE_ID \ --query "RouteTables[].Routes[?DestinationCidrBlock=='[.replaceable]`POD_CIDR`']"

Jeder Hybrid-Pod-CIDR sollte über eine Route verfügen, auf der die Verbindung zur primären ENI der Leader-Instance NetworkInterfaceId festgelegt ist.

Deinstallieren

Um das Hybrid Nodes Gateway zu entfernen, führen Sie folgenden Befehl aus:

helm uninstall eks-hybrid-nodes-gateway --namespace eks-hybrid-nodes-gateway
Anmerkung

Durch die Deinstallation des Helm-Diagramms werden die vom Gateway erstellten VPC-Routentabelleneinträge nicht automatisch entfernt. Löschen Sie nach der Deinstallation manuell die Routen für Ihre Hybrid-Pod-CIDRs aus den VPC-Routentabellen, um zu vermeiden, dass der Datenverkehr zu Instances weitergeleitet wird, die das Gateway nicht mehr ausführen. Sie können Routen mit der AWS CLI entfernen:

aws ec2 delete-route \ --route-table-id ROUTE_TABLE_ID \ --destination-cidr-block POD_CIDR

Nächste Schritte