私有集群要求
本主题介绍如何在没有出站 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-endpoint替换为 Amazon EKS 集群中的值。certificate-authority-
对于 Linux 节点:
--apiserver-endpointapi-server-endpoint--b64-cluster-cacertificate-authority有关更多参数,请参阅 GitHub 上的引导脚本
。 -
对于 Windows 节点:
-APIServerEndpointapi-server-endpoint-Base64ClusterCAcertificate-authority有关更多参数,请参阅 Amazon EKS 优化版 Windows AMI。
-
-
必须从 VPC 内创建
aws-authConfigMap。有关创建aws-authConfigMap 的更多信息,请参阅让 IAM 用户和角色有权访问您的集群。
注意事项
以下是在没有出站 Internet 访问的私有集群中运行 Amazon EKS 时需要考虑的一些事项。
-
许多 Amazon 服务都支持私有集群,但您必须使用 VPC 终端节点。有关更多信息,请参阅 VPC 终端节点。一些常用的服务和终端节点包括:
服务 端点 Amazon Elastic Container Registry cn.com.amazonaws.和region-code.ecr.apicn.com.amazonaws.以及 Amazon S3 网关端点region-code.ecr.dkrApplication Load Balancer 和 Network Load Balancer cn.com.amazonaws.region-code.elasticloadbalancingAmazon X-Ray cn.com.amazonaws.region-code.xrayAmazon CloudWatch Logs cn.com.amazonaws..logsregion-code服务账户的 IAM 角色 cn.com.amazonaws..stsregion-code-
支持适用于 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..appmesh-envoy-managementregion-code -
-
在部署 Amazon EFS CSI 驱动程序 之前,必须更改 kustomization.yaml
文件,以将容器镜像设置为使用与 Amazon EKS 集群相同的 Amazon Web Services 区域。 -
自行管理和托管的节点受支持。节点的实例必须具有对 VPC 端点的访问权限。如果您创建托管节点组,则 VPC 端点安全组必须允许子网的 CIDR,或者您必须将创建的节点安全组添加到 VPC 端点安全组。
-
一些容器软件产品使用 API 调用来访问监控使用情况的 Amazon Marketplace Metering 计量服务。私有集群不允许这些调用,因此这些容器类型不能用于私有集群。
创建容器映像的本地副本
由于私有集群没有出站 Internet 访问,因此无法从 Docker Hub 等外部源提取容器映像。相反,容器镜像必须本地复制到 Amazon ECR 或者复制到在 VPC 中可访问的备用注册表。容器镜像可以从私有 VPC 外部复制到 Amazon ECR。私有集群使用 Amazon ECR VPC 端点访问 Amazon ECR 存储库。您必须在用于创建本地副本的工作站上安装 Docker 和 Amazon CLI。
创建容器映像的本地副本
-
创建 Amazon ECR 存储库。有关更多信息,请参阅创建存储库。
-
使用
docker pull从外部注册表中提取容器映像。 -
通过
docker tag,使用 Amazon ECR 注册表、存储库和可选镜像标签名称组合标记您的镜像。 -
对注册表进行身份验证。有关更多信息,请参阅注册表身份验证。
-
使用
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-handler111122223333.dkr.ecr.region-code.amazonaws.com.cn/amazon/aws-node-termination-handler:v1.3.1-linux-amd64 aws ecr get-login-password --regionregion-code| docker login --username Amazon --password-stdin111122223333.dkr.ecr.region-code.amazonaws.com.cn docker push111122223333.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.comregional 的 AWS_STS_REGIONAL_ENDPOINTS 环境变量,以及 Amazon Web Services 区域。
例如,在 pod 规范中:
... containers: - env: - name:AWS_REGIONvalue:region-code- name:AWS_STS_REGIONAL_ENDPOINTSvalue: regional ... ```
将 替换为集群所在的 Amazon Web Services 区域。region-code