私有集群要求 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

私有集群要求

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

要求

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

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

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

  • 对于 Linux 和 Windows 节点,启动自行管理的节点时,必须包含引导参数。此文本绕过 Amazon EKS 自检,不需要从 VPC 内访问 Amazon EKS API。将 api-server-endpointcertificate-authority 替换为 Amazon EKS 集群中的值。

    • 对于 Linux 节点:

      --apiserver-endpoint api-server-endpoint --b64-cluster-ca certificate-authority

      有关更多参数,请参阅 GitHub 上的引导脚本

    • 对于 Windows 节点:

      -APIServerEndpoint api-server-endpoint -Base64ClusterCA certificate-authority

      有关更多参数,请参阅 Amazon EKS 优化版 Windows AMI

  • 必须从 VPC 内创建 aws-auth ConfigMap。有关创建 aws-auth ConfigMap 的更多信息,请参阅让 IAM 用户和角色有权访问您的集群

注意事项

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

  • 许多 Amazon 服务都支持私有集群,但您必须使用 VPC 终端节点。有关更多信息,请参阅 VPC 终端节点。一些常用的服务和终端节点包括:

    服务 端点
    Amazon Elastic Container Registry cn.com.amazonaws.region-code.ecr.apicn.com.amazonaws.region-code.ecr.dkr 以及 Amazon S3 网关端点
    Application Load Balancer 和 Network Load Balancer cn.com.amazonaws.region-code.elasticloadbalancing
    Amazon X-Ray cn.com.amazonaws.region-code.xray
    Amazon CloudWatch Logs cn.com.amazonaws.region-code.logs
    服务账户的 IAM 角色

    cn.com.amazonaws.region-code.sts

    App Mesh

    • 支持适用于 Kubernetes 的 App Mesh 附加注入器。有关更多信息,请参阅 GitHub 上的 App Mesh 附加注入器

    • 不支持适用于 Kubernetes 的 App Mesh 控制器。有关更多信息,请参阅 GitHub 上的 App Mesh 控制器

    • 支持Cluster Autoscaler。在部署 Cluster Autoscaler pods 时,请确保命令行包括 --aws-use-static-instance-list=true。有关更多信息,请参阅 GitHub 上的使用静态实例列表。Worker 节点 VPC 还必须包括 STS VPC 终端节点和弹性伸缩 VPC 终端节点。

    cn.com.amazonaws.region-code.appmesh-envoy-management
  • 在部署 Amazon EFS CSI 驱动程序 之前,必须更改 kustomization.yaml 文件,以将容器镜像设置为使用与 Amazon EKS 集群相同的 Amazon Web Services 区域。

  • 自行管理和托管的节点受支持。节点的实例必须具有对 VPC 端点的访问权限。如果您创建托管节点组,则 VPC 端点安全组必须允许子网的 CIDR,或者您必须将创建的节点安全组添加到 VPC 端点安全组。

  • Amazon FSx for Lustre CSI 驱动程序 不受支持。

  • 一些容器软件产品使用 API 调用来访问监控使用情况的 Amazon Marketplace Metering 计量服务。私有集群不允许这些调用,因此这些容器类型不能用于私有集群。

创建容器映像的本地副本

由于私有集群没有出站 Internet 访问,因此无法从 Docker Hub 等外部源提取容器映像。相反,容器镜像必须本地复制到 Amazon ECR 或者复制到在 VPC 中可访问的备用注册表。容器镜像可以从私有 VPC 外部复制到 Amazon ECR。私有集群使用 Amazon ECR VPC 端点访问 Amazon ECR 存储库。您必须在用于创建本地副本的工作站上安装 Docker 和 Amazon 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.cn/amazon/aws-node-termination-handler:v1.3.1-linux-amd64 aws ecr get-login-password --region region-code | docker login --username Amazon --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com.cn docker push 111122223333.dkr.ecr.region-code.amazonaws.com.cn/amazon/aws-node-termination-handler:v1.3.1-linux-amd64

用于服务账户 IAM 角色的 Amazon STS 端点

配置了服务账户 IAM 角色的 Pod 通过 Amazon Security Token Service (Amazon STS) API 调用获取凭证。如果没有出站 Internet 访问,则您必须在 VPC 中创建并使用 Amazon STS VPC 终端节点。预设情况下,大多数 Amazon v1 开发工具包均使用全局 Amazon STS 端点(sts.amazonaws.com),而此端点不使用 Amazon STS VPC 端点。要使用 Amazon STS VPC 终端节点,您可能需要将此 SDK 配置为使用区域 Amazon STS 端点 (sts.region-code.amazonaws.com)。为此,可以设置值为 regionalAWS_STS_REGIONAL_ENDPOINTS 环境变量,以及 Amazon Web Services 区域。

例如,在 pod 规范中:

... containers: - env: - name: AWS_REGION value: region-code - name: AWS_STS_REGIONAL_ENDPOINTS value: regional ... ```

region-code 替换为集群所在的 Amazon Web Services 区域。