Steuern Sie den Netzwerkzugriff auf den API Clusterserver-Endpunkt - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle 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.

Steuern Sie den Netzwerkzugriff auf den API Clusterserver-Endpunkt

In diesem Thema können Sie den privaten Zugriff für den Kubernetes API Serverendpunkt Ihres EKS Amazon-Clusters aktivieren und den öffentlichen Zugriff über das Internet einschränken oder ganz deaktivieren.

Wenn Sie einen neuen Cluster erstellen, EKS erstellt Amazon einen Endpunkt für den verwalteten Kubernetes API Server, den Sie für die Kommunikation mit Ihrem Cluster verwenden (mithilfe von Kubernetes Verwaltungstools wiekubectl). Standardmäßig ist dieser API Serverendpunkt im Internet öffentlich zugänglich, und der Zugriff auf den API Server wird durch eine Kombination aus AWS Identity and Access Management (IAM) und systemeigener Kubernetes rollenbasierter Zugriffskontrolle (RBAC) gesichert.

Sie können den privaten Zugriff auf den Kubernetes API Server aktivieren, sodass die gesamte Kommunikation zwischen Ihren Knoten und dem API Server innerhalb Ihres Servers bleibtVPC. Sie können die IP-Adressen einschränken, die über das Internet auf Ihren API Server zugreifen können, oder den Internetzugang zum API Server vollständig deaktivieren.

Anmerkung

Da dieser Endpunkt für den Kubernetes API Server und kein herkömmlicher AWS PrivateLink Endpunkt für die Kommunikation mit einem ist AWS API, wird er in der VPC Amazon-Konsole nicht als Endpunkt angezeigt.

Wenn Sie den privaten Endpunktzugriff für Ihren Cluster aktivieren, EKS erstellt Amazon in Ihrem Namen eine private gehostete Route 53-Zone und ordnet sie der Ihres Clusters zuVPC. Diese privat gehostete Zone wird von Amazon EKS verwaltet und erscheint nicht in den Route 53-Ressourcen Ihres Kontos. Damit die privat gehostete Zone den Datenverkehr ordnungsgemäß an Ihren API Server weiterleiten kann, VPC müssen Sie über eine entsprechende enableDnsSupport Einstellung verfügen enableDnsHostnames und die für Sie festgelegten DHCP Optionen VPC müssen AmazonProvidedDNS in der Liste der Domainnamenserver enthalten sein. true Weitere Informationen finden Sie unter DNSSupport für Sie aktualisieren VPC im VPCAmazon-Benutzerhandbuch.

Sie können Ihre Anforderungen für den Zugriff auf API Serverendpunkte definieren, wenn Sie einen neuen Cluster erstellen, und Sie können den API Serverendpunktzugriff für einen Cluster jederzeit aktualisieren.

Ändern des Cluster-Endpunktzugriffs

Verwenden Sie die Verfahren in diesem Abschnitt, um den Endpunktzugriff für einen bestehenden Cluster zu ändern. Die folgende Tabelle zeigt die unterstützten Kombinationen für den Zugriff auf API Serverendpunkte und das zugehörige Verhalten.

Endpunkt für öffentlichen Zugriff Endpunkt für privaten Zugriff Behavior
Enabled Disabled
  • Dies ist das Standardverhalten für neue EKS Amazon-Cluster.

  • KubernetesAPIAnfragen, die aus Ihrem Cluster stammen VPC (z. B. die Kommunikation zwischen Knoten und Kontrollebene), verlassen VPC zwar das Netzwerk von Amazon, aber nicht das Netzwerk von Amazon.

  • Ihr API Cluster-Server ist über das Internet zugänglich. Sie können optional die CIDR Blöcke einschränken, die auf den öffentlichen Endpunkt zugreifen können. Wenn Sie den Zugriff auf bestimmte CIDR Blöcke beschränken, wird empfohlen, auch den privaten Endpunkt zu aktivieren oder sicherzustellen, dass die von Ihnen angegebenen CIDR Blöcke die Adressen enthalten, von denen Knoten und Fargate Pods (falls Sie sie verwenden) auf den öffentlichen Endpunkt zugreifen.

Aktiviert Aktiviert
  • KubernetesAPIAnfragen innerhalb Ihres Clusters VPC (z. B. die Kommunikation zwischen Knoten und Kontrollebene) verwenden den privaten VPC Endpunkt.

  • Ihr API Cluster-Server ist über das Internet zugänglich. Sie können optional die CIDR Blöcke einschränken, die auf den öffentlichen Endpunkt zugreifen können.

Disabled Aktiviert
  • Der gesamte Datenverkehr zu Ihrem API Clusterserver muss aus Ihrem Cluster VPC oder einem verbundenen Netzwerk stammen.

  • Es gibt keinen öffentlichen Zugriff auf Ihren API Server über das Internet. Alle kubectl Befehle müssen aus dem Netzwerk VPC oder einem verbundenen Netzwerk stammen. Die Verbindungsoptionen finden Sie unter Zugriff auf einen Server, der nur privat ist API.

  • Der API Serverendpunkt des Clusters wird von öffentlichen DNS Servern in eine private IP-Adresse von aufgelöstVPC. In der Vergangenheit konnte der Endpunkt nur innerhalb von aufgelöst werdenVPC.

    Wenn Ihr Endpunkt nicht zu einer privaten IP-Adresse innerhalb eines vorhandenen Clusters aufgelöst wird, können Sie: VPC

    • Den öffentlichen Zugriff aktivieren und ihn dann erneut deaktivieren. Sie müssen dies nur einmal für einen Cluster tun und der Endpunkt wird von diesem Punkt an zu einer privaten IP-Adresse aufgelöst.

    • Aktualisieren Sie Ihren Cluster.

Sie können Ihren API Clusterserver-Endpunktzugriff mit dem AWS Management Console oder ändern AWS CLI.

AWS Management Console
Um Ihren API Clusterserver-Endpunktzugriff zu ändern, verwenden Sie den AWS Management Console
  1. Öffnen Sie die EKS Amazon-Konsole unter https://console.aws.amazon.com/eks/home#/clusters.

  2. Wählen Sie den Namen des Clusters aus, um Ihre Cluster-Informationen anzuzeigen.

  3. Wählen Sie auf der Registerkarte Networking (Netzwerk) die Option Update (Aktualisieren) aus.

  4. Wählen Sie für den privaten Zugriff aus, ob Sie den privaten Zugriff für den Serverendpunkt Ihres Kubernetes API Clusters aktivieren oder deaktivieren möchten. Wenn Sie den privaten Zugriff aktivieren, VPC verwenden Kubernetes API Anfragen, die von Ihrem Cluster stammen, den privaten VPC Endpunkt. Sie müssen den privaten Zugriff aktivieren, um den öffentlichen Zugriff zu deaktivieren.

  5. Wählen Sie für den öffentlichen Zugriff aus, ob Sie den öffentlichen Zugriff für den Kubernetes API Serverendpunkt Ihres Clusters aktivieren oder deaktivieren möchten. Wenn Sie den öffentlichen Zugriff deaktivieren, kann der Kubernetes API Server Ihres Clusters nur Anfragen aus dem Cluster empfangenVPC.

  6. (Optional) Wenn Sie Öffentlicher Zugriff aktiviert haben, können Sie angeben, welche Adressen aus dem Internet mit dem öffentlichen Endpunkt kommunizieren können. Wählen Sie Erweiterte Einstellungen aus. Geben Sie einen CIDR Block ein, z. 203.0.113.5/32 B. Der Block darf keine reservierten Adressen enthalten. Sie können zusätzliche Blöcke eingeben, indem Sie Quelle hinzufügen auswählen. Es gibt eine maximale Anzahl von CIDR Blöcken, die Sie angeben können. Weitere Informationen finden Sie unter Amazon EKS und Fargate Service-Kontingente anzeigen und verwalten. Wenn Sie keine Blöcke angeben, empfängt der Endpunkt des öffentlichen API Servers Anfragen von allen (0.0.0.0/0) IP-Adressen. Wenn Sie den Zugriff auf Ihren öffentlichen Endpunkt mithilfe von CIDR Blöcken einschränken, wird empfohlen, auch den privaten Endpunktzugriff zu aktivieren, damit Knoten und Fargate Pods (falls Sie sie verwenden) mit dem Cluster kommunizieren können. Wenn der private Endpunkt nicht aktiviert ist, müssen Ihre CIDR Endpunktquellen für den öffentlichen Zugriff die Ausgangsquellen von Ihrem enthalten. VPC Wenn Sie beispielsweise einen Knoten in einem privaten Subnetz haben, der über ein NAT Gateway mit dem Internet kommuniziert, müssen Sie die ausgehende IP-Adresse des NAT Gateways als Teil eines zulässigen CIDR Blocks auf Ihrem öffentlichen Endpunkt hinzufügen.

  7. Wählen Sie zum Abschluss Update (Aktualisieren) aus.

AWS CLI
Um Ihren API Clusterserver-Endpunktzugriff mit dem zu ändern AWS CLI

Führen Sie die folgenden Schritte mit der AWS CLI Version 1.27.160 oder höher aus. Sie können Ihre aktuelle Version mit aws --version überprüfen. Informationen zur Installation oder zum AWS CLI Upgrade von finden Sie unter Installation von AWS CLI.

  1. Aktualisieren Sie Ihren API Clusterserver-Endpunktzugriff mit dem folgenden AWS CLI Befehl. Verwenden Ihre eigenen Werte für den Clusternamen und den gewünschten Endpunkt. Wenn Sie dies festlegenendpointPublicAccess=true, können Sie (optional) einen einzelnen CIDR Block oder eine durch Kommas getrennte Liste von CIDR Blöcken für eingeben. publicAccessCidrs Die Blöcke dürfen keine reservierten Adressen enthalten. Wenn Sie CIDR Blöcke angeben, empfängt der öffentliche API Server-Endpunkt nur Anfragen von den aufgelisteten Blöcken. Es gibt eine maximale Anzahl von CIDR Blöcken, die Sie angeben können. Weitere Informationen finden Sie unter Amazon EKS und Fargate Service-Kontingente anzeigen und verwalten. Wenn Sie den Zugriff auf Ihren öffentlichen Endpunkt mithilfe von CIDR Blöcken einschränken, wird empfohlen, auch den privaten Endpunktzugriff zu aktivieren, damit Knoten und Fargate Pods (falls Sie sie verwenden) mit dem Cluster kommunizieren können. Wenn der private Endpunkt nicht aktiviert ist, müssen Ihre CIDR Endpunktquellen für den öffentlichen Zugriff die Ausgangsquellen von Ihrem enthalten. VPC Wenn Sie beispielsweise einen Knoten in einem privaten Subnetz haben, der über ein NAT Gateway mit dem Internet kommuniziert, müssen Sie die ausgehende IP-Adresse des NAT Gateways als Teil eines zulässigen CIDR Blocks auf Ihrem öffentlichen Endpunkt hinzufügen. Wenn Sie keine CIDR Blöcke angeben, empfängt der öffentliche API Server-Endpunkt Anfragen von allen IP-Adressen (0.0.0.0/0).

    Anmerkung

    Der folgende Befehl ermöglicht privaten und öffentlichen Zugriff von einer einzigen IP-Adresse für den API Serverendpunkt aus. 203.0.113.5/32Ersetzen Sie ihn durch einen einzelnen CIDR Block oder eine durch Kommas getrennte Liste von CIDR Blöcken, auf die Sie den Netzwerkzugriff beschränken möchten.

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

    Eine Beispielausgabe sieht wie folgt aus.

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }
  2. Überwachen Sie den Status des aktualisierten Endpunktzugriffs mit dem folgenden Befehl unter Verwendung des Cluster-Namens und der Update-ID, die vom vorherigen Befehl zurückgegeben wurden. Ihre Aktualisierung ist abgeschlossen, wenn als Status Successful angezeigt wird.

    aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

    Eine Beispielausgabe sieht wie folgt aus.

    { "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] } }

Zugriff auf einen Server, der nur privat ist API

Wenn Sie den öffentlichen Zugriff für den Kubernetes API Serverendpunkt Ihres Clusters deaktiviert haben, können Sie nur von Ihrem Netzwerk VPC oder einem verbundenen Netzwerk aus auf den API Server zugreifen. Hier sind einige Möglichkeiten, auf den Kubernetes API Serverendpunkt zuzugreifen:

Verbundenes Netzwerk

Connect Sie Ihr Netzwerk über ein AWS Transit-Gateway oder eine andere Verbindungsoption VPC mit dem und verwenden Sie dann einen Computer im verbundenen Netzwerk. Sie müssen sicherstellen, dass Ihre Amazon EKS Control Plane-Sicherheitsgruppe Regeln enthält, die eingehenden Datenverkehr über Port 443 von Ihrem verbundenen Netzwerk zulassen.

Gastgeber bei Amazon EC2 Bastion

Sie können eine EC2 Amazon-Instance in einem öffentlichen Subnetz in Ihrem Cluster starten VPC und sich dann über diese Instance SSH anmelden, um kubectl Befehle auszuführen. Weitere Informationen finden Sie unter Linux-Bastion-Hosts in AWS. Sie müssen sicherstellen, dass Ihre Amazon EKS Control Plane-Sicherheitsgruppe Regeln enthält, die eingehenden Datenverkehr auf Port 443 von Ihrem Bastion-Host zulassen. Weitere Informationen finden Sie unter EKSAmazon-Sicherheitsgruppenanforderungen für Cluster anzeigen.

Achten Sie bei der Konfiguration kubectl für Ihren Bastion-Host darauf, AWS Anmeldeinformationen zu verwenden, die bereits der RBAC Konfiguration Ihres Clusters zugeordnet sind, oder fügen Sie den IAMPrincipal, den Ihre Bastion verwenden wird, zur RBAC Konfiguration hinzu, bevor Sie den öffentlichen Zugriff auf Endgeräte entfernen. Weitere Informationen erhalten Sie unter IAMBenutzern und Rollen Zugriff auf Kubernetes gewähren APIs und Nicht autorisiert oder Zugriff verweigert (kubectl).

AWS Cloud9 IDE

AWS Cloud9 ist eine cloudbasierte integrierte Entwicklungsumgebung (IDE), mit der Sie Ihren Code mit nur einem Browser schreiben, ausführen und debuggen können. Sie können eine AWS Cloud9 IDE in Ihren Clustern erstellen VPC und diese verwendenIDE, um mit Ihrem Cluster zu kommunizieren. Weitere Informationen finden Sie unter Erstellen einer Umgebung in AWS Cloud9. Sie müssen sicherstellen, dass Ihre Amazon EKS Control Plane-Sicherheitsgruppe Regeln enthält, die eingehenden Datenverkehr auf Port 443 von Ihrer IDE Sicherheitsgruppe zulassen. Weitere Informationen finden Sie unter EKSAmazon-Sicherheitsgruppenanforderungen für Cluster anzeigen.

Achten Sie bei der Konfiguration kubectl darauf AWS Cloud9 IDE, AWS Anmeldeinformationen zu verwenden, die bereits der RBAC Konfiguration Ihres Clusters zugeordnet sind, oder fügen Sie den IAM Principal, den Sie verwenden möchten, zur RBAC Konfiguration hinzu, bevor Sie den öffentlichen Zugriff auf Endgeräte entfernen. IDE Weitere Informationen erhalten Sie unter IAMBenutzern und Rollen Zugriff auf Kubernetes gewähren APIs und Nicht autorisiert oder Zugriff verweigert (kubectl).