发布于 2026-01-06 0 阅读
0

无需专业知识,也能像专业人士一样运行 Kubernetes!隆重推出 EKS 自动模式

无需专业知识,也能像专业人士一样运行 Kubernetes!隆重推出 EKS 自动模式

AWS re:Invent 大会尚未正式开始,但 EKS 已经推出了一项颠覆性的新功能,让您像专业人士一样运行 Kubernetes!

在本博客中,我们将探讨 EKS 自动模式的全部内容,并说明如何在现有集群上启用 EKS 自动模式,并尝试将我们托管节点组的工作负载迁移到现有集群的 EKS 自动模式,但我们无法做到这一点,请在博客中找出原因!

我还分析了 EKS Auto 的价格与其提供的操作简便性之间的关系,以帮助您做出是否启用它的明智决定。

我创建了一个Terraform 仓库,只需 2 个命令即可快速重现这篇博客,让我们征服 EKS 自动模式吧。

动机

AWS 更新

2024 年 12 月 2 日(日本标准时间)——就在 re:Invent 2024 大会召开前夕,AWS 发布了一项激动人心的更新,推出了 EKS 自动模式。

这次更新对您意味着什么?

  • 它可自动管理您的 EKS 集群,从而使 AWS 也能设置和管理基础设施,以确保您的工作负载顺利运行。

  • 由 AWS 管理的集群基础设施包含许多 Kubernetes 功能作为核心组件,而非附加组件,例如计算自动扩展、Pod 和服务网络、应用程序负载均衡、集群 DNS、块存储和 GPU 支持。

  • 您可以部署新的 EKS 自动模式集群,也可以在现有集群上启用 EKS 自动模式。

注意: Terraform 的支持(仍在开发中)尚未实现,因此本博客将使用 AWS 控制台。

本次更新的成本考量

  • 根据https://aws.amazon.com/eks/pricing/

  • 您将继续支付以下两个部分的费用:

    • Amazon EKS 集群定价: *每集群每小时 0.10 美元 *(扩展服务每集群 0.60 美元)
    • 但是,如果您使用自动模式,则需要额外付费!!!

Amazon EKS 自动模式的费用取决于 EKS 自动模式启动和管理的 Amazon EC2 实例的持续时间和类型。以下列出的 Amazon EKS 自动模式价格不包含 Amazon EC2 实例本身的费用。

简单来说,EKS 自动模式除了收取常规 EC2 实例费用外,还会根据启动的 EC2 实例类型收取不同的管理费。

自动模式的价格

EKS 完全自动模式成本

它究竟自动化了什么?

EKS 自动模式旨在实现数据平面组件的自动化,以下列出了正在实现自动化的组件及其功能

EKS 自动模式下的自动化数据平面组件

  • 计算管理:自动执行集群计算的关键方面,包括节点配置、扩展、升级和负载均衡,从而实现轻松的 Kubernetes 操作。

    • 节点
      • 自动选择具备基本服务的优化型 AMI。
      • 使用 SELinux、只读 root 文件和禁止 SSH/SSM 访问来保护节点。
      • 支持NVIDIA和Neuron GPU。
    • 自动缩放
      • 使用 Karpenter 来监控和部署无法调度的 Pod 的新节点。
      • 动态终止未使用的节点以优化资源。
  • 升级

    • 在最大限度减少工作负载中断的情况下,应用操作系统和组件更新。
    • 为了安全性和稳定性,强制执行 21 天的最大节点生命周期。
  • 负载均衡

    • 与弹性负载均衡(ALB 和 NLB)集成,实现自动配置和扩展。
    • 提供符合 AWS 最佳实践的生产就绪型负载均衡。
  • 存储自动化

    • 配置临时存储,自动管理卷设置、加密和删除策略,以实现最佳使用效果。
  • 网络自动化

    • 管理 Pod 和服务连接,支持 IPv4/IPv6,并使用辅助 CIDR 块扩展 IP 空间。

在现有集群上启用自动模式

支持的迁移

迁移支持

注意:还要记得查看如何配置基于 Kubernetes 的资源,使其由自管理控制器或 EKS 自动模式拥有。

先决条件

  • 更新 IAM 权限并配置核心 EKS 自动模式设置
  • 某些 Amazon EKS 插件透视图的最低版本要求。

更新 IAM 权限并配置核心 EKS 自动模式设置

  • EKS 集群的集群 IAM 角色在集群创建后无法更改。EKS 自动模式需要此角色拥有额外的权限。您必须将其他策略附加到当前角色。

eks自动集群

  • 导航至集群 IAM 角色并添加以下策略

    • AmazonEKS 计算策略
    • AmazonEKSBlockStoragePolicy
    • AmazonEKS负载均衡策略
    • AmazonEKS网络策略
    • AmazonEKSClusterPolicy(对我来说已经存在)

eks权限

  • 编辑信任策略并添加sts:TagSession允许的操作。

EKS信托政策

某些 Amazon EKS 插件的最低版本要求

看法。

自动模式

创建 Karpenter 节点池

  • EKS auto 在后台使用 Karpenter 进行缩放。

Karpenter 是一款节点配置工具,可帮助优化集群扩展和资源利用率。借助 Karpenter 的 NodePool 资源,您可以定义计算资源的具体要求,包括实例类型、可用区、架构和容量类型。

节点池

节点池权限

  • 选择默认权限并创建角色

创建节点池角色后

  • 角色创建完成后,点击“下一步”,即可看到自动模式已启用的通知。

启用通知

EKS自动启用

  • Overview启用后,您可以使用控制台中的 Tab 键确认自动模式选项。

由 EKS Auto 创建的节点池

  • 在启用步骤中,EKS 也创建了节点池。

禁用 EKS 自动模式

禁用自动模式

您可以禁用现有 EKS 集群上的 EKS 自动模式。此操作会破坏现有数据。

  • EKS 将终止所有由 EKS 自动模式运行的 EC2 实例。

  • EKS 将删除所有由 EKS 自动模式运行的负载均衡器。

从 EKS 管理节点组迁移到 EKS 自动模式

当您将 Amazon EKS 集群过渡到使用 EKS 自动模式时,可以使用 eksctl CLI 工具将现有工作负载从托管节点组平滑迁移。

此过程可确保应用程序持续可用,同时 EKS 自动模式可优化您的计算资源。迁移过程对正在运行的应用程序的影响极小。

先决条件

  • 已启用 EKS 自动模式的集群

  • eksctl CLI 已安装并连接到您的集群。有关更多信息,请参阅“设置使用 Amazon EKS”。

  • 集群上未安装 Karpenter。

Pod 的当前状态

  • 2 个 Pod 在托管节点组上运行。
jatin.mehrotra@CK0662-001 eks-auto-mode % kubectl get po -o wide
NAME                    READY   STATUS    RESTARTS   AGE     IP           NODE                         NOMINATED NODE   READINESS GATES
test-65b7dbddd4-jdxhw   1/1     Running   0          2m29s   10.0.2.52    ip-10-0-2-85.ec2.internal    <none>           <none>
test-65b7dbddd4-lzd4r   1/1     Running   0          2m29s   10.0.1.118   ip-10-0-1-128.ec2.internal   <none>           <none>
Enter fullscreen mode Exit fullscreen mode

测试 Pod 运行在内部托管节点上

  • 根据文档,使用以下 eksctl CLI 命令可以从现有的托管节点组实例中移除 Pod。EKS 自动模式将创建新节点来支持被移除的 Pod。
eksctl update auto-mode-config --cluster eks-auto-test --drain-nodegroup  --region us-east-1 --profile ck-test   
Enter fullscreen mode Exit fullscreen mode

eksctl 命令问题

  • 我的 eksctl 版本输出(这是最新版本)
eksctl info 
eksctl version: 0.194.0

Enter fullscreen mode Exit fullscreen mode
  • 我的集群上其他 eksctl 命令都在运行,所以肯定不是连接问题。
jatin.mehrotra@CK0662-001 eks-auto-mode % eksctl get addons  --cluster eks-auto-test  --region us-east-1 --profile ck-test 
2024-12-02 12:29:41 [ℹ]  Kubernetes version "1.30" in use by cluster "eks-auto-test"
2024-12-02 12:29:41 [ℹ]  getting all addons
2024-12-02 12:29:44 [ℹ]  to see issues for an addon run `eksctl get addon --name <addon-name> --cluster <cluster-name>`
NAME                            VERSION                 STATUS  ISSUES  IAMROLE UPDATE AVAILABLE                                                                     CONFIGURATION VALUES     POD IDENTITY ASSOCIATION ROLES
amazon-cloudwatch-observability v2.5.0-eksbuild.1       ACTIVE  0
aws-ebs-csi-driver              v1.37.0-eksbuild.1      ACTIVE  0
coredns                         v1.11.1-eksbuild.8      ACTIVE  0               v1.11.3-eksbuild.2,v1.11.3-eksbuild.1,v1.11.1-eksbuild.13,v1.11.1-eksbuild.11,v1.11.1-eksbuild.9
kube-proxy                      v1.30.6-eksbuild.3      ACTIVE  0
vpc-cni                         v1.19.0-eksbuild.1      ACTIVE  0
Enter fullscreen mode Exit fullscreen mode

更新:12月3日凌晨12:20(日本标准时间)

  • 尽管 AWS 团队已经发布了新版本的 eksctl,但问题仍然存在,而且文档也不正确。

它还需要--drain-all-nodegroups集群配置文件,但对于通过控制台或 Terraform 创建的现有集群来说,生成该文件非常困难。

eksctl update auto-mode-config --drain-all-nodegroups -f eks-config.yaml --profile ck-test  
Enter fullscreen mode Exit fullscreen mode

我们需要等待更多时间,以便 AWS 修复此漏洞。目前已针对此漏洞提交了新的 issue

调查 EKS 自动模式集群的 Kubernetes 版本更新问题

  • Amazon EKS 自动模式的计算能力控制着节点的 Kubernetes 版本。升级控制平面后,EKS 自动模式将开始逐步更新受管节点。EKS 自动模式会遵守 Pod 中断预算。

  • 您无需手动升级 Amazon EKS 自动模式的功能,包括计算自动扩展、块存储和负载均衡功能。

  • 自动模式通过协调控制平面更新和节点替换来简化版本更新过程,同时通过 pod 中断预算来维持工作负载的可用性。

  • 升级自动模式集群时,许多传统上需要手动更新的组件现在都作为服务的一部分进行管理。

  • 启动控制平面升级后,EKS 自动模式将开始替换集群中的节点。新节点将具有相应的新 Kubernetes 版本。EKS 自动模式在升级节点时会监控 Pod 中断预算。

    • CoreDNS
    • KubeProxy
    • AWS负载均衡控制器
    • 卡彭特
    • AWS EBS CSI 驱动程序
  • 但是,您仍然有责任进行更新:

    • 部署到集群的应用和工作负载
    • 自管理插件和控制器
    • Amazon EKS 插件

从解决方案架构师的角度来看

  • 在这篇博客中,我们看到了 EKS 自动模式如何通过将基础设施管理卸载到 AWS 来简化 Kubernetes 操作。
  • 它会自动选择最佳的 EC2 实例,优化计算成本,并根据需求动态扩展资源。
  • 该功能增强了安全性、性能和可用性,同时减少了对深厚专业知识、容量规划和手动管理的需求。
  • 但正如我们在博客中看到的,它仍然是一个新功能,可能需要更新和修复漏洞。
  • 没错,它的确简化了操作,让用户能够以专业的方式安全地运行 Kubernetes,但你必须为此付出代价。

起初我认为这会增加成本,但持续使用后,其带来的便利性将抵消额外的成本。

请在下方评论区留下您的想法,或者在领英上联系我X 🚀

文章来源:https://dev.to/aws-builders/run-kubernetes-like-a-pro-without-the-expertise-introducing-eks-auto-mode-5edf