企业级 EKS 集群生产环境配置最佳实践

企业级 EKS 集群生产环境配置最佳实践

💡 原文中文,约20400字,阅读约需49分钟。
📝

内容提要

本文介绍企业级EKS集群生产环境配置最佳实践,涵盖私有cluster endpoint、VPC Endpoints、Pod Identity替代IRSA、双EBS+LVM隔离容器运行时及四种CSI Driver接入。通过开源Terraform模块,一次apply约30分钟建成集群,并配9项健康检查验收,解决安全合规、节点稳定性、存储多样、弹性扩缩容和部署效率五大问题。

🔎

延伸解读

私有化与成本权衡

文章推荐生产环境使用私有 cluster endpoint 和 full VPC Endpoints,这能消除公网攻击面并避免 NAT 流量费,但需注意:私有 endpoint 要求运维必须通过堡垒机或专线访问,且 full 模式需创建 14 个 VPC Endpoints,虽省 NAT 费但增加 PrivateLink 月费。选 minimal 模式可降低成本,但前提是 VPC 允许节点出公网。企业需根据自身网络合规和成本预算权衡。

Pod Identity 的运维优势

相比 IRSA,Pod Identity 消除了 OIDC Provider 的账户级资源,信任策略不再绑定具体集群,跨账户、跨集群复用角色更简单,且私有集群下无需额外 DNS 配置。但需注意,Pod Identity 依赖节点上的 Agent DaemonSet,若 Agent 故障仅影响本节点,故障域更小。迁移时需将所有组件(如 CSI、CA)的 IAM 关联方式改为 Pod Identity,并确保角色信任策略使用 pods.eks.amazonaws.com。

存储隔离的代价与收益

将容器运行时迁至独立 EBS 卷(LVM)可避免根卷 I/O 竞争,防止 DiskPressure 和 NotReady,但每节点增加一块 100GB gp3 卷,3 节点月增约 $24。文章强调启动顺序关键:需在 cloud-boothook 阶段完成挂载,并迁移预置 pause 镜像,否则首次启动变慢。此设计适合对稳定性要求高的生产环境,但成本敏感的小集群需评估是否必要。

Q&A

EKS集群生产环境如何实现API Endpoint私有化?

通过设置cluster_mode为private,禁用公网解析,使集群API endpoint仅在VPC内可达。同时需要配套使用VPC Endpoints(如full模式创建14个)让节点和Pod通过PrivateLink访问AWS服务,以及通过SSM堡垒机或Direct Connect/VPN接入VPC进行管理。

Pod Identity相比IRSA有哪些优势?

Pod Identity相比IRSA的优势包括:无需为每个集群创建OIDC Provider,信任策略Principal固定为pods.eks.amazonaws.com,不绑定具体集群,跨账户和集群重建不受影响;故障域更小(节点级DaemonSet);私有集群下无需额外解决OIDC DNS解析问题。

如何解决EKS节点根卷磁盘压力问题?

通过将容器运行时存储从根卷分离,使用双EBS卷+LVM方案:根卷(50GB)用于OS和系统,数据卷(100GB)通过LVM创建逻辑卷并挂载到/var/lib/containerd,实现系统I/O与容器I/O物理隔离。在cloud-boothook阶段完成LVM创建、格式化、迁移pause镜像等操作,避免containerd启动后挂载冲突。

EKS集群支持哪些CSI驱动?分别适用于什么场景?

EKS集群支持四种CSI驱动:EBS(块存储,RWO,适用于数据库等有状态应用);EFS(共享文件系统,RWX,适用于多Pod共享目录);FSx for Lustre(高性能并行文件系统,适用于HPC和机器学习训练);Mountpoint for S3(对象存储,只读/顺序写,适用于模型权重、数据集等)。

使用Terraform部署生产级EKS集群需要多长时间?

使用提供的Terraform模块,一次apply约需25-35分钟,其中网络约2分钟,控制平面8-10分钟,系统节点组8-12分钟,核心组件5-8分钟,可选组件按需增加。

EKS集群部署后如何验证是否生产就绪?

运行仓库提供的scripts/option_inspect_eks.sh脚本,执行9项健康检查,包括控制平面、addons、系统节点组、节点级kubelet/containerd/LVM、helm releases、VPC Endpoints、SG ingress、Pod Identity关联、in-cluster DNS和spot vCPU配额。全部PASS即视为生产就绪。

EKS集群如何实现弹性扩缩容?

EKS集群支持两种弹性扩缩容方案:Cluster Autoscaler(默认)和Karpenter(可选)。Karpenter直接与EC2 Fleet API交互,分钟级完成节点扩容,原生支持Spot中断处理和混合实例池,适合弹性要求高的场景。通过设置install_karpenter=true启用。

EKS集群生产环境有哪些成本优化建议?

成本优化建议包括:使用Graviton实例(成本最多低约20%);利用VPC Endpoints避免NAT流量费;合理使用Spot实例(最高省90%);按需配置节点组大小,系统节点组默认3节点m8g.xlarge即可满足基础组件需求,业务节点交给Karpenter弹性伸缩。

🏷️

标签

➡️

继续阅读