本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
EKS 混合节点
简介
Amazon EKS 推出了混合节点,这是一项新功能,使您能够使用与 AWS 中相同的 Amazon EKS 集群、功能和工具在客户托管的基础设施上运行本地和边缘应用程序。Amazon EKS 混合节点为本地环境带来了 AWS 托管的 Kubernetes 体验,让客户可以简化和标准化您在本地、边缘和云环境中运行应用程序的方式。在 EKS 混合节点上阅读更多内容。
为了便于支持此功能,eksctl 引入了一个名为的新顶级字段。remoteNetworkConfig任何与混合节点相关的配置都应通过此字段进行设置,作为配置文件的一部分;没有对应的 CLI 标志。此外,启动时,任何远程网络配置都只能在集群创建期间进行设置,之后无法更新。这意味着,您将无法更新现有集群以使用混合节点。
配置文件的remoteNetworkConfig部分允许您在将远程节点加入您的 EKS 集群时设置两个核心区域:网络和证书。
Networking
EKS 混合节点可灵活选择将本地网络连接到 VPC 的首选方法。有多种记录在案的选项可供选择,包括 AWS Site-to-Site VPN 和 AWS Direct Connect,您可以选择最适合您的使用案例的方法。在您可能选择的大多数方法中,您的 VPC 将连接到虚拟私有网关 (VGW) 或传输网关 (TGW)。如果您依靠 eksctl 为您创建 VPC,eksctl 还将在您的 VPC 范围内配置任何与网络相关的先决条件,以促进您的 EKS 控制平面和远程节点之间的通信,即
-
入口/出口 SG 规则
-
私有子网路由表中的路由
-
与给定 TGW 或 VGW 的 VPC 网关连接
配置文件示例:
remoteNetworkConfig: vpcGatewayID: tgw-xxxx # either VGW or TGW to be attached to your VPC remoteNodeNetworks: # eksctl will create, behind the scenes, SG rules, routes, and a VPC gateway attachment, # to facilitate communication between remote network(s) and EKS control plane, via the attached gateway - cidrs: ["10.80.146.0/24"] remotePodNetworks: - cidrs: ["10.86.30.0/23"]
如果您选择的连接方法不涉及使用 TGW 或 VGW,则不得依赖 eksctl 为您创建 VPC,而是要提供预先存在的 VPC。与此相关的是,如果您使用的是先前存在的 VPC,eksctl 不会对其进行任何修改,确保所有联网要求都已到位则由您负责。
注意
eksctl 不会在您的 AWS VPC 之外设置任何网络基础设施(即从远程网络 VGW/TGW 到远程网络的任何基础设施)
凭据
EKS 混合节点使用 AWS IAM Authenticator 和由 AWS SSM 或 AW S IAM R oles Anywhere 配置的临时 IAM 凭证对 EKS 集群进行身份验证。与自我管理的节点组类似,如果未另行提供,eksctl 将为您创建一个混合节点 IAM 角色,由远程节点担任。此外,在使用 IAM Roles Anywhere 作为证书提供商时,eksctl 将根据给定的证书颁发机构捆绑包 () 设置配置文件和信任锚点 ()iam.caBundleCert,例如
remoteNetworkConfig: iam: # the provider for temporary IAM credentials. Default is SSM. provider: IRA # the certificate authority bundle that serves as the root of trust, # used to validate the X.509 certificates provided by your nodes. # can only be set when provider is IAMRolesAnywhere. caBundleCert: xxxx
eksctl 创建的混合节点角色的 ARN 需要稍后在将远程节点加入集群、设置NodeConfig和创建激活(如果使用 SSM)的过程中。nodeadm要获取它,请使用:
aws cloudformation describe-stacks \ --stack-name eksctl-<CLUSTER_NAME>-cluster \ --query 'Stacks[].Outputs[?OutputKey==`RemoteNodesRoleARN`].[OutputValue]' \ --output text
同样,如果使用 IAM Roles Anywhere,则可以获取 eksctl 创建的信任锚点和 anywhere 配置文件的 ARN,通过分别替换为或来修改之前RemoteNodesRoleARN的RemoteNodesTrustAnchorARN命令。RemoteNodesAnywhereProfileARN
如果您已有预先存在的 IAM Roles Anywhere 配置,或者您正在使用 SSM,则可以通过为混合节点提供 IAM 角色。remoteNetworkConfig.iam.roleARN请记住,在这种情况下,eksctl 不会为你创建信任锚和任何地方的个人资料。例如
remoteNetworkConfig: iam: roleARN: arn:aws:iam::000011112222:role/HybridNodesRole
为了将角色映射到 Kubernetes 身份并授权远程节点加入 EKS 集群,eksctl 创建一个访问条目,将混合节点 IAM 角色作为委托人 ARN,类型为 ARN,即 HYBRID_LINUX
eksctl get accessentry --cluster my-cluster --principal-arn arn:aws:iam::000011112222:role/eksctl-my-cluster-clust-HybridNodesSSMRole-XiIAg0d29PkO --output json [ { "principalARN": "arn:aws:iam::000011112222:role/eksctl-my-cluster-clust-HybridNodesSSMRole-XiIAg0d29PkO", "kubernetesGroups": [ "system:nodes" ] } ]
附加组件支持
容器网络接口 (CNI):AWS VPC CNI 不能用于混合节点。支持 Cilium 和 Calico 的核心功能以用于混合节点。您可以使用自己选择的工具(例如 Helm)来管理 CNI。有关更多信息,请参阅为混合节点配置 CNI。
注意
如果您在集群中为自行管理或 EKS 管理的节点组安装 VPC CNI,则必须使用v1.19.0-eksbuild.1或更高版本,因为这包括更新插件的守护程序集,使其无法安装在混合节点上。