一、搭建之前:先搞清楚你要什么
在动手之前,你需要回答三个问题:
| 问题 | 为什么重要 | 你的答案决定了什么 |
|---|---|---|
| 跑什么业务? | 决定节点规格和数量 | 核心交易系统要高配,日志采集可以低配 |
| 要多高的可用性? | 决定架构是单AZ还是多AZ | 金融级要跨AZ,内部工具单AZ够用 |
| 预算多少? | 决定用标准版还是Turbo版 | 预算充足选Turbo,追求性价比选标准版 |
我的建议:不知道选什么,就选标准版。它能覆盖你90%的场景,等业务跑起来了再评估是否需要升级。
二、第一步:创建集群——5分钟的事
登录控制台,找到容器引擎服务,点击"创建集群"。
你会看到一堆配置项,别慌,我帮你划重点:
2.1 集群基本信息
| 配置项 | 建议值 | 说明 |
|---|---|---|
| 集群名称 | 有意义的名字,如prod-web-cluster |
方便后续管理 |
| 地域 | 离你用户最近的区域 | 降低延迟 |
| 可用区 | 至少选2个 | 高可用的基础 |
| K8s版本 | 选最新稳定版 | 与社区保持同步,安全补丁最及时 |
2.2 节点配置——高可用的核心
这里是决定你集群是"能用"还是"扛造"的关键。
| 配置项 | 生产级建议 | 原因 |
|---|---|---|
| Master节点 | 3个,分布在3个不同AZ | 控制面高可用,一个AZ挂了集群不停 |
| Worker节点 | 至少3个,分布在2-3个AZ | 工作负载跨AZ分布,单AZ故障自动切换 |
| 节点规格 | 根据业务选,4C8G起步 | 太小会OOM,太大浪费钱 |
| 节点池 | 创建多个节点池,不同AZ | 通过节点池扩展,故障域隔离 |
关键原则:容器以集群形式部署,创建节点选择在不同的可用区,工作负载创建时设置实例数需大于2个。
为什么实例数要大于2?因为一个实例挂了,你连排查问题的机会都没有——流量直接打到剩下的实例上,如果只有1个实例,那就是全面宕机。
2.3 网络模式——两种选法
| 模式 | 适用场景 | 优缺点 |
|---|---|---|
| VPC网络 | 容器与虚拟机需要互通 | 延迟低,Pod直接用VPC IP,但受VPC路由表配额限制 |
| 容器隧道网络 | 大多数场景,通用推荐 | 跨集群互通性强,Network Policy支持全面,性能损耗可忽略 |
我的建议:不知道选什么,选容器隧道网络。它是90%场景的最优解。
2.4 存储配置
| 存储类型 | 适用场景 | 特点 |
|---|---|---|
| 云硬盘(EVS) | 有状态应用、数据库 | 高IOPS,支持快照备份 |
| 弹性文件(SFS) | 配置共享、日志 | 多Pod同时读写,NFS协议 |
| 对象存储(OBS) | 非结构化数据、备份 | 海量存储,成本极低 |
点"创建",等待10-15分钟,你的生产级集群就诞生了。
三、第二步:连接集群——让kubectl听话
集群创建完成后,在集群详情页点击"连接信息",你会看到API服务器地址和证书信息。
获取kubectl工具,配置连接:
| 步骤 | 操作 |
|---|---|
| 1 | 设置集群地址和证书 |
| 2 | 设置用户认证信息(证书+密钥) |
| 3 | 设置上下文(关联集群和用户) |
| 4 | 切换到该上下文 |
验证一下:执行kubectl get nodes,看到所有节点状态为Ready——恭喜,你的集群已经可以用了。
四、第三步:配置高可用调度——这才是生产级的灵魂
集群创建好了,但如果所有Pod都挤在同一个AZ,那跟自建集群有什么区别?
高可用的核心不是"有多个节点",而是"流量能智能分散到不同AZ"。
CCE提供了两种方式实现:
4.1 反亲和性调度策略
在工作负载的"调度策略"页签中,添加两条反亲和性规则:
| 规则 | 参数 | 效果 |
|---|---|---|
| AZ反亲和 | 拓扑域:failure-domain.beta.kubernetes.io/zone,操作符:NotIn |
同一工作负载的实例尽量分布在不同AZ |
| 主机反亲和 | 拓扑域:kubernetes.io/hostname,操作符:In |
同一工作负载的实例尽量分布在不同节点 |
配置完成后,你会发现一个神奇的现象:
- 增加1个实例 → 优先调度到AZ3
- 再增加1个实例 → 优先调度到AZ2
- 再增加1个实例 → 优先调度到AZ1中剩余的节点
这就是生产级的智能调度:不是"随便找个地方放",而是"找最安全的地方放"。
4.2 多节点池扩展
除了反亲和性,你还可以创建多个节点池,每个节点池部署在不同AZ:
| 节点池 | AZ | 用途 |
|---|---|---|
| node-pool-az1 | AZ1 | 通用工作负载 |
| node-pool-az2 | AZ2 | 核心业务,高配 |
| node-pool-az3 | AZ3 | 批量任务,低配 |
通过节点池扩展节点时,新节点自动加入对应AZ的节点池,配合反亲和性策略,实现真正的跨AZ高可用。
五、第四步:部署应用——终于到写代码的环节了
集群就绪,该部署你的应用了。
5.1 部署无状态应用
编写Deployment配置文件,设置实例数为3(生产级最低要求),选择刚才创建的镜像,一键应用。
验证:kubectl get pods,看到3个Pod分布在3个不同节点上——反亲和性策略生效了。
5.2 暴露服务
| 暴露方式 | 适用场景 |
|---|---|
| ClusterIP | 集群内服务互调 |
| NodePort | 测试环境,直接通过节点IP访问 |
| LoadBalancer | 生产环境,自动绑定负载均衡 |
生产环境强烈建议用LoadBalancer,流量自动分发到所有健康节点,单个节点挂了不影响服务。
5.3 配置Ingress
如果你有多个服务需要通过同一个域名访问,配置Ingress规则,把不同路径路由到不同Service。
这比自建Nginx反代优雅一百倍——不用改配置文件,不用 reload,改了立即生效。
六、第五步:安全加固——别等出了事故才想起来
集群跑起来了,但安全呢?
CCE提供了三层安全防护:
| 安全层 | 能力 | 操作 |
|---|---|---|
| 网络隔离 | 安全组自动创建,Master和Node分离 | 控制台修改安全组规则,放通必要端口 |
| 权限控制 | IAM + RBAC双重授权 | 开发者只能操作自己命名空间,运维管理集群 |
| 镜像安全 | 集成漏洞扫描 | 每个镜像上线前必须扫描,CVE漏洞、恶意文件、敏感信息一网打尽 |
特别提醒:Master节点的5443端口默认对特定网段放通,这是CloudShell功能的依赖,别误关了,否则你连控制台都连不上集群。
Node节点的安全组默认入方向规则是"本安全组内全部放通",出方向默认全部放通。如需加固,注意保留必要端口,尤其是出方向的DNS和镜像拉取端口。
七、第六步:弹性伸缩——让集群自己"呼吸"
业务高峰期,流量暴涨10倍,你不可能半夜起来手动加节点。
CCE支持两层弹性伸缩:
| 层级 | 触发条件 | 响应速度 |
|---|---|---|
| 工作负载伸缩(HPA) | CPU > 70%持续2分钟 | 秒级,自动增减Pod |
| 节点池伸缩(Cluster Autoscaler) | Pod处于Pending状态 | 分钟级,自动增减节点 |
这两层配合起来的效果是:
流量洪峰来了 → HPA秒级增加Pod → Pod数超过节点容量 → Cluster Autoscaler分钟级增加节点 → 流量退去 → 自动缩容 → 账单自动下降
某电商团队的数据:接入弹性伸缩后,大促期间自动扩容了150个节点,活动结束后自动缩回原规模,零人工干预,节省运维成本60%以上。
八、第七步:监控可观测——从"盲人摸象"到"上帝视角"
应用部署完了,怎么知道它跑得好不好?
CCE集成了应用运维管理(AOM),提供三位一体的可观测性:
| 维度 | 能力 | 价值 |
|---|---|---|
| Metrics | QPS、延迟、错误率,支持按版本/实例下钻 | 一眼看出哪个版本慢、哪个实例异常 |
| Tracing | 全链路调用关系可视化 | 定位问题从2小时缩短到5分钟 |
| Logging | 服务访问日志自动采集 | 不用SSH登机器,控制台直接看 |
某系统接入后,通过Trace ID追踪链路,将平均故障排查时间从2小时缩短到15分钟——提升了8倍。
九、写在最后:从零到生产,你只差这30分钟
回到开头那个凌晨两点的你。
你不需要再花三个月搭集群,不需要半夜起来修etcd,不需要手写Network Policy,不需要自己配监控告警。
CCE帮你做的事:
| 你曾经要做的 | CCE帮你做了 |
|---|---|
| 手动安装kubeadm、kubelet、etcd | 一键创建,10分钟就绪 |
| 手动配置高可用Master | 3 Master HA,自动证书管理 |
| 手动调网络插件 | 容器隧道/VPC网络,开箱即用 |
| 手动配安全组 | 自动创建,默认规则已优化 |
| 手动写弹性伸缩脚本 | HPA + Cluster Autoscaler,全自动 |
| 手动搭监控 | AOM集成,开箱即用 |
你省下来的时间,够你写三个新功能了。
从零到生产级高可用K8s集群,你需要的不是三个月,是30分钟。不是kubeadm,是几次点击。不是运维专家,是一个会写Deployment YAML的开发工程师。
别再自己造轮子了。你的代码值得跑在一个更好的平台上。
现在就去控制台,创建你的第一个生产级集群。30分钟后,你会感谢今天的自己。