K8S中部署 Nacos 集群

1. 准备

  • Git
  • K8S
  • kubectl
  • helm

咱也没想到 K8S 部署系列能搞这么多次,我一个开发天天干运维的活,前端后端运维测试工程师实至名归。
Snipaste_2024-07-05_09-06-05.png

2. 方案选择

https://github.com/nacos-group/nacos-k8s

我替你们看了一下,有好几种方式能部署,但我们选择其中一种。

image.png

主要是其他的部署方式我也不想验证啊,我只选了最简单的 nacos-operator。跟着我部署,包跑起来的。

3. 利用 nacos-operator 搭建 Nacos 集群

先看看文档:https://github.com/nacos-group/nacos-k8s/blob/master/operator/README-CN.md

3.1 先把仓库拉到本地

git clone git@github.com:nacos-group/nacos-k8s.git

3.2 安装nacos-operator

cd nacos-k8s/operatorhelm install nacos-operator ./chart/nacos-operator --namespace infrastructure

安装完成之后提示:

NAME: nacos-operatorLAST DEPLOYED: Fri Jun 28 09:10:41 2024NAMESPACE: infrastructureSTATUS: deployedREVISION: 1

3.3 修改配置文件并生效

# 配置文件示例目录
cd config/samples# 这个表示集群并使用MySQL进行持久化
vim nacos_cluster_mysql.yaml

nacos_cluster_mysql.yaml:

apiVersion: nacos.io/v1alpha1
kind: Nacos
metadata:name: nacos-devnamespace: infrastructure
spec:type: clusterimage: nacos/nacos-server:v2.2.3replicas: 1env:# 开启鉴权- name: NACOS_AUTH_ENABLEvalue: "true"- name: NACOS_AUTH_TOKENvalue: "XXXXXXXXXX"- name: NACOS_AUTH_IDENTITY_KEYvalue: "XXXXXX"- name: NACOS_AUTH_IDENTITY_VALUEvalue: "XXXXXX"resources:requests:cpu: 100mmemory: 512Milimits:cpu: 500mmemory: 1GimysqlInitImage: "registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql-client:10.2.15-r0"database:type: mysqlmysqlHost: <HOST>mysqlDb: <DB>mysqlUser: <USER>mysqlPort: <PORT>mysqlPassword: <PASSWROD>config: |management.endpoints.web.exposure.include=*

开启鉴权:Nacos 提供了一个管理后台,部署成功后通过 host:port/nacos 访问。如果我们将这个路径暴露到公网,那么任何人都能访问。可怕的是, Nacos API 接口的 path 也是 /nacos
那么一旦开启,配置中心API 将直接对外,配置中心里面的东西是什么就不用多说了。

也有同学说我保证它只能在内网访问就行了吧?这当然可以,Nacos 也是这样说的。

image.png

但我还是建议打开这个开关,因为一旦有人非常不小心暴露了出去,那你就得提桶。我们应该做的是把鉴权打开,然后把管理员权限给老板,如果他没改默认密码,我们还要提醒他修改默认。懂我意思了吧?

image.png

mysqlInitImage:这是 initContainer 的镜像,initContainer 是 k8s中的概念,表示服务启动之前先做一些操作。在这个场景中是连接上MySQL,然后创建库表这些操作。我实测没有生效,会报错 No Datasource set,所以需要我们自己先初始化好库表以及插入必要的记录。
执行这个MySQL初始化脚本

No Datasource set 有很多的原因,有可能是我刚刚的这种情况,也有可能MySQL用户没有权限等等。遇到问题可以在 issue 看看其他大佬的骚操作。
Issues · nacos-group/nacos-k8s (github.com)

3.4 验证集群是否可用

根据刚刚的配置文件,我们可以访问这个路径来查看Nacos的管理后台,当然,这是通过内网访问的。http://nacos-dev-headless.infrastructure:8848/nacos,访问能看见管理后台就大功告成了。可以使用默认的账户密码登录:nacos/nacos

image.png

3.5 在Springboot程序中集成Nacos

先在管理后台创建好命名空间和dataId 配置文件等

了解Springboot 的配置读取机制,想装x的(bushi)看这个:21. Externalized Configuration (spring.io)英语看不懂就看这个:Felo搜索 - 你的免费AI智能搜索引擎,不是把中文的内容给你了你都能挑出毛病?好吧!

image.png

太长不看就让我给你嚼一下,然后喂给你:

工作目录下的 config 目录中的配置文件先加载,配置文件 bootstrap 比 application 先加载。所以我们只要把配置文件挂载到工作目录下的config中就行了。

老规矩,先整理好配置 bootstrap.properties

spring.application.name=<app-name>
server.port=8080
spring.profiles.active=<profile>spring.cloud.nacos.config.server-addr=nacos-dev-0.nacos-dev-headless.infrastructure.svc.cluster.local:8848
spring.cloud.nacos.config.enabled=true
spring.cloud.nacos.config.refresh-enabled=true
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.username=<username>
spring.cloud.nacos.password=<password>
spring.cloud.nacos.config.namespace=74a2a3bc-cded-4090-b326-993dba2871e6
spring.cloud.nacos.config.group=DEFAULT_GROUPspring.cloud.nacos.config.shared-configs[0].data-id=redis-dev.properties
spring.cloud.nacos.config.shared-configs[1].data-id=kafka-dev.properties
spring.cloud.nacos.config.shared-configs[2].data-id=xxl-job-dev.properties
spring.cloud.nacos.config.shared-configs[3].data-id=druid-dev.properties

然后,在 k8s 配置文件中挂载配置文件:ConfigMaps | Kubernetes 或者这个 k8s deployment挂载配置文件-Felo搜索

最后当然是在应用中引入 Nacos 的依赖,因为我只使用配置中心,我只引入了

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.10-RC1</version>
</dependency>

启动服务,查看监听查询

image.png

elegant!

Ref

集群模式部署 | Nacos 官网

nacos-operator方式部署

Nacos API 接口

属性配置列表

MySQL初始化脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3225713.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于JavaSpringBoot+Vue+uniapp微信小程序校园宿舍管理系统设计与实现(7000字论文参考+源码+LW+部署讲解)

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

msvcr71.dll丢失有什么好的解决方法?科学分析msvcr71.dll文件

msvcr71.dll丢失其实非常的常见&#xff0c;因为这个msvcr71.dll文件是经常要用到的&#xff0c;会由于你的操作不当&#xff0c;而导致这个msvcr71.dll丢失&#xff01;今天我们就来给大家详细的说说msvcr71.dll文件丢失的解决方法。 一.msvcr71.dll丢失是怎么一回事 msvcr71…

杆塔倾斜在线监测装置

概述 我国约960万平方公里已经基本实现电网和基站通讯全覆盖&#xff0c;但我国地貌复杂多样&#xff0c;大部分杆塔需要安装在野外&#xff0c;在安装时并不能保证地基的结实可靠&#xff0c;一不小心就可能导致杆塔的倾斜倒塌。 在通信铁塔倾斜现象发生发展的初期&#xff0…

C++系列-String(五)String初步的模拟实现

&#x1f308;个人主页&#xff1a; 羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 今天&#xff0c;我们主要讲述的是如何实现String&#xff0c;首先&#xff0c;我们将在上一篇文章的初步实现String功能的前提上进一步对DString的功能进行完善。 这个头文件…

发送者的可靠性

这篇文章是了解MQ消息的可靠性&#xff0c;即&#xff1a;消息应该至少被消费者处理1次 那么问题来了&#xff1a; 我们该如何确保MQ消息的可靠性&#xff1f;如果真的发送失败&#xff0c;有没有其它的兜底方案&#xff1f; 首先&#xff0c;我们一起分析一下消息丢失的可能…

企业电脑加密软件推荐丨谁是最好用的电脑加密软件

随着信息技术的发展和互联网的普及&#xff0c;企业面临的网络安全威胁日益增多&#xff0c;数据泄露事件频发&#xff0c;这不仅会给企业带来经济损失&#xff0c;还会严重影响企业的声誉和客户信任。因此&#xff0c;企业电脑加密成为保护敏感数据、防止信息泄露的重要手段。…

前端构建工具(webpackvite)

这里写目录标题 构建工具webpack介绍配置文件简介entryoutputloaderbabel插件开发服务器&#xff08;webpack-dev-server&#xff09;soureMap vite 构建工具 当我们习惯了在node中编写代码的方式后&#xff0c;在回到前端编写html、css、js这些东西会感觉到各种的不便。比如:…

ES6:JavaScript开发者的速成手册(二)

目录 前言Reflect APIProxyProxy 与 defineProperty 的区别 SymbolsGeneratorsgenerator处理异步代码 PromiseAsyncModuleAPI介绍 前言 本教程将分为两大部分深入解读ES6的精髓。将带你领略ES6的基础语法&#xff0c;将深入探讨ES6的高级特性&#xff0c;通过浅显易懂的语言和大…

UML建模案例分析-时序图和类图的消息传递

概念 类图和时序图之间的交互是通过消息&#xff0c;即成员函数的调用体现的。但要遵循一定的原则&#xff0c;可参见&#xff1a; 面向对象原则之一&#xff0c;面相对象原则之二。 例子 一个电子商务系统&#xff0c;会员可通过电子商务系统购买零件。具体功能需求如下&am…

防火墙组网实验配置

一、实验拓扑图&#xff1a; 二、实验要求&#xff1a; 1,DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问. 2,生产区不允许访问互联网,办公区和游客区允许访问互联网 3,办公区设备10.0.2.10不允许访问DMz区的FTP服务器和HTTP服务器,仅能…

分享一下我简陋的SRC兵器库

之前经常有些朋友问我挖SRC一般都用什么工具或插件&#xff0c;其实我之前多多少少都有分享过&#xff0c;今天汇总一下吧&#xff0c;基本上都是我目前使用率比较高的工具或插件。 0x00 首先是信息收集的攻击&#xff0c;我在【我挖SRC是怎么做信息收集的&#xff1f;】中其…

RocketMQ-六大场景实操指南

RocketMQ-六大场景实操指南 普通消息创建Topic创建Group测试消息收发 定时消息创建Topic创建Group消息发送 事务消息创建Topic创建Group消息收发 顺序消息创建Topic创建Group消息收发 另外两大场景消息异常运维体验感受初次体验给小白新手的建议进阶体验应用场景 关于云消息队列…

捷配浅谈PCB基板的导热系数如何影响性能

PCB基板的导热性重要性不言而喻&#xff0c;有许多材料可用作 PCB 基板&#xff0c;除了不同的导热性外&#xff0c;还提供许多其他好处。PCB 基板材料也会影响高温下对导体引起的热应力和高速/高频下的损耗。在选择超出导热系数的基板时&#xff0c;应考虑许多设计权衡&#x…

大模型时代:人工智能与大数据平台的深度融合

在当今的大数据时代&#xff0c;数据已经成为驱动业务增长和创新的关键因素。与此同时&#xff0c;随着人工智能技术的不断进步&#xff0c;AI在大规模数据处理和分析方面的能力日益强大。因此&#xff0c;将人工智能与大数据平台相结合&#xff0c;可以为企业带来巨大的商业价…

《简历宝典》07 - 发布3天就有百人订阅的《简历宝典》,做个第一阶段总结

目录 1 本篇概要 2 最初输出了糟糕的简历模板 3 简历文档名的注意事项 4 “个人信息”模块必须写的内容 5 “个人信息”模块那些非必须写的内容 5.1 校招 - 本科生 - 个人信息的展现 5.2 社招 - 专科生 - 个人信息的展现 6 最后 1 本篇概要 《简历宝典》已经输出了一…

基于Unity3D的发布第一个Rokid AR眼镜应用

发布AR眼镜Demo 一、发布配置二、快速开发第一个AR Demo场景1.创建新场景2.替换Main Camera3. 创建Capsule 三、打包apk应用四、将apk安装到Rokid Master Pro 眼镜1.WiFI-ADB连接AR Studio 与PC2.USB直连Rokid眼镜安装3.运行查看应用 五、Rokid AR系列教程 一、发布配置 UXR2.…

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站&#xff0c;点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用&#xff1a;静态网页服务 之后&#xff0c;事实证明&#xff1a; 总而言之&#xff0c;自动化是一个很令人着迷的东西&#xff0c;摆脱重复繁琐的工作&#xff0c;解放了双手的…

MES:连接计划与执行的桥梁

想象一下&#xff0c;你的企业拥有一份完美的生产计划&#xff0c;但如何将这份计划准确无误地转化为实际生产中的每一步操作&#xff1f;这就是MES大展身手的地方。MES作为ERP&#xff08;企业资源计划&#xff09;与车间自动化控制之间的桥梁&#xff0c;确保生产计划能够顺畅…

校准报告可以引用数据与加盖CNAS章吗?

在咨询校准机构在给他们出具校准报告/证书时&#xff0c;是否可以引用数据&#xff0c;引用数据部分是不是可以加盖CNAS章&#xff1f; 首先&#xff0c;了解一下报告中带CNAS的含义&#xff1a;CNAS-CL01:2018 文件第一章中提出“本准则规定了实验室能力、公正性以及一致运作的…

超越单兵作战:多智能体 Multi-Agent System (MAS)

超越单兵作战&#xff1a;多智能体 Multi-Agent System (MAS) Multi-Agent System 是指一个系统中有多个智能体同时工作的情况。在这样的系统中&#xff0c;每个智能体都具有一定程度的自主性&#xff0c;可以独立执行任务、做决定&#xff0c;并且能够与其他智能体进行交互&a…