托管集群不是甩手掌柜:从自建 K8s 迁移到 ACK 后的 5 个生产级踩坑
概述 “控制面全托管”——这句话让不少团队以为迁移到 ACK 托管集群后就能当甩手掌柜。实际上,托管只解决了 etcd、kube-apiserver、kube-controller-manager、kube-scheduler 这几个控制面组件的运维,数据面的问题一个不少。 我曾在一次 120+ 微服务的 K8s 迁移项目中,把自建集群切到 ACK 托管集群 Pro 版。迁移过程用了 3 个月,零故障切换——但切换之后的第一个月,凌晨告警没断过。不是 ACK 本身有问题,而是托管集群和自建集群在"看不见的地方"有很多行为差异,这些差异在自建集群时被你自己的运维习惯掩盖了,到托管集群上才暴露出来。 这篇文章把我踩过的 5 个最痛的坑整理出来,每个都附根因分析和修复方案。如果你正准备从自建 K8s 迁移到 ACK,或者刚迁移完正在经历告警风暴,这篇文章能帮你少走弯路。 先说结论:这 5 个坑不是 ACK 的 bug,而是从自建迁移到托管时的认知差。自建集群时你完全掌控每个组件,出了问题能从头排查;托管后控制面是个黑盒,你得换一套思路来运维。 踩坑一:网络插件选型——Flannel 还是 Terway,选错就是性能灾难 问题背景 迁移到 ACK 时第一个决策就是网络插件。ACK 支持两种:Flannel 和 Terway。这两个东西选错了,后面所有网络相关的性能问题都跟它有关。而且集群创建完成后不支持切换——选错了只能重建集群。 我在这个项目上选了 Flannel,原因很简单:自建集群用的也是 Flannel,迁移时 Pod 网段不用改,应用配置零调整。上线两周后,问题开始暴露。 先是某个微服务的 P99 延迟从自建集群的 170ms 飙升到 230ms。应用层没改过,代码没变,唯一变的是底层网络。然后是等保 2.0 审计,审计员要求 Pod 流量可审计,Flannel 的 Pod IP 在独立网段,VPC 流日志抓不到——直接开了一个中风险项。 根因分析 Flannel 在阿里云上基于 VPC 自定义路由实现跨节点 Pod 通信。简单说就是每个节点分一个 Pod CIDR 子网,Pod 的流量通过 VPC 路由表转发。这个方案能用,但有三个硬伤:...