私有集群 - Amazon EKS

私有集群

本主题介绍如何在没有出站 Internet 访问的情况下部署私有集群。如果您不熟悉 Amazon EKS 联网,请参阅 Amazon EKS 工作线程节点的集群联网解密

Requirements

必须满足以下要求才能在无出站 Internet 访问的私有集群中运行 Amazon EKS。

  • 容器镜像必须位于或者复制到 Amazon Elastic Container Registry (Amazon ECR) 中,或复制到要拉取的 VPC 内部的注册表中。有关更多信息,请参阅创建容器映像的本地副本

  • 节点需要端点私有访问权限才能注册到集群端点。终端节点公有访问权限是可选的。有关更多信息,请参阅Amazon EKS 集群端点访问控制

  • 您可能需要包含在私有集群的 VPC 终端节点中找到的 VPC 终端节点。

  • 启动自行管理的节点时,引导参数中必须包含以下文本。此文本绕过 Amazon EKS 自检,不需要从 VPC 内访问 Amazon EKS API。将 <cluster-endpoint> 和 <cluster-certificate-authority> 替换为您的 Amazon EKS 集群中的值。

    --apiserver-endpoint <cluster-endpoint> --b64-cluster-ca <cluster-certificate-authority>
  • 必须从 VPC 内创建 aws-auth ConfigMap。有关创建 aws-auth ConfigMap 的更多信息,请参阅。管理集群的用户或 IAM 角色

Considerations

以下是在没有出站 Internet 访问的私有集群中运行 Amazon EKS 时需要考虑的一些事项。

创建容器映像的本地副本

由于私有集群没有出站 Internet 访问,因此无法从 Docker Hub 等外部源提取容器映像。相反,容器镜像必须本地复制到 Amazon ECR 或者复制到在 VPC 中可访问的备用注册表。容器镜像可以从私有 VPC 外部复制到 Amazon ECR。私有集群使用 Amazon ECR VPC 端点访问 Amazon ECR 存储库。您必须在用于创建本地副本的工作站上安装了 Docker 和 AWS CLI。

创建容器映像的本地副本

  1. 创建 Amazon ECR 存储库。有关更多信息,请参阅创建存储库

  2. 使用 docker pull 从外部注册表中提取容器映像。

  3. 通过 docker tag,使用 Amazon ECR 注册表、存储库和可选镜像标签名称组合标记您的镜像。

  4. 对注册表进行身份验证。有关更多信息,请参阅注册表身份验证

  5. 使用 docker push 将镜像推送到 Amazon ECR

    注意

    请确保更新资源配置以使用新映像位置。

    以下示例展示使用标签 v1.3.1-linux-amd64 从 Docker Hub 拉取 amazon/aws-node-termination-handler 镜像以及在 Amazon ECR 中创建本地副本。

    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 终端节点

可能需要以下 VPC 终端节点

  • com.amazonaws.<region>.ec2

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

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

  • com.amazonaws.<region>.s3 – 用于拉取容器镜像

  • com.amazonaws.<region>.logs – 适用于 CloudWatch Logs

  • com.amazonaws.<region>.sts – 对服务账户使用 AWS Fargate 或 IAM 角色时

  • com.amazonaws.<region>.elasticloadbalancing – 使用 Application Load Balancer 时

  • com.amazonaws.<region>.autoscaling – 使用 Cluster Autoscaler 时

  • com.amazonaws.<region>.appmesh-envoy-management – 使用 App Mesh 时