近日,**亚马逊云科技推出 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes,支持客户将本地和边缘基础设施作为节点接入云上 EKS 集群,统一管理云上和本地环境的 Kubernetes,同时充分利用 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 的高扩展性和高可用性。**
这一全新功能使客户能够继续使用现有的本地硬件,将 Kubernetes 控制平面的管理责任交由 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 承担,从而**释放本地的计算资源,以专注于运行关键的工作负载**;此外,还帮助客户在云上和本地环境中采用一致的操作实践和工具,以达到**提升运维效率**的效果。
[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 也进一步扩展了对混合 Kubernetes 部署的支持,新增了对 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) on Amazon Outposts 和 [Amazon EKS Anywhere](https://aws.amazon.com/cn/eks/eks-anywhere/?trk=cndc-detail) 的支持。您可以根据实际需求选择最适合的 Kubernetes 和硬件管理模式,灵活地部署和管理容器化应用。
### **开始使用 Amazon EKS Hybrid Nodes**
下文将演示如何使用 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes。
首先,创建一个 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 集群并指定您的本地节点和 Pod 子网。在为本地环境设置网络连接和 Amazon IAM 权限后,在每个将加入集群的主机上运行 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 命令行工具(nodeadm)。
当混合节点加入集群后,将会自动安装所需的网络组件,如 kube-proxy 和 CoreDNS。您需要提前安装一个兼容的容器网络接口(CNI)驱动程序。Cilium 和 Calico CNI 驱动程序都支持与 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 一起使用。
#### **预先准备**
在您的本地基础设施能够作为混合节点加入 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 集群之前,必须满足以下条件:
![image.png](https://dev-media.amazoncloud.cn/c6de09bf4c6248ebb3a57e0c89660e69_image.png "image.png")
* 使用 Amazon Site-to-Site VPN、Amazon Direct Connect 或其他虚拟专用网络(VPN)解决方案,确保本地环境与亚马逊云科技之间的混合网络连接。
* 一个虚拟私有云(VPC),其路由表中包含指向本地节点和(可选)Pod 网络的路由,并将虚拟专用网关(VGW)或传输网关(TGW)作为目标。
* 配置了 Amazon IAM Roles Anywhere 或 Amaozn Systems Manager,用于通过控制平面验证您的混合节点。
* 一个 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 集群 IAM 角色和一个 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes IAM 角色。
* 物理或虚拟机器形式的基础设施,以及与混合节点兼容的操作系统。
您可以使用 Amazon Linux 2023、Ubuntu 20.04、Ubuntu 22.04、Ubuntu 24.04,或者 Red Hat Enterprise Linux(RHEL)8 和 9 作为混合节点的操作系统。亚马逊云科技支持与这些操作系统的混合节点集成,但不提供对操作系统本身的支持。操作系统的配置和管理由您负责。
您可复制下方链接访问《[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南》中的 “EKS Hybrid Nodes 预先准备”部分,了解更多详细信息。
> **[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南 -EKS Hybrid Nodes 预先准备:**
>
> https\://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-prereqs.html?trk=cndc-detail
#### **创建 Amazon EKS 集群并启用混合节点**
进入 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 控制台,开始创建 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 集群。在“步骤 2:指定网络”界面中,启用“指定您将用于混合节点的本地环境 CIDR 块”选项,并在“配置远程网络以启用混合节点”中进行设置。
![image.png](https://dev-media.amazoncloud.cn/3635237c494d41dcb7723e95aae785ef_image.png "image.png")
远程节点和 Pod 的无类域间路由(CIDR)必须是符合 RFC-1918 标准的 IPv4 地址,并且不能与 VPC 的 CIDR 或 EKS 集群 Kubernetes 服务的 CIDR 重叠。此外,远程节点 CIDR 和远程 Pod CIDR 也不能重叠。如果您计划在节点上运行 webhooks,或者如果您的 CNI 在 Pod 流量离开节点时不使用 NAT 进行 Pod 地址转换,则必须指定 Pod CIDR 块。
您还可以通过 Amazon CLI、eksctl 或 Amazon CloudFormation 创建 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 集群。要启用 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 支持,请使用 remote-network-config 来指定您的远程节点和(可选的)远程 Pod CIDR 块。
```
\$ amazon web services eks create-cluster --name channy-hybrid-cluster --region=us-east-1 \\
--role-arn arn:aws:iam::012345678910:role/eks-cluster-role \\
--resources-vpc-config subnetIds=subnet-1234a11a,subnet-5678b11b \\
--remote-network-config \\
{"remoteNodeNetworks":[{"cidrs":["10.80.0.0/16"]}],"remotePodNetworks":[{"cidrs":["10.85.0.0/16"]}]}}
```
您的集群必须配置 API 和 API_AND_CONFIG_MAP 集群访问身份验证模式。您还需要为 EKS 混合节点 IAM 角色创建 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 访问条目,以使节点能够加入集群。
```
\$ amazon web services eks create-access-entry \\
--cluster-name my-hybrid-cluster \\
--principal-arn arn:aws:iam::012345678910:role/eksHybridNodesRole \\
--type HYBRID_LINUX
```
[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 使用 Amazon Systems Manager 混合激活或 Amazon IAM Roles Anywhere 预置的临时 IAM 凭证对 EKS 集群进行身份验证。在连接本地节点之前,您必须创建 Amazon Systems Manager 混合激活,或者为您的节点添加证书和密钥,以供 Amazon IAM Roles Anywhere 使用。
您可复制下方链接访问《[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南》中的“为 EKS Hybrid Nodes 准备凭证”部分,了解更多信息。
> **[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南-为 EKS Hybrid Nodes 准备凭证:**
>
> https\://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-creds.html?trk=cndc-detail
#### **将混合节点连接到 Amazon EKS 集群**
现在,您可以将 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 连接到您的 EKS 集群。您可以使用 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 命令行工具(nodeadm)来简化主机的安装、配置和注册,使其作为混合节点。运行 nodeadm 安装命令时,nodeadm 会自动安装所需的 Amazon Systems Manager 或 Amazon IAM Roles Anywhere 组件。
您可以在每个运行中的主机上执行 nodeadm 安装过程,或者将 nodeadm 作为操作系统构建管道的一部分运行,以生成一个包含加入 EKS 集群所需组件的镜像。
```
\$ nodeadm install 1.31 --credential-provider <ssm, iam-ra>
{"level":"info","ts":...,"caller":"...","msg":"Loading configuration","configSource":"file://nodeConfig.yaml"}
{"level":"info","ts":...,"caller":"...","msg":"Validating configuration"}
{"level":"info","ts":...,"caller":"...","msg":"Validating Kubernetes version","kubernetes version":"1.30"}
{"level":"info","ts":...,"caller":"...","msg":"Using Kubernetes version","kubernetes version":"1.30.0"}
{"level":"info","ts":...,"caller":"...","msg":"Installing SSM agent installer..."}
{"level":"info","ts":...,"caller":"...","msg":"Installing kubelet..."}
{"level":"info","ts":...,"caller":"...","msg":"Installing kubectl..."}
{"level":"info","ts":...,"caller":"...","msg":"Installing cni-plugins..."}
{"level":"info","ts":...,"caller":"...","msg":"Installing image credential provider..."}
{"level":"info","ts":...,"caller":"...","msg":"Installing IAM authenticator..."}
{"level":"info","ts":...,"caller":"...","msg":"Finishing up install..."}
```
在每个主机上创建一个 nodeConfig.yaml 文件,其中包含连接到 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 集群所需的信息。以下是一个示例 nodeConfig.yaml 文件,使用了 Amazon Systems Manager 混合激活:
```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
metadata:
name: hybrid-node
spec:
cluster:
name: my-cluster
region: us-east-1
hybrid:
ssm:
activationCode: <activation-code>
activationId: <activation-id>
```
现在,您可以在每个主机上运行 nodeadm 来将混合节点连接到 EKS 集群。
```
\$ nodeadm init -c file://nodeConfig.yaml
```
如果之前的命令执行成功,则您的混合节点已经成功加入到 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 集群中。您可以在 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 控制台查看,或通过运行 kubectl get nodes 命令来验证这一点。在混合节点显示为 Ready 状态之前,您必须安装一个兼容的 CNI(容器网络接口)。
您可复制下方链接访问《[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南》中的“为 EKS Hybrid Nodes 安装 CNI” 部分,了解更多信息。
> **[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南-为 EKS Hybrid Nodes 安装 CNI:**
>
> https\://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-cni.html
#### **在 Amazon EKS 控制台查看和管理连接的混合节点**
现在,节点已经准备好,您可以在 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 控制台中查看您的混合节点以及在这些节点上运行的资源。
![image.png](https://dev-media.amazoncloud.cn/d51c14b726154503b860f2dcdfbb417a_image.png "image.png")
您需要负责管理混合节点并更新它们运行的软件。为了获取最新的修复和更新,您可以更新到最新版本的 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 命令行工具(CLI),并升级 Kubernetes 版本。
您可复制下方链接访问《[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南》中的“升级 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes” 部分,了解更多信息。
> **[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 用户指南-升级 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes:**
>
> https\://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-upgrade.html?trk=cndc-detail
如开篇所言,[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 是对混合 Kubernetes 部署支持的扩展,是对 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) on Amazon Outposts 和 [Amazon EKS Anywhere](https://aws.amazon.com/cn/eks/eks-anywhere/?trk=cndc-detail) 的补充。您可对比不同混合部署选项中 Kubernetes 和硬件组件的管理方式。
![image.png](https://dev-media.amazoncloud.cn/1b278b00b4e74f0e97d59044f8913d31_image.png "image.png")
您可复制下方链接访问 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 文档,了解更多信息。
> **[Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) Hybrid Nodes 文档:**
>
> https\://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-overview\.html?trk=cndc-detail
![image.png](https://dev-media.amazoncloud.cn/c6f891c2939542de8d2d353f59686f77_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/8814e4a3b8b14519854780b3554aa5e0_image.png "image.png")