国内公有云容器服务运维指令手册

运维指令手册 21.1 KB 原文

国内公有云容器服务运维指令手册

覆盖平台:阿里云 ACK / ACR、腾讯云 TKE / TCR、华为云 CCE / SWR、火山引擎 VKE(含镜像仓库与加速器) 底座版本:Kubernetes 1.30 ~ 1.36(各云支持窗口不同,见第 2 章) 约定:# 本地终端,$ 云 CLI,<xxx> 为占位符;kubectl 一律写全。 边界说明:托管集群的控制面不归你管,本手册讲的是"在托管边界之外,你还能且必须做什么"。 更新时间:2026-11(版本事实核对至 2026-11-05)


目录

  1. 全景与托管边界
  2. 版本生命周期与强制升级
  3. 集群形态与选型
  4. CLI、凭据与 kubeconfig
  5. 集群创建与节点池
  6. 弹性伸缩
  7. 网络
  8. 存储与备份
  9. 镜像仓库 ACR / TCR / SWR
  10. 国内镜像加速与拉取
  11. 可观测、日志与排障边界
  12. 升级窗口与灰度
  13. 灾备与跨地域
  14. 安全、权限与等保合规
  15. 成本治理
  16. 混合云与多集群
  17. 故障速查
  18. 附录

1. 全景与托管边界

1.1 四家平台速览(2026 年公开资料)

维度 腾讯云 TKE 阿里云 ACK 华为云 CCE 火山引擎 VKE
单集群最大节点数 50,000+ 15,000 5,000 VPC-CNI 模型 5,000
控制面 SLA 99.95% 99.95% 99.95% 99.95%
节点类型 原生节点 / 超级节点 / 注册节点 / 普通 CVM ACK Pro / Serverless(ECI) / Edge / One CCE Standard / Turbo / Autopilot 托管集群 / 注册集群 / 无 ECS 节点集群
弹性 HPA/VPA/CA/Karpenter,数十种指标 AHPA 预测弹性 + HPA/VPA/CronHPA/KEDA Volcano Gang 调度、CA/Karpenter HPA/CronHPA/IHPA/KEDA
特色 超级节点秒级沙箱、单集群混布多节点类型 达摩院 AHPA 预测伸缩、1000 节点约 40 秒 Turbo 裸金属容器网络、Volcano 批调度 与字节系可观测/中间件集成
多集群 注册集群纳管多云/边缘 ACK One / 混合云节点池 多云容器平台 MCP 多云管理平台
日志/监控 CLS + 托管 Prometheus SLS + ARMS Prometheus LTS + AOM TLS / VMP

上述规模与最高版本来自 2026 年中的公开评测,具体数值以各云当前产品文档为准;云厂商几乎每年都会刷新上限。

1.2 责任共担:什么归你、什么归云

层 托管集群 你负责
etcd / apiserver / scheduler / controller-manager 云托管,不可 SSH、不可备份 etcd 版本选择、升级窗口、API 兼容
控制面 HA / 证书 / 补丁 云负责 关注公告与 EOL 日期
Worker 节点 多数形态下你负责(超级节点/Serverless 除外) 系统补丁、内核、运行时、磁盘、安全组
网络插件 / CNI 云提供并托管配置 Pod/Service 网段规划、安全组、Ingress
工作负载 / 数据 — 全部
镜像 — 仓库、扫描、签名、生命周期
日志与监控采集 云提供托管服务 采集配置、告警规则、留存与费用

最重要的一条:托管集群没有 etcd 快照可打。所以 K8s 分册里那套 etcdctl snapshot save 在这里用不上;灾备必须靠 Velero/清单 GitOps + 数据层备份 + 镜像异地复制(见第 13 章)。

1.3 与传统自建集群的运维差异

事项 自建 kubeadm 托管集群
控制面挂了 自己修 提工单,看状态页
证书轮换 kubeadm certs renew 云平台自动
升级 逐节点手工 控制台/CLI 触发,控制面先升、节点池后升
节点 NotReady 自己查 kubelet 先查云控制台节点状态与事件,再考虑登录
网络不通 iptables/CNI 全自查 先排 安全组 / VPC 路由 / 云负载均衡
apiserver 日志 直接看 通过审计日志服务查看

2. 版本生命周期与强制升级

2.1 三家官方策略(2026-11 核对)

阿里云 ACK(文档更新 2026-07-03):

规则 内容
支持范围 只有最近 3 个 minor 可新建集群
当前在支持 1.36(2026-05 发布,EOS 2027-05-30)、1.35(2026-02,EOS 2027-02-28)、1.34(2025-09,EOS 2026-09-30)
已停止支持 1.33 / 1.32 / 1.31 / 1.30 / 1.28 / 1.26 …(1.30 EOS 2026-06-30)
升级 一次只升一个 minor,不能跳级、不能降级;patch 只能升到最新 patch
版本格式 x.y.z-aliyun.n(n 是 ACK 补丁号)
强制升级 过期版本不允许长期运行,提前 ≥ 1 个月 短信/邮件/站内信通知,会连组件、控制面、节点池一起升

腾讯云 TKE(官方版本日历):

K8s 版本 GA EOM EOFS EOS
1.36 2026-10-25 2028-04-25 2028-10-25 2029-01-25
1.34 2025-11-25 2027-05-25 2027-11-25 2028-02-25
1.32 2025-06-25 2026-12-25 2027-06-25 2027-09-25
1.30 2024-08-20 2026-02-20 2026-08-20 2026-11-20
1.28 2024-04-28 2025-10-28 2026-04-28 2026-07-28

⚠️ 时间敏感:以 2026-11-05 计,TKE 1.30 距离 EOS 只剩约两周。还在 1.30 的集群应立刻排升级窗口;过期后不能新建、不再有补丁、SLA 不保证,平台保留强制升级权(提前不少于 30 天通知)。

华为云 CCE Autopilot(官方版本策略):

版本 状态 商用起 EOS
v1.36 商用 2026-08 2028-08
v1.35 商用 2026-05 2028-05
v1.34 商用 2026-03 2028-03
v1.32 商用 2025-08 2027-08
v1.31 商用 2025-04 2027-04
v1.28 EOS — 2026-02
v1.27 EOS — 2025-10

CCE 版本格式 vX.Y.Z-rN(rN 是 CCE 补丁号);EOS 后不提供技术支持、漏洞修复,SLA 失效,平台可能在 EOS 前自动升级。

CCE Standard/Turbo 与 Autopilot 的版本日历不同,查文档时别串台。

2.2 版本治理 SOP

# 1) 每季度盘一次所有集群版本与 EOS 日期
kubectl version --short 2>/dev/null || kubectl version
kubectl get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}'

# 2) 检查业务用到的废弃 API(升级前必做)
kubectl api-resources | grep -iE 'policy/v1beta1|extensions/v1beta1|apiextensions.k8s.io/v1beta1'
kubectl get pdb -A -o yaml | grep -i 'policy/v1beta1'      # 老 PDB API
kubectl get ingress -A -o yaml | grep -i 'networking.k8s.io/v1beta1'

# 3) 打升级工单/变更单,明确:目标版本、升级顺序、回滚方案、业务验证清单

坑:升级最常见的翻车不是控制面,而是业务用了已移除的 API(extensions/v1beta1 Ingress、policy/v1beta1 PDB/PSP 等)。控制面升上去后,旧清单直接apply 失败或控制器失效。先把清单迁到新 API,再升集群。

2.3 强制升级的现实

三家都保留"过期版本强制升级"的权利,通知期约 30 天。强制升级可能同时动:集群组件 → 控制面 → 节点池/节点。把它当作不可控变更对待:提前自己升,别等平台替你升。


3. 集群形态与选型

形态 节点管理 适用 运维重点
托管标准集群(ACK Pro / TKE 普通 / CCE Standard) 你管 ECS/CVM 节点 常规业务 节点池、系统盘、安全组、补丁
Serverless / 超级节点(ECI / 超级节点 / CCE Autopilot / VKE 无节点集群) 不管节点,按 Pod 计费 波峰波谷、批处理、CI 规格、镜像拉取速度、冷启动、配额
专有/裸金属增强(CCE Turbo、TKE 原生节点) 部分托管 高性能网络、金融 网络模型、ENI 配额
边缘集群(ACK Edge) 边缘节点自治 IoT、门店 云边网络、离线自治
注册集群 纳管外部/其他云集群 混合云、多云统一视图 连通性、凭据、权限边界
多集群舰队(ACK One / TKE 多集群 / MCP) 统一管理面 多地域、多环境 应用分发、差异化配置

选型的关键分界:要不要为节点运维负责。团队没有节点运维能力、流量波动大,优先 Serverless;有稳定负载且要精细控制内核/网络,用托管标准集群。


4. CLI、凭据与 kubeconfig

4.1 三家 CLI

# 阿里云 aliyun CLI
aliyun version
aliyun configure list
aliyun cs GET /clusters --header "Content-Type=application/json"     # 列集群(示意)

# 腾讯云 tccli
tccli --version
tccli configure list
tccli tke DescribeClusters

# 华为云 hcloud CLI
hcloud --version
hcloud CCE ListClusters

# 通用:kubectl
kubectl config get-contexts
kubectl config current-context
kubectl config use-context <context>

4.2 获取 kubeconfig

# 阿里云(示意,参数以当前 CLI 版本为准)
aliyun cs GET /k8s/<cluster_id>/user_config > ~/.kube/ack-prod
# 腾讯云
tccli tke DescribeClusterKubeconfig --ClusterId <cluster_id>
# 华为云
hcloud CCE ShowClusterConfig --cluster_id <cluster_id>

export KUBECONFIG=~/.kube/ack-prod:~/.kube/tke-prod
kubectl config view --minify | head

坑:云控制台下载的 kubeconfig 常带短期凭据/临时 token(几小时~几天过期),还有的通过云 CLI 插件动态取凭据(如 ACK 的凭据插件、TKE 的 kubeconfig 需配合 CAM)。写进 CI/CD 时要用长期最小权限的服务账号 + 定期轮换,别把个人控制台凭据塞进流水线。

4.3 最小权限

  • 阿里云 RAM:给 CI 账号 cs:Describe* / cs:Get*,推送镜像给 ACR 的 cr:Push* 等,按资源组/命名空间收敛。
  • 腾讯云 CAM / 华为 IAM:同理,避免 AdministratorAccess / *FullAccess。
  • Pod 内访问云资源:优先用 RRSA(ACK)/ OIDC 身份联邦 / 工作负载身份,别在 Secret 里长期存 AK/SK。
# 多集群下每次破坏性操作前确认上下文
kubectl config current-context
kubectl cluster-info

5. 集群创建与节点池

5.1 创建前必定的四件事

  1. 网段规划:VPC 网段、Pod 网段、Service 网段三者互不重叠,且不与办公网 / VPN / 其他集群 / 线下 IDC 冲突。云上 VPC 一旦创建,网段改不了。
  2. 网络模型:VPC-CNI(Pod 直接拿 VPC IP,性能好但吃 ENI 配额)vs 全局路由 / Overlay(省 IP,多一层转发)。
  3. 可用区:控制面多 AZ 由云托管,节点池自己要跨 AZ 分布;单 AZ 节点池 = 单点。
  4. 容器运行时与 OS 镜像:云提供的镜像预装了云组件,别随意换成自定义镜像,否则节点可能加不进集群。
# 创建后核验
kubectl get nodes -L topology.kubernetes.io/zone -o wide
kubectl get pods -n kube-system -o wide
kubectl get sc
kubectl get cm -n kube-system kubeadm-config -o yaml 2>/dev/null | grep -iE 'podSubnet|serviceSubnet'

5.2 节点池运维

kubectl get nodes -o wide
kubectl describe node <node> | tail -30
kubectl top nodes
kubectl get events -A --sort-by=.lastTimestamp | grep -i node | tail -20
操作 注意
扩容节点池 关注 ECS/CVM 库存、ENI/IP 配额、安全组规则
缩容 先 cordon + drain,确认 PDB 不会卡住;云控制台缩容一般会自己 drain,但仍要盯
换系统盘/镜像 走节点池滚动替换,不要手工重装
节点自愈 开启云提供的节点自愈/健康检查,别自己写脚本反复重启

云厂商的节点池有自己的"期望节点数"。手工 kubectl delete node 后,节点池控制器可能自动补一台,表现为"删了又回来"。要缩容就去改节点池,不要在 kubectl 里删。


6. 弹性伸缩

层次 手段 说明
Pod 层 HPA / VPA / CronHPA / KEDA 指标来自托管 Prometheus 或云监控
节点层 Cluster Autoscaler / Karpenter / 云弹性节点池 关注扩容速度与配额
预测 ACK AHPA(基于历史流量预测) 适合周期性波峰
批任务 Volcano(CCE)/ Kueue / 超级节点 Gang 调度、队列
kubectl get hpa -A
kubectl get vpa -A 2>/dev/null
kubectl get scaledobject -A 2>/dev/null
kubectl describe hpa <name> -n <ns>
kubectl get events -A --sort-by=.lastTimestamp | grep -iE 'scaled|autoscal' | tail -20

坑:HPA 依赖 metrics-server / 云指标适配器。指标缺失时 HPA 显示 <unknown> 且不扩容,业务直接被打爆。把"指标链路可用性"纳入告警,而不是只监控 CPU。


7. 网络

7.1 排查顺序(云上和自建完全不同)

# 1) Pod 与 Service
kubectl get pod,svc,endpoints,endpointslices -n <ns>
kubectl get networkpolicy -A
# 2) Ingress / Gateway
kubectl get ingress -A
kubectl describe ingress <name> -n <ns>
# 3) 云负载均衡(控制台 / CLI)
# 4) 安全组与 VPC 路由(控制台,命令行看不到)
# 5) DNS
kubectl -n <ns> exec <pod> -- nslookup kubernetes.default

云上 70% 的"服务不通"出在安全组、VPC 路由表、CLB 后端健康检查和证书,不是 Pod 本身。先在云控制台看 CLB 后端是否全健康,再去 kubectl describe。

7.2 常见网络坑

现象 原因
Service ClusterIP 不通 节点安全组没放行节点间通信 / 网络插件异常
Ingress 404 IngressClass 不匹配、路径重写、证书绑定错
CLB 后端全不健康 健康检查路径返回非 200、Pod 就绪探针太严、节点端口未放行
Pod 拿不到 IP VPC-CNI 模式 ENI / 辅助 IP 配额耗尽
跨 AZ 延迟高 节点池单 AZ / 流量跨 AZ 转发
访问公网超时 NAT 网关 / EIP / 安全组出方向
访问云上数据库慢 走了公网而非 VPC 内网地址
#  quotas 相关(控制台为准),命令行先看事件
kubectl get events -A --sort-by=.lastTimestamp | grep -iE 'eni|ip|quota|limit' | tail -20

8. 存储与备份

kubectl get sc -o yaml
kubectl get pvc -A | grep -v Bound
kubectl describe pvc <pvc> -n <ns>
kubectl get volumesnapshot -A 2>/dev/null
存储类型 云产品 要点
块存储 云盘 ESSD / CBS / EVS 单可用区,Pod 跨 AZ 调度会挂载失败
文件存储 NAS / CFS / SFS 多 AZ 共享,适合共享读
对象存储 OSS / COS / OBS 走 CSI 或直接 SDK,适合备份与非结构化数据
快照 云盘快照 与 CSI VolumeSnapshot 集成,注意一致性

坑:块存储云盘不能跨可用区挂载。节点池跨 AZ + 单副本 StatefulSet + 云盘 PVC = 节点故障后 Pod 永远 Pending。要么固定节点池单 AZ,要么用文件存储/多副本。

8.1 备份体系(托管集群没有 etcd 快照)

# Velero 备份集群资源 + PVC 快照
velero install --provider alibabacloud --plugins <云插件镜像> \
  --bucket <bucket> --secret-file ./credentials-cloud
velero backup create full-$(date +%F) --include-namespaces <ns> --snapshot-volumes
velero backup get
velero backup describe <name> --details
velero restore create --from-backup <name>

四层备份缺一不可:

  1. 声明式清单:GitOps(Argo CD / Flux)里的所有 yaml / Helm values。
  2. 集群资源:Velero 定时备份。
  3. 持久化数据:云盘快照 + 数据库自己的 PITR(RDS 备份、自建库 binlog/WAL)。
  4. 容器镜像:ACR/TCR/SWR 跨地域复制(见 9.4)。

9. 镜像仓库 ACR / TCR / SWR

9.1 域名与登录

云 仓库 域名形态
阿里云 ACR 个人版 / 企业版 registry.cn-<region>.aliyuncs.com/<namespace>/<repo>;企业版 <instance>-registry.cn-<region>.cr.aliyuncs.com
腾讯云 TCR 个人版 / 企业版 ccr.ccs.tencentyun.com/<namespace>/<repo>;企业版 <instance>.tencentcloudcr.com
华为云 SWR swr.cn-<region>.myhuaweicloud.com/<org>/<repo>
# 通用 docker login(凭据用 RAM/CAM/IAM 子账号或临时 token)
docker login registry.cn-hangzhou.aliyuncs.com -u <user> -p '<token>'
docker login ccr.ccs.tencentyun.com -u <user> -p '<token>'
docker login swr.cn-north-4.myhuaweicloud.com -u <user> -p '<token>'

docker tag app:1.0 registry.cn-hangzhou.aliyuncs.com/prod/app:1.0
docker push registry.cn-hangzhou.aliyuncs.com/prod/app:1.0

# k8s 拉取凭据
kubectl create secret docker-registry regcred -n <ns> \
  --docker-server=<registry> --docker-username=<user> --docker-password='<token>'

生产环境优先用镜像免密拉取组件(ACK 的 aliyun-acr-credential-helper、TKE 的 TCR 免密插件、CCE 的 SWR 免密),别把长期 token 以 Secret 形式散落在各命名空间。

9.2 仓库治理

项 做法
命名空间 按环境/团队分(prod/、staging/、team-a/)
版本策略 禁用 latest;用 Git SHA 或语义化版本 + 不可变 tag
镜像扫描 开启安全扫描,高危漏洞阻断部署
签名 企业版支持镜像签名/验签(配合 KMS)
清理 设置版本保留策略,定期 GC,控制存储费
权限 推送/拉取分离,按 namespace 授权
审计 开启操作审计,记录谁推了什么 tag
# 查看集群里实际用的镜像来源(排查是否还在拉公网)
kubectl get pods -A -o jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' \
  | sed 's/:.*//' | sort | uniq -c | sort -rn | head -20

9.3 镜像加速器(与仓库是两回事)

云 加速器 获取方式
阿里云 https://<专属ID>.mirror.aliyuncs.com 控制台「容器镜像服务 ACR → 镜像工具 → 镜像加速器」,每账号独立
腾讯云 控制台生成的个人加速域名;https://mirror.ccs.tencentyun.com 为公共地址(腾讯云内网效果好) TCR → 镜像加速
华为云 按区域生成的 SWR 加速地址 SWR → 镜像加速器
DaoCloud https://docker.m.daocloud.io(公共) 免注册,应急备用
开放原子 AtomHub https://atomhub.openatom.cn 仅约 336 个基础可信镜像,适合高安全场景

9.4 跨地域/跨云复制

# 三家企业版都支持"实例间镜像复制"规则(控制台配置)
# 手动兜底:skopeo 跨仓库拷贝
skopeo copy --all \
  docker://registry.cn-hangzhou.aliyuncs.com/prod/app:1.0 \
  docker://ccr.ccs.tencentyun.com/prod/app:1.0 \
  --dest-creds <user>:<token>

灾备要覆盖镜像:集群清单恢复了、数据恢复了,但镜像仓库在单地域且没复制,照样起不来。


10. 国内镜像加速与拉取

10.1 2026 年现状(重要)

  • 多数高校 / 公益 Docker Hub 公共加速已停止服务或限制匿名访问,继续把清华、中科大、上交等老地址写进 registry-mirrors 往往是拖慢而不是加速。
  • 最稳的是云厂商为账号单独分配的专属加速器(ACR / TCR / SWR),有配额、有维护、不会因为滥用被关。
  • 网上流传的 https://abc123.mirror.aliyuncs.com 是别人账号的地址,别抄;要么解析不到,要么被对方限流甚至账号注销后失效。
  • 公共源(DaoCloud 等)可作应急备用,但不该作为生产唯一依赖。

10.2 验证一个加速地址是否还活着

# 200 或 401 都算服务正常(401 是要求鉴权)
curl -I --connect-timeout 5 https://<加速地址>/v2/

# 实测拉取
time docker pull --platform linux/amd64 hello-world
docker pull <加速地址>/library/nginx:alpine 2>/dev/null || true

10.3 daemon.json 正确写法

{
  "registry-mirrors": ["https://<你的专属ID>.mirror.aliyuncs.com"],
  "log-driver": "json-file",
  "log-opts": { "max-size": "100m", "max-file": "3" }
}
systemctl daemon-reload && systemctl restart docker
docker info | grep -A5 'Registry Mirrors'

坑:registry-mirrors 是串行回退列表。配 5 个地址、前 3 个超时,每次 pull 都要多等几十秒。只配 1 个主力 + 最多 1 个备用,且每月复测一次。

10.4 容器运行时不是 Docker 时

K8s 节点用 containerd,加速器要配在 /etc/containerd/certs.d/docker.io/hosts.toml(containerd 1.7+/2.x):

# /etc/containerd/certs.d/docker.io/hosts.toml
server = "https://docker.io"
[host."https://<加速地址>"]
  capabilities = ["pull", "resolve"]
  override_path = true
systemctl restart containerd
crictl pull nginx:alpine

云托管节点由平台预置,一般不给你改 containerd 配置。优先把业务镜像同步到同地域的 ACR/TCR/SWR 内网地址,这比在节点上配加速器更稳、更快、也不受公网波动影响。

10.5 内网部署的推荐路径

外网构建机 → push 到 ACR/TCR/SWR 企业版
            → 跨地域复制到内网可达区域
            → 集群通过 VPC 内网地址拉取
            → 完全不依赖 Docker Hub

11. 可观测、日志与排障边界

11.1 日志与监控服务

云 日志 指标 / 告警
阿里云 SLS(日志服务) ARMS Prometheus / 云监控
腾讯云 CLS 托管 Prometheus / 云监控
华为云 LTS AOM / CES
火山引擎 TLS VMP / 云监控
# 集群侧能自己拿到的
kubectl get events -A --sort-by=.lastTimestamp | tail -50
kubectl top nodes
kubectl top pods -A --sort-by=memory | head -20
kubectl logs -f <pod> -n <ns> --tail=200
kubectl describe pod <pod> -n <ns>

11.2 托管集群看不到的东西

想看 能不能
apiserver / etcd 进程状态 不能,看云控制台集群状态与健康检查
控制面日志 部分通过审计日志服务提供
etcd 数据 / 快照 不能
控制面节点 SSH 不能
Master 组件参数 不能改(部分平台提供有限自定义)

因此排障要有分层意识:Pod 问题自己查;节点问题查云控制台 + 登录节点;控制面/API 不可用直接看云状态页并提工单,别在节点上白折腾两小时。

11.3 常见"看起来像 K8s 问题,其实是云资源问题"

现象 云侧根因
Pod Pending 大量 ECS/CVM 库存不足、节点池配额、ENI/IP 耗尽
PVC Pending 云盘在另一可用区、云盘配额、CSI 插件异常
LoadBalancer Service 一直 Pending CLB 配额、EIP 不足、子网 IP 耗尽
节点 NotReady 反复 云主机被抢占/回收、系统盘满、云监控组件异常
镜像拉取慢/失败 公网出口、加速器失效、跨地域拉镜像
API 调用 429/限流 云 OpenAPI 限流、控制面限流
证书 related 报错 云负载均衡证书过期(不是 K8s Secret)

12. 升级窗口与灰度

12.1 升级顺序

1. 清单 API 兼容性治理(废弃 API 迁移)
2. 测试集群升到目标版本,跑核心回归
3. 控制面升级(控制台/CLI 触发,云托管,通常分钟级)
4. 节点池滚动升级(分批,可设并发数与间隔)
5. 插件/组件升级(CNI、CSI、Ingress Controller)
6. 业务验证 + 观察期

12.2 升级前检查

kubectl get pdb -A
kubectl get nodes -o wide
kubectl get pods -A --field-selector=status.phase!=Running | grep -v Completed
kubectl get hpa -A
kubectl api-resources | grep -i beta
# 记录当前版本与节点池配置
kubectl get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}' > /root/pre-upgrade.txt

坑:PDB 会卡住节点池 drain。升级前把 maxUnavailable: 0 / minAvailable: 100% 的 PDB 找出来评估,否则节点池滚动升级会一直停在"等待驱逐"。

12.3 回滚现实

托管集群控制面不能降级。升级出问题的兜底是:新建旧版本集群 → 从 GitOps + Velero + 数据备份恢复 → 切流量。所以"回滚方案"在托管集群里其实是重建方案,必须提前演练。


13. 灾备与跨地域

层 单地域方案 跨地域方案
控制面 云托管多 AZ 另一地域预备一套空集群 + IaC 脚本
工作负载 GitOps 清单 同一套清单分发到两地
集群资源 Velero 定时备份到 OSS/COS/OBS 备份文件跨地域复制
持久化数据 云盘快照 / RDS 备份 跨地域复制快照、数据库异地灾备
镜像 仓库同地域 企业版跨地域实例复制
入口流量 CLB 多 AZ DNS 解析切换 / GSLB
# 定期演练(至少每半年一次)
velero backup create dr-drill-$(date +%F)
velero restore create --from-backup dr-drill-<date> --namespace-mappings <原ns>:<演练ns>
kubectl get pods -n <演练ns>

灾备演练的验收标准不是"备份任务成功",而是在另一地域用备份把业务真正拉起来并跑通读写。只备份不演练等于没备份。


14. 安全、权限与等保合规

14.1 基线

  • 集群 API Server 不开放公网,或严格限定 IP 白名单
  • RAM/CAM/IAM 子账号最小权限,禁用主账号 AK
  • 开启审计日志并投递到独立日志账号,留存 ≥ 180 天(等保 2.0 三级常见要求)
  • Pod 内用工作负载身份(RRSA / OIDC)访问云资源,不落 AK/SK
  • Secret 用 KMS 加密(云托管 K8s 提供静态加密选项)
  • 镜像仓库开启扫描、签名、不可变 tag
  • NetworkPolicy 做东西向隔离;默认拒绝 + 白名单
  • 节点安全组最小化,节点不暴露 SSH 到公网
  • 开启 PSA / Pod Security Admission,禁用特权容器
  • 定期打节点 OS 与运行时补丁(云镜像更新)
  • 等保场景:留存操作审计、堡垒机运维通道、日志防篡改
kubectl get psp 2>/dev/null            # PSP 已在 1.25 移除,看到说明版本太老
kubectl get ns -o jsonpath='{.items[*].metadata.labels.pod-security\.kubernetes\.io/enforce}'
kubectl get networkpolicy -A
kubectl get sa -A | head -20

14.2 权限排查

kubectl auth can-i --list --as=system:serviceaccount:<ns>:<sa>
kubectl get clusterrolebindings -o json | jq '.items[] | select(.subjects[]?.name=="<sa>")'

15. 成本治理

成本项 常见浪费 治理
节点 节点池常驻过大、低峰不缩 CA/Karpenter、CronHPA、混合超级节点
超级节点 长期跑本该常驻的负载反而更贵 稳定负载用包年包月节点,突发用超级节点
镜像存储 历史 tag 无限堆积 版本保留策略 + 定期 GC
日志 全量采集、永久保存 分级采集、按业务设留存、冷归档
负载均衡 每 Service 一个 CLB 复用 Ingress / Gateway
云盘 删 Pod 后 PVC 未回收 定期查 Released PVC
跨区流量 跨 AZ / 跨地域调用 拓扑感知路由、同 AZ 部署
kubectl get pvc -A | grep Released
kubectl get svc -A -o wide | grep LoadBalancer
kubectl top nodes
kubectl get hpa -A

成本治理的第一刀通常是日志与镜像存储,而不是节点。先把这两个的留存策略定下来,再谈缩容。


16. 混合云与多集群

能力 阿里云 腾讯云 华为云
纳管外部集群 注册集群 注册集群 多云容器平台 MCP
多集群应用分发 ACK One 多集群管理 MCP / Karmada
云边 ACK Edge TKE Edge KubeEdge 集成
kubectl config get-contexts
kubectl --context <ctx-a> get nodes
kubectl --context <ctx-b> get nodes
# Karmada 场景
kubectl --context karmada-apiserver get clusters
kubectl --context karmada-apiserver get propagationpolicy -A

注册集群只是"统一视图",不会把自建集群变成托管集群:控制面仍归你管,etcd 仍要你备份,升级仍要你自己做。别因为控制台能看到了就以为责任转移了。


17. 故障速查

现象 优先排查 动作
kubectl 连不上 kubeconfig 过期 / 凭据插件 / API 公网白名单 重新取 kubeconfig;kubectl config current-context;云控制台看集群状态
Pod 大量 Pending 节点池配额 / ENI-IP / 库存 / PDB 云控制台节点池事件;kubectl describe pod
Pod 拿不到 IP VPC-CNI ENI/辅助 IP 配额 提配额、换网络模型或扩子网
PVC Pending 云盘跨 AZ / 配额 / CSI kubectl describe pvc;看 CSI provisioner 日志
LoadBalancer 一直 Pending CLB/EIP 配额、子网 云控制台配额页
CLB 后端不健康 健康检查路径 / 就绪探针 / 安全组 云控制台健康检查配置
Ingress 404/502 IngressClass、路径、后端 kubectl describe ingress;看 Ingress Controller 日志
镜像拉取慢/超时 加速器失效 / 跨地域 / 公网出口 curl -I <加速地址>/v2/;镜像同步到同地域仓库
HPA 不扩容 指标适配器 / metrics-server kubectl describe hpa 看 <unknown>
节点反复 NotReady 抢占式回收 / 磁盘满 / 云组件 云控制台节点事件 + 登录节点 journalctl -u kubelet
升级卡在 drain PDB 阻塞 kubectl get pdb -A;调整 PDB 再继续
升级后部分控制器失效 废弃 API 查 kubectl api-resources、迁移清单
控制面异常 云侧 看状态页 + 提工单,别在节点上找
收到强制升级通知 版本 EOS 立即排窗口自己升,别等平台
跨 AZ 服务慢 节点池单 AZ 节点池跨 AZ + 拓扑感知路由
云 OpenAPI 429 限流 退避重试、拆分调用、提配额

17.1 三分钟定位脚本

kubectl config current-context
kubectl version --short 2>/dev/null || kubectl version
kubectl get nodes -o wide
kubectl get pods -A --field-selector=status.phase!=Running | grep -v Completed
kubectl get pvc -A | grep -v Bound
kubectl get svc -A -o wide | grep LoadBalancer
kubectl get hpa -A
kubectl get events -A --sort-by=.lastTimestamp | tail -30
kubectl top nodes 2>/dev/null

18. 附录

18.1 CLI 与域名速查

云 CLI 容器服务 镜像仓库域名 日志/监控
阿里云 aliyun ACK (aliyun cs) registry.cn-<region>.aliyuncs.com SLS / ARMS
腾讯云 tccli TKE (tccli tke) ccr.ccs.tencentyun.com CLS / 托管 Prometheus
华为云 hcloud CCE (hcloud CCE) swr.cn-<region>.myhuaweicloud.com LTS / AOM
火山引擎 volcengine-cli VKE 火山镜像仓库 TLS / VMP

18.2 版本生命周期速查(2026-11)

平台 当前可建 / 主力 即将 EOS 升级规则
ACK 1.34 / 1.35 / 1.36 1.34 EOS 2026-09-30(已过)、1.35 EOS 2027-02-28 只支持最近 3 个 minor;一次一个 minor;不可降级;x.y.z-aliyun.n
TKE 1.32 / 1.34 / 1.36 1.30 EOS 2026-11-20 GA→EOM→EOFS→EOS 四阶段;过期可强制升级
CCE Autopilot 1.34 / 1.35 / 1.36 1.31 EOS 2027-04;1.28 已 EOS vX.Y.Z-rN;EOS 前可能自动升级
VKE 1.36(2026 年中公开数据) 以官方日历为准 与主流一致

版本日历变动频繁,每次升级前重新查对应云官方文档,不要以本表为唯一依据。

18.3 高危操作红线

操作 后果
把个人控制台 kubeconfig 塞进 CI 凭据过期导致发布全线失败,且权限过大
手工 kubectl delete node 缩容 节点池自动补足,或者业务被强驱
跨多个 minor 升级 / 尝试降级 不支持,可能需重建集群
升级前不查废弃 API 升级后控制器/Ingress 失效
PDB 设 minAvailable: 100% 后升级 drain 永久卡住
依赖外部公共 Docker Hub 加速器做生产 随时失效,发布中断
单地域镜像仓库不做复制 灾备时清单齐了但拉不到镜像
块存储 PVC + 跨 AZ 节点池 节点故障后 Pod 永久 Pending
在 Secret 里长期存云 AK/SK 泄露即云账号失守

18.4 与其他手册的配合

遇到这类问题 翻哪份
Pod、调度、探针、RBAC、HPA、PDB、NetworkPolicy Kubernetes 常用运维指令手册
containerd、crictl、certs.d、镜像拉取底层 containerd 常用运维指令手册
自建 Harbor、GC、复制、扫描 Harbor 镜像仓库运维指令手册
kubeadm 自建集群与 etcd 快照 Kubernetes 手册第 2/13 章
KubeSphere / Kuboard / Rainbond 装到云托管集群 对应平台分册
国产 OS 上的云主机与信创适配 国产操作系统运维指令手册
容器平台整体分层与选型 容器平台常规运维指令手册
1Panel / 宝塔在云主机上的部署 对应面板分册

维护建议:云产品的版本日历、配额上限、CLI 参数与镜像仓库域名随区域和版本变动,本文的表格是 2026-11-05 核对的基线。落地时把「区域 + 集群版本 + EOS 日期 + 仓库域名 + 配额清单 + 升级窗口」写入集群台账,并设置 EOS 前 90/60/30 天三级提醒。