AWS PayPal代付 Amazon EKS 架构详解:在 AWS 上运行 Kubernetes 的部署步骤、网络设计与故障排查
用户搜索这类主题,通常不是为了了解 Kubernetes 的定义,而是在评估一件更具体的事情:到底要不要在 AWS 上用 EKS 托管集群,应该怎么建,网络怎么配,后续怎么升级,出了问题怎么排查。真正困扰团队的,往往不是“EKS 是什么”,而是“为什么节点加不进集群”“为什么 Service 暴露不了公网”“为什么 Pod 能启动但拉不到镜像”“为什么升级后业务中断”。本文直接围绕这些操作问题展开。
先回答决策阶段最容易卡住的 4 个问题
1. EKS 适合什么团队直接上手
如果你已经在 AWS 上有 VPC、子网、IAM、ALB/NLB 使用经验,并且希望把控制面运维交给 AWS,EKS 是比较稳妥的选择。若团队连 VPC 划分、子网路由、安全组都不熟,先从最小集群验证网络链路,再上业务,避免一开始就做多可用区复杂架构。
2. 节点组应该选 Managed Node Group 还是 Fargate
大多数生产环境会优先选择 Managed Node Group。原因很实际:日志采集、DaemonSet、存储插件、网络观测、GPU、系统级调优都更好做。Fargate 更适合短时任务、隔离要求高的小型工作负载,但在调试、成本、可观测性上不一定更省事。
3. EKS 难点不在集群创建,而在网络与权限
EKS 控制台创建集群本身不复杂,真正容易失败的是以下环节:子网标签不对导致负载均衡器无法自动发现;节点 IAM 权限缺失导致无法加入集群;NAT 或 VPC Endpoint 未配置导致私网节点拉不到镜像;aws-auth 或 Access Entry 配置错误导致 kubectl 无权限访问。
4. 生产环境是否必须多可用区
AWS PayPal代付 建议至少两个可用区。不是为了“高可用”这个口号,而是为了避免某个 AZ 的节点组异常时,Deployment 无法调度。尤其是 ALB + Ingress 场景,多 AZ 子网能减少单点故障。不过数据库、缓存、EBS 绑定卷的调度策略要同步设计,否则 Pod 会因卷和节点不在同一可用区而无法运行。
AWS PayPal代付 部署前准备:别在创建集群后才补网络和权限
账号与权限要求
建议使用具备以下 AWS 权限的 IAM 角色进行创建,而不是直接使用长期 Access Key 的个人账号。
| 资源 | 最低要求 | 常见遗漏 |
| EKS | 创建集群、节点组、访问项 | 只给了查看权限,没有创建 IAM 关联权限 |
| EC2 | VPC、子网、安全组、路由表、Launch Template | 没有 Describe 权限,控制台列表为空 |
| IAM | 创建/关联 EKS 集群角色、节点角色 | 缺失 PassRole |
| ELB | 创建 ALB/NLB | Ingress Controller 运行后无法创建负载均衡 |
| ECR | 拉取镜像 | 私网节点无 ECR Endpoint 或权限不足 |
所需资源
- AWS 账号与管理员或受限但完整的 EKS/IAM/EC2 权限
- 一个规划好的 VPC
- 至少 2 个公有子网和 2 个私有子网,分布在不同可用区
- 本地已安装 AWS CLI、kubectl、eksctl 或仅使用控制台
- 用于域名解析的 Route 53 或第三方 DNS
VPC 与子网建议
EKS 最常见的错误,是先创建集群,后发现子网不适合业务。建议在创建前按下面方式规划。
| 组件 | 建议 | 原因 |
| 控制面访问 | 优先开启公网+CIDR 限制,或私网访问配合堡垒机/VPN | 兼顾可维护性与安全 |
| 工作节点 | 优先放私有子网 | 减少直接暴露公网面 |
| ALB | 面向公网的 Ingress 放公有子网 | 外部流量可直接进入 |
| 内部服务 | Internal NLB/ALB 放私有子网 | 仅 VPC 内访问 |
子网还需要正确标签,否则 AWS Load Balancer Controller 不能自动识别。
| 子网类型 | 标签键 | 标签值 |
| 公有子网 | kubernetes.io/role/elb | 1 |
| 私有子网 | kubernetes.io/role/internal-elb | 1 |
| 集群关联 | kubernetes.io/cluster/集群名 | shared 或 owned |
详细操作教程:从控制台创建可用的 EKS 集群
步骤 1:创建 EKS 集群
进入 AWS 控制台,打开 EKS,点击“Add cluster”或“Create cluster”。
建议这样填写关键参数:
| 参数 | 建议值 | 注意事项 |
| Cluster name | prod-eks / test-eks | 名称不要后续频繁变更,很多脚本会引用 |
| Kubernetes version | 选择当前稳定版本 | 不要直接上最新小版本做生产首发 |
| Cluster service role | 专用 IAM Role | 需附加 AmazonEKSClusterPolicy 等策略 |
| VPC | 已规划好的业务 VPC | 后续不能随意切换 |
| Subnets | 至少 2 个 AZ 的子网 | 建议集群可见多个私有子网 |
| Endpoint access | 公网+指定办公 IP,或私网 | 全公网开放后再忘记收敛是常见风险 |
如果是首次搭建,建议先使用公网 API 访问并限制来源 IP,确认 kubectl 和节点工作正常后,再切换到私网访问。
步骤 2:创建 Managed Node Group
集群创建完成后,在集群页面点击“Compute”→“Add node group”。
关键参数不要随便默认:
| 参数 | 推荐填写 | 说明 |
| Node IAM role | 专用节点角色 | 需含 EKS Worker、ECR ReadOnly、CNI 等策略 |
| AMI type | Amazon Linux 2 或 Bottlerocket | Linux 运维习惯强的团队可选 AL2 |
| Capacity type | On-Demand / Spot 混合 | 核心业务别只用 Spot |
| Instance types | m6i.large、m6a.large、c6i.large 等 | 不要只选单一规格,避免容量不足 |
| Disk size | 40GB 起 | 默认过小会导致镜像和日志挤满磁盘 |
| Scaling config | min 2 / desired 2 / max 4 | 生产环境避免单节点 |
很多用户把节点磁盘保持默认 20GB,后面部署监控、日志、多个镜像后,很快出现磁盘不足,Pod 被驱逐。对 Java、镜像偏大的业务,建议至少 40GB,日志较多时直接 80GB。
步骤 3:配置 kubectl 访问并验证节点
在本地执行以下命令:
<code>aws eks update-kubeconfig --region ap-southeast-1 --name prod-eks</code>
然后检查:
<code>kubectl get nodes</code>
如果返回 Unauthorized,优先检查当前 IAM 身份是否被允许访问集群。如果节点长时间不出现,重点检查以下几项:
- 节点角色是否附加了必须策略
- 私有子网是否能访问 EKS/ECR/STS
- 安全组是否阻断了节点到控制面的通信
- Launch Template 是否覆盖了错误的用户数据
服务发布实践:Ingress、负载均衡、DNS 与 HTTPS 怎么落地
安装 AWS Load Balancer Controller
很多业务卡在“Service type=LoadBalancer 可以出公网,但 Ingress 不工作”。在 EKS 中,如果要用 ALB 管理七层路由,通常需要部署 AWS Load Balancer Controller,而不是只依赖 Kubernetes 默认能力。
安装前先确认:
- 已启用 OIDC Provider
- 已创建对应 IAM Role for Service Account
- AWS PayPal代付 子网标签正确
如果 Controller Pod 启动正常,但 ALB 没创建,先看控制器日志,重点查 IAM 权限与子网发现失败信息。
Ingress 典型配置注意点
| 配置项 | 建议 | 错误表现 |
| ingressClassName | alb | 未指定时资源创建但不生效 |
| scheme | internet-facing 或 internal | 选错会导致访问路径完全不对 |
| target-type | ip | 与 CNI、节点模式不一致时转发异常 |
| certificate-arn | ACM 证书 ARN | HTTPS 无法监听 |
如果是网站应用,建议证书放 ACM,DNS 放 Route 53,避免手动上传证书和重复维护续期。
DNS 与 HTTPS 配置步骤
创建 ALB 后,在 Route 53 中为域名添加 Alias 记录指向 ALB。若使用第三方 DNS,则创建 CNAME 到 ALB 域名。HTTPS 建议使用 ACM 申请证书并绑定到 Ingress 注解中。若浏览器访问提示证书无效,优先检查:
- 域名是否与证书 SAN 完全匹配
- DNS 是否已切到 ALB
- Ingress 注解中的 certificate ARN 是否正确
- 是否同时开启了 80 到 443 跳转
存储、数据库连接与网络排障:业务上线前必须测通
Pod 连接 RDS/MySQL 失败怎么查
AWS PayPal代付 这是 AWS 上运行 Kubernetes 最常见的问题之一。不要先怀疑应用配置,按链路查:
| 检查项 | 验证方式 | 常见原因 |
| DNS 解析 | 在 Pod 内 nslookup RDS 地址 | CoreDNS 异常或 VPC DNS 关闭 |
| 网络连通 | telnet 或 nc 到 3306 | RDS 安全组未放行节点网段/Pod 网段 |
| 账号权限 | 本地和 Pod 内分别测试连接 | MySQL 用户授权主机不对 |
| 路由与 NACL | 检查子网路由和网络 ACL | 跨子网限制导致连接超时 |
如果使用 Security Group for Pods 或更细粒度网络策略,数据库白名单要按实际流量源放行,不要只看节点安全组。
持久化存储怎么选
大多数有状态工作负载会用 EBS CSI Driver。注意 EBS 卷是可用区级资源,StatefulSet 调度时要让 Pod 和卷保持在同一可用区。若业务需要多节点共享文件系统,直接改用 EFS,不要强行让多个 Pod 共享单块 EBS。
镜像拉取慢或失败的处理方式
- 私网节点拉 ECR 镜像,优先配置 ECR API、ECR DKR、S3、STS 的 VPC Endpoint
- 跨区域拉镜像时,尽量把镜像同步到本区域 ECR
- 节点磁盘不足会表现为 ImagePullBackOff 伴随写入失败
- 企业环境若使用代理,需额外处理 containerd/docker 的代理参数
不同场景下的配置建议
| 场景 | 建议架构 | 重点配置 |
| 个人开发者 | 1 个测试集群 + 1 个节点组 | 控制面公网限制办公 IP,2 台 m6a.large 即可 |
| 企业用户 | 多 AZ 集群 + 独立测试/生产环境 | 节点组分层,系统组件与业务组件隔离 |
| 跨境业务 | 按用户区域就近部署多个 EKS 集群 | 配合 Global Accelerator、Route 53 延迟路由 |
| 网站应用 | ALB Ingress + ACM + Route 53 | HTTP 跳转 HTTPS,开启 WAF |
| 数据库业务 | EKS 连接 RDS/ElastiCache | 优先私网互通,限制安全组来源 |
如果是高并发 API 场景,节点组建议至少拆成两层:系统组件层和业务层,避免监控、日志、Ingress 与应用抢占资源。还可以通过 taints/tolerations 把核心服务固定在更高配置节点上。
故障排查清单:比盲目重建集群更省时间
节点加入失败
依次检查 IAM 角色、用户数据、私网出网、EKS API 访问、安全组。最有效的方法是直接登录节点查看 kubelet 日志与 bootstrap 日志。
Pod 一直 Pending
优先看 kubectl describe pod。常见原因包括节点资源不足、PVC 未绑定、节点选择器不匹配、污点未容忍、对应可用区没有可用节点。
Service 有 EXTERNAL-IP 但访问超时
检查负载均衡器监听器是否正常、后端目标组健康检查是否通过、安全组是否放行 80/443、应用容器是否真正监听对应端口。
集群升级后业务异常
先看是否有 API 版本弃用、Ingress Controller 或 CSI Driver 未同步升级、PodDisruptionBudget 配置过严导致节点滚动失败。升级前务必在测试环境跑一次版本兼容检查。
AWS PayPal代付 优化建议:上线后重点做这 4 类优化
安全优化
- AWS PayPal代付 控制面 API 不要长期全网开放,限制来源 IP 或改私网访问
- 节点放私有子网,公网入口只交给 ALB/NLB
- 使用 IAM Role for Service Account,不要把 AWS 凭证写进 Secret
- 为 Ingress 前置 WAF,至少拦截常见扫描流量
性能优化
- 节点规格优先统一 CPU 架构,避免镜像兼容问题
- CoreDNS、kube-proxy、CNI 插件预留独立资源
- 通过 HPA 与 Cluster Autoscaler/Karpenter 配合自动扩缩
- 对高连接服务优先压测 NLB 与 ALB 路径差异
成本优化
- 非核心工作负载放 Spot 节点组
- 镜像体积控制在合理范围,降低拉取与存储成本
- 日志不要无限制输出到 CloudWatch,设置保留天数
- 测试环境按时自动缩容或停机
稳定性优化
- 关键业务至少两个 AZ,每个 AZ 保证可调度容量
- 为 Deployment 设置 requests/limits,避免资源争抢
- 配置 PodDisruptionBudget,防止滚动升级时实例被清空
- 定期做节点替换演练、证书轮换演练和恢复演练
如果你正在做 AWS 上运行 Kubernetes 的方案评估,可以把判断标准收敛成一句话:先看团队能不能管好网络、权限和升级,再决定是否上 EKS。EKS 本身创建不难,真正影响交付速度的是 VPC、子网、节点组、入口流量、数据库连通和后续变更能力。按本文步骤先做一套最小可运行环境,再扩展到生产,会比一开始追求“大而全”的架构更稳。

如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup 他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。