保姆级教程:用阿里云云效流水线+ACK,5步搞定Nacos 2.5.0集群自动化部署

张开发
2026/4/17 17:57:06 15 分钟阅读

分享文章

保姆级教程:用阿里云云效流水线+ACK,5步搞定Nacos 2.5.0集群自动化部署
5步极简实战云效流水线ACK部署Nacos集群全指南刚接触云原生的开发者常被复杂的工具链劝退——ACR镜像推送、Secret配置、YAML编写、流水线编排每个环节都可能成为拦路虎。本文将用最直白的操作演示带你在阿里云上完成Nacos集群的自动化部署。无需死记硬背命令跟着做就能获得可复用的标准方案。1. 环境准备与避坑清单在开始部署前请确保准备好以下三把钥匙阿里云账号开通ACK、ACR、云效三项服务新用户有免费额度本地工具安装Docker和kubectl版本需≥1.24MySQL实例5.7版本建议配置2核4G以上注意ACK集群节点建议选择CentOS 7.9或Alibaba Cloud Linux 2避免glibc版本兼容问题。测试环境可用2核4G×3节点生产环境建议4核8G×3节点。常见初始化问题排查表问题现象可能原因解决方案kubectl连接超时未配置kubeconfig在ACK控制台点击集群凭证获取配置ACR登录失败AccessKey权限不足在RAM控制台添加AliyunContainerRegistryFullAccess权限MySQL连接报错未开启远程访问执行GRANT ALL ON *.* TO root%并重启服务2. 镜像处理从DockerHub到ACR官方镜像直接部署存在两个隐患海外拉取速度慢且版本不可控。通过ACR中转可完美解决# 步骤1拉取官方镜像并重标签 docker pull nacos/nacos-server:2.5.0 docker tag nacos/nacos-server:2.5.0 registry.cn-hangzhou.aliyuncs.com/your-ns/nacos:2.5.0 # 步骤2登录ACR需提前开通 docker login registry.cn-hangzhou.aliyuncs.com \ --usernameyouremail.com \ --passwordyour-password # 步骤3推送镜像 docker push registry.cn-hangzhou.aliyuncs.com/your-ns/nacos:2.5.0关键细节镜像命名空间(your-ns)需先在ACR控制台创建推送失败时检查网络策略临时关闭防火墙systemctl stop firewalld验证镜像在ACR控制台应看到大小为742MB左右的镜像3. ACK集群的黄金配置3.1 命名空间与Secret创建隔离部署环境能避免资源混乱执行以下命令创建安全边界kubectl create namespace nacos-prod数据库凭证和ACR密钥必须通过Secret存储# MySQL密码Secret注意-n指定命名空间 kubectl create secret generic nacos-mysql-auth \ --from-literalusernameroot \ --from-literalpasswordYourDB123! \ -n nacos-prod # ACR拉取密钥 kubectl create secret docker-registry acr-auth \ --docker-serverregistry.cn-hangzhou.aliyuncs.com \ --docker-usernameyouremail.com \ --docker-passwordyour-password \ -n nacos-prod3.2 数据库初始化Nacos集群依赖MySQL存储配置需提前执行初始化SQLCREATE DATABASE nacos_config CHARACTER SET utf8mb4; USE nacos_config; -- 从Nacos GitHub获取nacos-mysql.sql脚本执行 SOURCE /path/to/nacos-mysql.sql;重要确保MySQL实例的白名单添加了ACK集群的Pod网段默认为172.16.0.0/164. 云效流水线魔术编排4.1 流水线创建登录云效控制台 → 流水线 → 新建流水线 → 选择空白模板代码源选择Git仓库存放YAML文件添加Kubernetes发布阶段4.2 关键配置示例- stage: deploy jobs: - job: k8s-deploy steps: - name: deploy-nacos type: KubernetesApply with: cluster: ${{cluster_id}} namespace: nacos-prod yamlPath: manifests/ imagePullSecrets: acr-auth避坑指南集群连接使用云效自动生成的cluster_id不要手动填写YAML文件需包含完整的StatefulSet配置后文提供模板镜像地址必须与ACR推送的完全一致5. 集群部署与验收5.1 核心YAML模板创建manifests/nacos-statefulset.yaml文件apiVersion: apps/v1 kind: StatefulSet metadata: name: nacos-cluster namespace: nacos-prod spec: serviceName: nacos-headless replicas: 3 template: spec: imagePullSecrets: - name: acr-auth containers: - name: nacos image: registry.cn-hangzhou.aliyuncs.com/your-ns/nacos:2.5.0 env: - name: MODE value: cluster - name: SPRING_DATASOURCE_PLATFORM value: mysql - name: MYSQL_SERVICE_HOST value: rm-uf6xxxx.mysql.rds.aliyuncs.com - name: MYSQL_SERVICE_USER valueFrom: secretKeyRef: name: nacos-mysql-auth key: username - name: MYSQL_SERVICE_PASSWORD valueFrom: secretKeyRef: name: nacos-mysql-auth key: password配套Service配置# nacos-headless.yaml apiVersion: v1 kind: Service metadata: name: nacos-headless namespace: nacos-prod spec: clusterIP: None ports: - port: 8848 name: server selector: app: nacos5.2 验证命令大全# 查看Pod状态等待所有Pod变为Running kubectl get pods -n nacos-prod -w # 检查服务端点 kubectl get svc -n nacos-prod # 实时查看日志 kubectl logs -f nacos-cluster-0 -n nacos-prod # 访问控制台替换EXTERNAL-IP curl http://EXTERNAL-IP:8848/nacos当你在浏览器看到Nacos登录页恭喜一个生产可用的集群已就绪。记得修改默认密码并配置Ingress实现域名访问。这套方案已在多个中型项目验证稳定运行超过半年无故障。

更多文章