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://www.mzph.cn/web/43415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RHCE】基于用户认证和TLS加密的HTTP服务(HTTPS)

目录 一、创建用户账号 二、TLS加密 三、配置http服务子配置文件 四、创建访问http服务的文件夹以及输入重定向到文件 五、配置Linux本地仓库以及Windows下的本地仓库 六、基础操作 七、测试 一、创建用户账号 用户认证 # 创建两个账户 [rootlocalhost ~]# htpasswd -…

交叉熵损失函数的使用目的(很肤浅的理解)

第一种使用方法 import torch from torch import nn # Example of target with class indices loss nn.CrossEntropyLoss() input torch.randn(3, 5, requires_gradTrue) target torch.empty(3, dtypetorch.long).random_(5) output loss(input, target) output.backward(…

可控学习综述:信息检索中的方法、应用和挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

js逆向第24例:FastMoss数据分析网站Fm-Sign加密字段破解

文章目录 一、前言二、定位关键参数三、代码实现一、前言 破解:FastMoss数据分析网站Fm-Sign加密字段 二、定位关键参数 先看一下网站加密字段是长什么样,如下图,老手估计一下子就能发现字段Fm-Sign:的密文类似md5加密后的结果。 直接全局搜索Fm-Sign:看来key也没有做混…

韦尔股份:深蹲起跳?

利润大增7倍&#xff0c;是反转信号还是回光返照&#xff1f; 今天我们聊聊光学半导体龙头——韦尔股份。 上周末&#xff0c;韦尔股份发布半年业绩预告&#xff0c;预计上半年净利润13至14亿&#xff0c;同比增幅高达 754%至 819%。 然而&#xff0c;回首 2023 年它的净利仅 …

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局&#xff1a; 1.1QVBoxLayout介绍&#xff1a; 1.2 属性介绍&#xff1a; 1.3细节理解&#xff1a; 二、QHBoxLayout-水平布局&#xff1a; 三、QGridLayout-网格布局&#xff1a; 3.1QGridLayout介绍&#xff1a; 3.2常用方法&#xff1a…

如何在 Windows 10 上恢复未保存的 Word 文档

您是否整晚都在处理一个重要的 word 文件&#xff0c;但忘记保存它了&#xff1f;本文适合您。在这里&#xff0c;我们将解释如何恢复未保存的 word 文档。除此之外&#xff0c;您还将学习如何恢复已删除的 word 文档。 从专业人士到高中生&#xff0c;每个人都了解丢失重要 W…

three完全开源扩展案例01-三角形渐变

演示地址 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.jsconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(75, box.clientWidth / box.client…

杜比全景声——空间音频技术

什么是杜比&#xff1f;是否是标清、高清、超清之上的更清晰的格式&#xff1f;杜比全景声 和传统多声道立体声的差别&#xff1f;杜比全景声音频的渲染方式&#xff1f;车载平台上杜比技术的应用&#xff1f; 杜比技术的起源 杜比实验室&#xff08;Dolby Laboratories&…

大数据基础:Hadoop之MapReduce重点架构原理

文章目录 Hadoop之MapReduce重点架构原理 一、MapReduce概念 二、MapReduce 编程思想 2.1、Map阶段 2.2、Reduce阶段 三、MapReduce处理数据流程 四、MapReduce Shuffle 五、MapReduce注意点 六、MapReduce的三次排序 Hadoop之MapReduce重点架构原理 一、MapReduce概…

讲讲 JVM 的内存结构(附上Demo讲解)

讲讲 JVM 的内存结构 什么是 JVM 内存结构&#xff1f;线程私有程序计数器​虚拟机栈本地方法栈 线程共享堆​方法区​注意永久代​元空间​运行时常量池​直接内存​ 代码详解 什么是 JVM 内存结构&#xff1f; JVM内存结构分为5大区域&#xff0c;程序计数器、虚拟机栈、本地…

【AI前沿】深度学习:神经网络基础

文章目录 &#x1f4d1;引言一、神经元和感知器1.1 神经元的基本概念1.2 感知器模型 二、多层感知器&#xff08;MLP&#xff09;2.1 MLP的基本结构2.2 激活函数的重要性2.3 激活函数2.4 激活函数的选择 三、小结 &#x1f4d1;引言 深度学习是现代人工智能的核心技术之一&…

kotlin Flow 学习指南 (三)最终篇

目录 前言Flow生命周期StateFlow 替代LiveDataSharedFlow其他常见应用场景处理复杂、耗时逻辑存在依赖关系的接口请求组合多个接口的数据 Flow使用注意事项总结 前言 前面两篇文章&#xff0c;介绍了Flow是什么&#xff0c;如何使用&#xff0c;以及相关的操作符进阶&#xff…

如何挑选适合的需求池管理系统?10款优质工具分享

本文将分享10款优质需求池管理工具&#xff1a;PingCode、Worktile、Teambition、Epicor Kinetic、TAPD、SAP IBP、Logility、RELEX Solutions、JIRA、明道云。 在管理项目和产品需求时&#xff0c;正确的工具能够大幅提高效率与透明度。如何从众多需求池工具中选择最适合团队的…

自定义类型:联合体

像结构体一样&#xff0c;联合体也是由一个或者多个成员组成&#xff0c;这些成员可以是不同的类型。 联合体类型的声明 编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫&#xff1a;共⽤体。 输出结果&#xff1a; 联合体…

【基于R语言群体遗传学】-16-中性检验Tajima‘s D及连锁不平衡 linkage disequilibrium (LD)

Tajimas D Test 已经开发了几种中性检验&#xff0c;用于识别模型假设的潜在偏差。在这里&#xff0c;我们将说明一种有影响力的中性检验&#xff0c;即Tajimas D&#xff08;Tajima 1989&#xff09;。Tajimas D通过比较数据集中的两个&#x1d703; 4N&#x1d707;估计值来…

spark shuffle写操作——UnsafeShuffleWriter

PackedRecordPointer 使用long类型packedRecordPointer存储数据。 数据结构为&#xff1a;[24 bit partition number][13 bit memory page number][27 bit offset in page] LongArray LongArray不同于java中long数组。LongArray可以使用堆内内存也可以使用堆外内存。 Memor…

秋招突击——7/9——字节面经

文章目录 引言正文八股MySQL熟悉吗&#xff1f;讲一下MySQL索引的结构&#xff1f;追问&#xff1a;MySQL为什么要使用B树&#xff1f;在使用MySQL的时候&#xff0c;如何避免索引失效&#xff1f;讲一下MySQL的事物有哪几种特征&#xff1f;MySQL的原子性可以实现什么效果&…

【区块链+跨境服务】粤澳健康码跨境互认系统 | FISCO BCOS应用案例

2020 年突如其来的新冠肺炎疫情&#xff0c;让社会治理体系面临前所未见的考验&#xff0c;如何兼顾疫情防控与复工复产成为社会 各界共同努力的目标。区块链技术作为传递信任的新一代信息基础设施&#xff0c;善于在多方协同的场景中发挥所长&#xff0c;从 而为粤澳两地的疫情…

CSS关于居中的问题

文章目录 1. 行内和块级元素自身相对父控件居中1.1. 块级元素相对父控件居中1.2. 行内元素相对于父控件居中 2. 实现单行文字垂直居中3. 子绝父相实现子元素的水平垂直居中3.1. 方案一3.1.1. 示例 3.2. 方案二3.2.1. 示例 3.3. 方案三(推荐)3.3.1. 示例 3.4. 方案四(了解一下) …