Anforderungen an private Cluster
In diesem Thema wird beschrieben, wie Sie einen privaten Amazon-EKS-Cluster ohne ausgehenden Internetzugang bereitstellen. Wenn Sie mit dem Amazon-EKS-Netzwerk nicht vertraut sind, finden Sie unter Entmystifizierung von Cluster-Netzwerken für Amazon EKS-Worker-Knoten
Voraussetzungen
Die folgenden Anforderungen müssen erfüllt sein, um Amazon EKS in einem privaten Cluster ohne ausgehenden Internetzugang auszuführen.
-
Ein Container-Image muss sich in Amazon Elastic Container Registry (Amazon ECR) oder in eine Registry innerhalb der VPC befinden oder in diese kopiert werden, um abgerufen zu werden. Weitere Informationen finden Sie unter Erstellen lokaler Kopien von Container-Abbildern.
-
Der Endpunkt für privaten Zugriff ist erforderlich, damit sich Knoten beim Cluster-Endpunkt registrieren können. Der Endpunkt für öffentlichen Zugriff ist optional. Weitere Informationen finden Sie unter Zugriffskontrolle für den Amazon-EKS-Cluster-Endpunkt.
-
Für Linux- und Windows-Knoten müssen Sie Bootstrap-Argumente einfügen, wenn Sie selbstverwaltete Knoten starten. Dieser Text umgeht die Amazon-EKS-Introspektion und erfordert keinen Zugriff auf die Amazon-EKS-API innerhalb der VPC. Ersetzen Sie
api-server-endpoint
undcertificate-authority
durch die Werte aus Ihrem Amazon-EKS-Cluster.-
Für Linux-Knoten:
--apiserver-endpoint
api-server-endpoint
--b64-cluster-cacertificate-authority
Weitere Argumente finden Sie im Bootstrap-Skript
auf GitHub. -
Für Windows-Knoten:
-APIServerEndpoint
api-server-endpoint
-Base64ClusterCAcertificate-authority
Weitere Argumente finden Sie unter Amazon-EKS-optimiertes Windows-AMI.
-
-
Die
aws-auth
-ConfigMap muss in der VPC erstellt werden. Weitere Informationen zum Erstellen deraws-auth
-ConfigMap finden Sie unter Aktivieren des IAM-Benutzer- und Rollenzugriffs auf Ihren Cluster.
Überlegungen
Im Folgenden sind einige Dinge zu beachten, wenn Sie Amazon EKS in einem privaten Cluster ohne ausgehenden Internetzugang ausführen.
-
Viele AWS-Services unterstützen private Cluster, Sie müssen jedoch einen -VPC-Endpunkt verwenden. Weitere Informationen finden Sie unter VPC-Endpunkte. Dies sind einige der häufig verwendeten Services und Endpunkte:
Service Endpunkt Amazon Elastic Container Registry com.amazonaws.
undregion-code
.ecr.apicom.amazonaws.
und der Amazon-S3-Gateway-Endpunktregion-code
.ecr.dkrApplication Load Balancer und Network Load Balancer com.amazonaws.
region-code
.elasticloadbalancingAWS X-Ray com.amazonaws.
region-code
.xrayAmazon CloudWatch Logs com.amazonaws.
.logsregion-code
IAM-Rollen für Servicekonten com.amazonaws.
.stsregion-code
-
Der App-Mesh-Sidecar-Injector für Kubernetes wird unterstützt. Weitere Informationen finden Sie unter App-Mesh-Sidecar-Injector
auf GitHub. -
Der App-Mesh-Controller für Kubernetes wird nicht unterstützt. Weitere Informationen finden Sie unter App-Mesh-Controller
auf GitHub. -
Cluster Autoscaler wird unterstützt. Stellen Sie beim Bereitstellen von Cluster-Autoscaler-Pods sicher, dass die Befehlszeile
--aws-use-static-instance-list=true
enthält. Weitere Informationen finden Sie unter Verwenden der statischen Instance-Listeauf GitHub. Die Worker-Knoten-VPC muss auch den STS-VPC-Endpunkt und den Auto-Scaling-VPC-Endpunkt enthalten.
com.amazonaws.
.appmesh-envoy-managementregion-code
-
-
Vor der Bereitstellung von Amazon EFS-CSI-Treiber muss die Datei kustomization.yaml
so geändert werden, dass die Container-Images dieselbe AWS-Region wie der Amazon-EKS-Cluster nutzen. -
Selbstverwaltete und verwaltete Knoten werden unterstützt. Die Instances für Knoten müssen Zugriff auf die VPC-Endpunkte haben. Wenn Sie eine verwaltete Knotengruppe erstellen, muss die VPC-Endpunkt-Sicherheitsgruppe CIDR für die Subnetze zulassen, oder Sie müssen die erstellte Knoten-Sicherheitsgruppe zur VPC-Endpunkt-Sicherheitsgruppe hinzufügen.
-
Das Amazon FSx for Lustre-CSI-Treiber wird nicht unterstützt.
-
AWS-Fargate wird bei privaten Clustern unterstützt. Sie können AWS Load Balancer Controller verwenden, um AWS Application Load Balancer (ALBs) und Network Load Balancer bereitzustellen. Der Controller unterstützt Network Load Balancer mit IP-Zielen, die für die Verwendung mit Fargate erforderlich sind. Weitere Informationen finden Sie unter Application Load Balancing auf Amazon EKS und Erstellen eines Network Load Balancers.
-
Installieren des AWS Load Balancer Controller-Add-ons wird unterstützt. Während der Installation sollten Sie jedoch Befehlszeilen-Flags
verwenden, um enable-shield
,enable-waf
undenable-wafv2
auf false zu setzen. Außerdem wird die Zertifikatserkennungmit Hostnamen aus den Ingress-Objekten nicht unterstützt. Dies liegt daran, dass der Controller ACM erreichen muss, das keinen VPC-Endpunkt hat. -
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 diese Containertypen nicht für private Cluster verwendet werden.
Erstellen lokaler Kopien von Container-Abbildern
Da ein privater Cluster keinen ausgehenden Internetzugang besitzt, können Container-Images nicht aus externen Quellen wie Docker Hub abgerufen werden. Stattdessen müssen Container-Abbilder lokal in Amazon ECR oder in eine alternative Registrierung kopiert werden, auf die in der VPC zugegriffen werden kann. Ein Container-Image kann von außerhalb der privaten VPC in Amazon ECR kopiert werden. Der private Cluster greift über die Amazon-ECR-VPC-Endpunkte auf das Amazon-ECR-Repository zu. Sie müssen Docker und die AWS CLI auf der Workstation installiert haben, die Sie zum Erstellen der lokalen Kopie verwenden.
So erstellen Sie eine lokale Kopie eines Container-Abbildes
-
Erstellen Sie ein Amazon-ECR-Repository. Weitere Informationen finden Sie unter Erstellen eines Repositorys.
-
Rufen Sie das Container-Abbild aus der externen Registrierung mit
docker pull
ab. -
Markieren Sie Ihr Image mit der Kombination aus Amazon-ECR-Registry, Repository und dem optionalen Image-Tag-Namen mithilfe von
docker tag
. -
Authentifizieren Sie sich bei der Registrierung. Weitere Informationen finden Sie unter Registrierungsauthentifizierung.
-
Verschieben Sie das Abbild zu Amazon ECR mithilfe von
docker push
.Anmerkung Achten Sie darauf, Ihre Ressourcenkonfiguration zu aktualisieren, um den neuen Speicherort des Images zu verwenden.
Im folgenden Beispiel wird das Image amazon/aws-node-termination-handler
mithilfe des Tags v1.3.1-linux-amd64
aus Docker Hub abgerufen und eine lokale Kopie in Amazon ECR erstellt.aws ecr create-repository --repository-name amazon/aws-node-termination-handler docker pull amazon/aws-node-termination-handler:v1.3.1-linux-amd64 docker tag amazon/aws-node-termination-handler
111122223333
.dkr.ecr.region-code
.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64 aws ecr get-login-password --regionregion-code
| docker login --username AWS --password-stdin111122223333
.dkr.ecr.region-code
.amazonaws.com docker push111122223333
.dkr.ecr.region-code
.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64
AWS STS-Endpunkte für IAM-Rollen für Servicekonten
Pods konfiguriert mit IAM-Rollen für Servicekonten erwerben Anmeldeinformationen von einem AWS Security Token Service (AWS STS)-API-Aufruf. 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 das SDK möglicherweise für die Verwendung des regionalen AWS STS-Endpunkts konfigurieren (sts.
). Dazu stellen Sie die Umgebungsvariable region-code
.amazonaws.comAWS_STS_REGIONAL_ENDPOINTS
mit dem Wert regional
und der AWS-Region ein.
Zum Beispiel in einer Pod-Spezifikation:
... containers: - env: - name:
AWS_REGION
value:region-code
- name:AWS_STS_REGIONAL_ENDPOINTS
value: regional ... ```
Ersetzen Sie den region-code
durch die AWS-Region, in der sich Ihr Cluster befindet.