MicroK8s多节点集群搭建实战:从单节点到高可用架构
引言:为什么需要多节点集群?
你是否还在为单节点Kubernetes(K8s)环境的稳定性和性能担忧?随着应用规模增长,单节点架构面临资源瓶颈、单点故障等风险。MicroK8s作为轻量级K8s发行版,不仅支持快速部署单节点环境,还能无缝扩展为高可用集群。本文将带你完成从单节点到多节点高可用架构的搭建,解决实际运维中的集群扩展痛点。读完本文,你将掌握:多节点集群初始化、节点添加/移除、高可用配置及状态监控的完整流程。
准备工作:环境与工具
硬件要求
- 控制节点:至少2核CPU、4GB内存、20GB存储
- 工作节点:至少1核CPU、2GB内存、10GB存储
- 网络:所有节点间需互通TCP/UDP端口(默认包括2379-2380、6443、10250等)
软件要求
- 操作系统:Ubuntu 20.04+/Debian 11+(推荐)或其他支持Snap的Linux发行版
- 工具:
snap包管理器(预装于Ubuntu)
安装MicroK8s
在所有节点执行以下命令安装MicroK8s:
sudo snap install microk8s --classic
官方文档:README.md
单节点部署与验证
启动与状态检查
sudo microk8s start
sudo microk8s status --wait-ready
启用核心组件
sudo microk8s enable dns dashboard storage
dns:提供集群内部域名解析dashboard:Web管理界面storage:持久化存储支持
验证单节点状态
sudo microk8s kubectl get nodes
sudo microk8s kubectl get pods -A
多节点集群搭建:从初始化到节点加入
初始化控制节点
在主节点(第一个节点)执行以下命令生成加入令牌:
sudo microk8s add-node
输出示例:
Join node with: microk8s join 192.168.1.100:25000/abcdef1234567890
加入工作节点
在其他节点执行主节点生成的命令:
sudo microk8s join 192.168.1.100:25000/abcdef1234567890
验证集群状态
在主节点执行:
sudo microk8s kubectl get nodes
输出示例:
NAME STATUS ROLES AGE VERSION
node-1 Ready <none> 10m v1.28.3
node-2 Ready <none> 5m v1.28.3
高可用架构配置
启用高可用模式
在主节点执行:
sudo microk8s enable ha-cluster
该命令会自动配置Dqlite数据库集群,确保控制平面高可用。
高可用配置脚本:upgrade-scripts/001-switch-to-dqlite/commit-master.sh
验证高可用状态
检查Dqlite集群状态:
sudo microk8s kubectl get pods -n kube-system | grep dqlite
集群管理:节点维护与监控
查看集群信息
sudo microk8s kubectl cluster-info
集群信息脚本:scripts/inspect.sh
移除节点
在主节点执行:
sudo microk8s remove-node <node-name>
监控集群状态
启用Prometheus和Grafana监控:
sudo microk8s enable prometheus grafana
访问Grafana:http://<主节点IP>:3000(默认账号密码:admin/prom-operator)
常见问题与解决方案
节点加入失败
- 网络问题:确保所有节点间端口互通(25000、16443等)
- 令牌过期:重新生成令牌:
sudo microk8s add-node --fresh
集群状态异常
查看集群日志:
sudo microk8s inspect
日志文件路径:/var/snap/microk8s/current/inspection-report.tar.gz
总结与展望
通过本文,你已掌握MicroK8s从单节点到多节点高可用集群的搭建流程。关键步骤包括:环境准备、单节点部署、集群初始化、节点加入及高可用配置。MicroK8s的轻量级设计使其成为边缘计算、开发测试的理想选择。
未来可进一步探索:
- 自动扩缩容配置
- 跨区域集群部署
- 备份与恢复策略
项目教程:README.md
集群测试脚本:tests/libs/clustering.sh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





