Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
Bereitstellung privater Cluster mit eingeschränktem Internetzugang
Dieses Thema beschreibt, wie Sie einen Amazon-EKS-Cluster bereitstellen, der in der AWS Cloud bereitgestellt ist, aber keinen ausgehenden Internetzugriff hat. Wenn Sie einen lokalen Cluster in AWS Outposts haben, lesen Sie Erstellung von Amazon-Linux-Knoten in AWS Outposts anstelle dieses Themas.
Wenn Sie mit dem Amazon-EKS-Netzwerk nicht vertraut sind, finden Sie unter Entmystifizierung von Cluster-Netzwerken für Amazon-EKS-Worker-Knoten
Anforderungen an die Cluster-Architektur
-
Ihr Cluster muss Images von einer Container-Registry in Ihrer VPC abrufen. Sie können eine Amazon Elastic Container Registry in Ihrer VPC erstellen und Container-Images dorthin kopieren, damit Ihre Knoten daraus abrufen können. Weitere Informationen finden Sie unter Kopieren eines Container-Images von einem Repository in ein anderes.
-
In Ihrem Cluster muss der private Endpunkt-Zugriff aktiviert sein. Dies ist erforderlich, damit sich Knoten beim Cluster-Endpunkt registrieren können. Der Endpunkt für öffentlichen Zugriff ist optional. Weitere Informationen finden Sie unter Cluster-API-Server-Endpunkt.
Knoten-Anforderungen
-
Selbstverwaltete Linux- und Windows-Knoten müssen die folgenden Bootstrap-Argumente enthalten, bevor sie gestartet werden. Diese Argumente umgehen die Amazon-EKS-Introspektion und erfordern keinen Zugriff auf die Amazon-EKS-API innerhalb der VPC.
-
Bestimmen Sie den Wert des Endpunkts Ihres Clusters mit dem folgenden Befehl. Ersetzen Sie
my-clusterdurch den Namen Ihres Clusters.aws eks describe-cluster --name my-cluster --query cluster.endpoint --output textEine Beispielausgabe sieht wie folgt aus.
https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com -
Bestimmen Sie den Wert der Zertifizierungsstelle Ihres Clusters mit dem folgenden Befehl. Ersetzen Sie
my-clusterdurch den Namen Ihres Clusters.aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output textDie zurückgegebene Ausgabe ist eine lange Zeichenfolge.
-
Ersetzen Sie
cluster-endpointundcertificate-authorityin den folgenden Befehlen durch die Werte, die in der Ausgabe der vorherigen Befehle zurückgegeben wurden. Weitere Informationen zur Angabe von Bootstrap-Argumenten beim Start von selbstverwalteten Knoten finden Sie unter Selbstverwaltete Amazon-Linux-Knoten erstellen und Selbstverwaltete Microsoft-Windows-Knoten erstellen.-
Für Linux-Knoten:
--apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authorityWeitere Argumente finden Sie im Bootstrap-Skript
auf GitHub. -
Für Windows-Knoten:
Anmerkung
Wenn Sie CIDR für den benutzerdefinierten Service verwenden, müssen Sie diesen mithilfe des
-ServiceCIDR-Parameters angeben. Andernfalls schlägt die DNS-Auflösung für Pods im Cluster fehl.-APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authorityWeitere Argumente finden Sie unter Bootstrap-Skript-Konfigurationsparameter.
-
-
-
Das
aws-authConfigMapIhres Clusters muss innerhalb Ihrer VPC erstellt werden. Weitere Informationen zum Erstellen und Hinzufügen von Einträgen zuaws-authConfigMaperhalten Sie durch Eingabe voneksctl create iamidentitymapping --helpin Ihrem Terminal. FallsConfigMapauf Ihrem Server nicht vorhanden ist, wird es voneksctlerstellt, wenn Sie den Befehl zum Hinzufügen einer Identitätszuordnung verwenden.
Pod-Anforderungen
-
Pod Identity – Mit EKS Pod Identity konfigurierte Pods erhalten Anmeldeinformationen von der EKS-Auth-API. Wenn kein ausgehender Internetzugang vorhanden ist, müssen Sie einen VPC-Endpunkt für die EKS-Auth-API erstellen und verwenden:
com.amazonaws.region-code.eks-auth. Weitere Informationen zu den EKS- und EKS-Auth-VPC-Endpunkten finden Sie unter Zugriff auf Amazon EKS über AWS PrivateLink -
IRSA – Pods, die mit IAM-Rollen für Servicekonten konfiguriert sind, erhalten Anmeldeinformationen über einen Aufruf der AWS-Sicherheitstoken-Service (AWS STS)-API. Wenn kein ausgehender Internetzugang vorhanden ist, müssen Sie einen AWS-STS-VPC-Endpunkt in Ihrer VPC erstellen und verwenden. Die meisten AWS-
v1-SDKs verwenden standardmäßig den globalen AWS-STS-Endpunkt (sts.amazonaws.com), der nicht den AWS-STS-VPC-Endpunkt benutzt. Um den AWS-STS-VPC-Endpunkt zu verwenden, müssen Sie möglicherweise Ihr SDK für die Verwendung des regionalen AWS-STS-Endpunkts konfigurieren (sts.). Weitere Informationen finden Sie unter Konfiguration des Endpunkts des AWS-Sicherheitstoken-Service für ein Servicekonto.region-code.amazonaws.com -
Die VPC-Subnetze Ihres Clusters müssen über einen VPC-Schnittstellenendpunkt für alle AWS-Services verfügen, auf die Ihre Pods Zugriff benötigen. Weitere Informationen finden Sie unter Zugriff auf einen AWS-Service über einen Schnittstellen-VPC-Endpunkt. Einige häufig verwendete Services und Endpunkte sind in der folgenden Tabelle aufgeführt. Eine vollständige Liste der Endpunkte finden Sie unter AWS-Services, die in AWS PrivateLink integriert sind im AWS-PrivateLink-Handbuch.
Wir empfehlen, private DNS-Namen für Ihre VPC-Endpunkte zu aktivieren, damit Workloads weiterhin problemlos öffentliche AWS-Service-Endpunkte nutzen können.
Service Endpunkt Amazon EC2
com.amazonaws.
region-code.ec2Amazon Elastic Container Registry (zum Abrufen von Container-Images)
com.amazonaws.
region-code.ecr.api, com.amazonaws.region-code.ecr.dkr, and com.amazonaws.region-code.s3Amazon Application Load Balancers und Network Load Balancers
com.amazonaws.
region-code.elasticloadbalancing(Optional) AWS X-Ray (erforderlich für die Nachverfolgung an AWS X-Ray)
com.amazonaws.
region-code.xray(Optional) Amazon SSM (erforderlich für den SSM-Agenten für Knoten-Verwaltungsaufgaben. Alternative zu SSH)
com.amazonaws.
region-code.ssmAmazon CloudWatch Logs (erforderlich für Knoten- und Pod-Protokolle, die an Amazon CloudWatch Logs gesendet werden)
com.amazonaws.
region-code.logsAWS-Sicherheitstoken-Service (erforderlich bei Verwendung von IAM-Rollen für Servicekonten)
com.amazonaws.
region-code.stsAmazon-EKS-Authentifizierung (erforderlich bei Verwendung von Pod-Identity-Zuordnungen)
com.amazonaws.
region-code.eks-authAmazon EKS
com.amazonaws.
region-code.eks -
Alle selbstverwalteten Knoten müssen in Subnetzen bereitgestellt werden, die über die von Ihnen benötigten VPC-Schnittstellenendpunkte verfügen. Wenn Sie eine verwaltete Knotengruppe erstellen, muss die Endpunktsicherheitsgruppe der VPC-Schnittstelle das CIDR für die Subnetze zulassen, oder Sie müssen die erstellte Knotensicherheitsgruppe zur Endpunktsicherheitsgruppe der VPC-Schnittstelle hinzufügen.
-
EFS-Speicher – Wenn Ihre Pods Amazon EFS-Volumes verwenden, muss vor der Bereitstellung des Speichers eines elastischen Dateisystems mit Amazon EFS die Datei kustomization.yaml
des Treibers geändert werden, um die Container-Images so einzustellen, dass sie dieselbe AWS-Region wie der Amazon-EKS-Cluster verwenden. -
Route53 unterstützt AWS PrivateLink nicht. Es ist nicht möglich, Route53-DNS-Einträge von einem privaten Amazon-EKS-Cluster aus zu verwalten. Dies hat Auswirkungen auf Kubernetes external-dns
. -
Bei Verwendung der EKS-optimierten AMI sollten Sie den
ec2-Endpunkt in der obigen Tabelle aktivieren. Alternativ können Sie den Knoten-DNS-Namen manuell festlegen. Die optimierte AMI verwendet EC2-APIs, um den DNS-Namen des Knotens automatisch festzulegen. -
Mit dem AWS Load Balancer Controller können Sie AWS Application Load Balancers (ALB) und Network Load Balancers in Ihrem privaten Cluster bereitstellen. Beim Bereitstellen sollten Sie Befehlszeilen-Flags
verwenden, um enable-shield,enable-wafundenable-wafv2auf falsch zu setzen. Die Zertifikatserkennungmit Hostnamen aus Eingangsobjekten wird nicht unterstützt. Dies liegt daran, dass der Controller den AWS-Zertifikatsmanager erreichen muss, der über keinen VPC-Schnittstellenendpunkt verfügt. Der Controller unterstützt Network Load Balancer mit IP-Zielen, die für die Verwendung mit Fargate erforderlich sind. Weitere Informationen erhalten Sie unter Anwendungen und HTTP-Datenverkehr mit Application Load Balancers weiterleiten und Erstellen eines Network Load Balancers.
-
Cluster Autoscaler
wird unterstützt. Stellen Sie beim Bereitstellen von Cluster-Autoscaler-Pods sicher, dass die Befehlszeile --aws-use-static-instance-list=trueenthält. Weitere Informationen finden Sie unter Verwenden der statischen Instance-Listeauf GitHub. Die Worker-Knoten-VPC muss auch den AWS-STS-VPC-Endpunkt und den Auto-Scaling-VPC-Endpunkt enthalten. -
Einige Container-Softwareprodukte verwenden API-Aufrufe, die auf den AWS-Marketplace-Metering-Service zugreifen, um die Nutzung zu überwachen. Private Cluster lassen diese Aufrufe nicht zu, daher können Sie diese Containertypen nicht in privaten Clustern verwenden.