Private Cluster - Amazon EKS

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.

Requirements

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.

  • Möglicherweise müssen Sie die unter gefundenen VPC-Endpunkte einschließen VPC-Endpunkte für private Cluster.

  • Sie müssen den folgenden Text in die 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 <cluster-endpoint> und <cluster-certificate-authority> durch die Werte aus Ihrem Amazon-EKS-Cluster.

    --apiserver-endpoint <cluster-endpoint> --b64-cluster-ca <cluster-certificate-authority>
  • Die aws-auth-ConfigMap muss in der VPC erstellt werden. Weitere Informationen zum Erstellen der aws-auth-ConfigMap finden Sie unter Verwalten von Benutzern oder IAM-Rollen für Ihren Cluster.

Considerations

Im Folgenden sind einige Dinge zu beachten, wenn Sie Amazon EKS in einem privaten Cluster ohne ausgehenden Internetzugang ausführen.

  • AWS X-Ray wird bei privaten Clustern unterstützt, Sie müssen jedoch einen AWS X-Ray-VPC-Endpunkt verwenden. Weitere Informationen finden Sie unter VPC-Endpunkte für private Cluster.

  • Amazon CloudWatch Logs wird mit privaten Clustern unterstützt, Sie müssen jedoch einen Amazon-CloudWatch-Logs-VPC-Endpunkt verwenden. Weitere Informationen finden Sie unter VPC-Endpunkte für private Cluster.

  • 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.

  • IAM-Rollen für Servicekonten wird unterstützt. Sie müssen den STS-VPC-Endpunkt einschließen. Weitere Informationen finden Sie unter VPC-Endpunkte für private Cluster.

  • Der Amazon-EBS-CSI-Treiber wird unterstützt. Vor der Bereitstellung muss die Datei kustomization.yaml geändert werden, um die Container-Abbilder so festzulegen, dass sie dieselbe Region wie der Amazon-EKS-Cluster verwenden.

  • Der Amazon EFS-CSI-Treiber wird unterstützt. Vor der Bereitstellung muss die Datei kustomization.yaml geändert werden, um die Container-Abbilder so festzulegen, dass sie dieselbe Region wie der Amazon-EKS-Cluster verwenden.

  • Das Amazon FSx for Lustre-CSI-Treiber wird nicht unterstützt.

  • AWS-Fargate wird bei privaten Clustern unterstützt. Sie können den AWS-Lastenverteilungs-Controller verwenden, um AWS Application Load Balancer (ALBs) und Netzwerklastenverteilung bereitzustellen. Der Controller unterstützt Netzwerklastenverteilung mit IP-Zielen, die für die Verwendung mit Fargate erforderlich sind. Weitere Informationen erhalten Sie unter Anwendungslastenverteilung auf Amazon EKS und Erstellen eines Network Load Balancers.

  • AWS-Lastenverteilungs-Controller wird unterstützt. Während der Installation sollten Sie jedoch Befehlszeilen-Flags verwenden, um enable-shield, enable-waf und enable-wafv2 auf false zu setzen. Außerdem wird die Zertifikatserkennung mit Hostnamen aus den Ingress-Objekten nicht unterstützt. Dies liegt daran, dass der Controller ACM erreichen muss, das keinen VPC-Endpunkt hat.

  • App Mesh wird bei privaten Clustern unterstützt, wenn Sie den App Mesh Envoy-VPC-Endpunkt verwenden. Weitere Informationen finden Sie unter VPC-Endpunkte für private Cluster.

    • 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-Liste auf GitHub. Die Worker-Knoten-VPC muss auch den STS-VPC-Endpunkt und den Auto-Scaling-VPC-Endpunkt enthalten. Weitere Informationen finden Sie unter VPC-Endpunkte für private Cluster.

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

  1. Erstellen Sie ein Amazon-ECR-Repository. Weitere Informationen finden Sie unter Erstellen eines Repositorys.

  2. Rufen Sie das Container-Abbild aus der externen Registrierung mit ab docker pull.

  3. Markieren Sie Ihr Image mit der Kombination aus Amazon-ECR-Registry, Repository und dem optionalen Image-Tag-Namen mithilfe von docker tag.

  4. Authentifizieren Sie sich bei der Registrierung. Weitere Informationen finden Sie unter Registrierungsauthentifizierung.

  5. 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 --region <region-code> | docker login --username AWS --password-stdin <111122223333>.dkr.ecr.<region-code>.amazonaws.com docker push <111122223333>.dkr.ecr.<region-code>.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64

VPC-Endpunkte für private Cluster

Die folgenden VPC-Endpunkte sind möglicherweise erforderlich.

  • com.amazonaws.<region>.ec2

  • com.amazonaws.<region>.ecr.api

  • com.amazonaws.<region>.ecr.dkr

  • com.amazonaws.<region>.s3 – Für das Abrufen von Container-Images

  • com.amazonaws.<region>.logs – Für CloudWatch Logs

  • com.amazonaws.<region>.sts – Bei Verwendung von Cluster-Autoscaler- oder IAM-Rollen für Service-Konten

  • com.amazonaws.<region>.elasticloadbalancing – Bei Verwendung von Application Load Balancern

  • com.amazonaws.<region>.autoscaling – Bei Verwendung von Cluster Autoscaler

  • com.amazonaws.<region>.appmesh-envoy-management – Bei Verwendung von App Mesh

  • com.amazonaws.<region>.xray – Bei Verwendung von AWS X-Ray