searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

从零搭建集群:手把手教程,使用天翼云CCE快速部署一个高可用的生产级K8s集群

2026-05-14 14:17:13
1
0

一、搭建之前:先搞清楚你要什么

在动手之前,你需要回答三个问题:

问题 为什么重要 你的答案决定了什么
跑什么业务? 决定节点规格和数量 核心交易系统要高配,日志采集可以低配
要多高的可用性? 决定架构是单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分钟后,你会感谢今天的自己。

0条评论
0 / 1000
思念如故
1810文章数
3粉丝数
思念如故
1810 文章 | 3 粉丝
原创

从零搭建集群:手把手教程,使用天翼云CCE快速部署一个高可用的生产级K8s集群

2026-05-14 14:17:13
1
0

一、搭建之前:先搞清楚你要什么

在动手之前,你需要回答三个问题:

问题 为什么重要 你的答案决定了什么
跑什么业务? 决定节点规格和数量 核心交易系统要高配,日志采集可以低配
要多高的可用性? 决定架构是单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分钟后,你会感谢今天的自己。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0