K8S离线部署Nacos集群【Oracle作外部数据源】

一、前言

  由于公司的要求下要使Nacos集群以Oracle作为外部数据源,前期咱们已经阐述了如何在本地搭建(Nacos集群搭建【Oracle作外部数据源】),本次将带领大家在k8s上部署Nacos集群并以Oracle作为外部数据源。

二、软件包

  • nacos-finder-plugin.tar官方镜像包
  • nacos-server-oracle.tar自定义镜像包

说明:nacos-server-oracle.tar该镜像包经过本人dockerfile构建修改、加入了oracle相关变量、参数、以及支持oracle 11g的二次编译nacos-server.jar程序包。

三、环境

  • k8s1.23.1
  • nacos-server2.3.2
  • Oracle 11g RAC集群
    在这里插入图片描述

四、部署

1.创建命名空间

ls
cat 00-ns.yaml apiVersion: v1
kind: Namespace
metadata:name: nacosclusterlabels:app: nacosclusterkubectl apply -f 00-ns.yaml

在这里插入图片描述

2.创建存储类

cat 00-sc.yamlkind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:name: local-storage2
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumerkubectl apply -f 00-sc.yaml

3.创建pv卷

 cat pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:name: local-storage-nacos-pv-0namespace: nacoscluster     # 空间名称labels:name: local-storage-nacos-pv-0
spec:capacity:storage: 100GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storage2local:path: /srv/nacos_data #存储卷的实际位置,与nfs暴露的文件地址相同nodeAffinity:required:nodeSelectorTerms:        # 节点选择- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node3            # 根据自己节点名称
---
apiVersion: v1
kind: PersistentVolume
metadata:name: local-storage-nacos-pv-1namespace: nacoscluster     # 空间名称labels:name: local-storage-nacos-pv-1
spec:capacity:storage: 100GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storage2local:path: /srv/nacos_data #存储卷的实际位置,与nfs暴露的文件地址相同nodeAffinity:required:nodeSelectorTerms:        # 节点选择- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node4            # 根据自己节点名称
---
apiVersion: v1
kind: PersistentVolume
metadata:name: local-storage-nacos-pv-2namespace: nacoscluster     # 空间名称labels:name: local-storage-nacos-pv-2
spec:capacity:storage: 100GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storage2local:path: /srv/nacos_data #存储卷的实际位置,与nfs暴露的文件地址相同nodeAffinity:required:nodeSelectorTerms:        # 节点选择- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node5            # 根据自己节点名称kubectl apply -f  pv.yaml

注意:需要在对应节点(例:node3、node4、node5)创建该目录/srv/nacos_data

3.给相应节点打标签

# 用于nacos容器绑定到指定节点(可选)
kubectl label nodes node3 app=nacos
kubectl label nodes node4 app=nacos
kubectl label nodes node5 app=nacos

4.创建nacos集群

cat nacos-pvc.yaml###使用自建数据库;使用Ingress发布配置后台###
---
apiVersion: v1
kind: Service
metadata:name: nacos-headlessnamespace: nacosclusterlabels:app: nacos-headless
spec:type: ClusterIPclusterIP: Noneports:- name: tcp-8848protocol: TCPport: 8848targetPort: 8848- name: tcp-9848protocol: TCPport: 9848targetPort: 9848- name: tcp-9849protocol: TCPport: 9849targetPort: 9849- name: tcp-7848protocol: TCPport: 7848targetPort: 7848selector:app: nacos
---
# 修改以下数据库配置
apiVersion: v1
kind: ConfigMap
metadata:name: nacos-cmnamespace: nacoscluster
data:oracle.db.name: "traffic_dev"oracle.host: "192.168.200.122"oracle.password: "Sjgj20241107"oracle.port: '1521'oracle.user: "zkdn_os_init"nacos-auth-enable: 'true'nacos-auth-identity-key: nacosPlus496nacos-auth-identity-value: nacosPlus628nacos-auth-token: TmFjb3NQbHVzMDEyMzQ1Njc4OTAxMjM0NTY3ODk5ODc2NTQzMjEwMDEyMzQ1Njc4OTk4NzY1NDMyMTAwMTIzNDU2Nzg5
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: nacosnamespace: nacoscluster
spec:serviceName: nacos-headlessreplicas: 3template:metadata:labels:app: nacosannotations:pod.alpha.kubernetes.io/initialized: "true"spec:affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: "app"operator: Invalues:- nacostopologyKey: "kubernetes.io/hostname"initContainers:- name: peer-finder-plugin-installimage: '192.168.200.133:8080/sjgj/nacos/nacos-peer-finder-plugin:1.1'resources: {}volumeMounts:- name: pv-storage-elastic-mastermountPath: /home/nacos/plugins/peer-findersubPath: peer-findercontainers:- name: nacosimagePullPolicy: Alwaysimage: 192.168.200.133:8080/sjgj/nacos/nacos-server:v2.3.2resources:requests:memory: "2Gi"cpu: "500m"ports:- name: client-portcontainerPort: 8848protocol: TCP- name: client-rpccontainerPort: 9848protocol: TCP- name: raft-rpccontainerPort: 9849protocol: TCP- name: old-raft-rpccontainerPort: 7848protocol: TCPenv:- name: NACOS_REPLICASvalue: "3"- name: ORACLE_SERVICE_HOSTvalueFrom:configMapKeyRef:name: nacos-cmkey: oracle.host- name: ORACLE_SERVICE_DB_NAMEvalueFrom:configMapKeyRef:name: nacos-cmkey: oracle.db.name- name: ORACLE_SERVICE_PORTvalueFrom:configMapKeyRef:name: nacos-cmkey: oracle.port- name: ORACLE_SERVICE_USERvalueFrom:configMapKeyRef:name: nacos-cmkey: oracle.user- name: ORACLE_SERVICE_PASSWORDvalueFrom:configMapKeyRef:name: nacos-cmkey: oracle.password- name: MODEvalue: "cluster"- name: SPRING_DATASOURCE_PLATFORMvalue: oracle- name: NACOS_APPLICATION_PORTvalue: "8848"- name: PREFER_HOST_MODEvalue: "hostname"- name: NACOS_SERVERSvalue: "nacos-0.nacos-headless.nacoscluster.svc.cluster.local:8848 nacos-1.nacos-headless.nacoscluster.svc.cluster.local:8848 nacos-2.nacos-headless.nacoscluster.svc.cluster.local:8848"- name: NACOS_AUTH_ENABLEvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-enable- name: NACOS_AUTH_IDENTITY_KEYvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-identity-key- name: NACOS_AUTH_IDENTITY_VALUEvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-identity-value- name: NACOS_AUTH_TOKENvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-tokenvolumeMounts:- name: pv-storage-elastic-mastermountPath: /home/nacos/peer-findervolumeClaimTemplates:- metadata:name: pv-storage-elastic-masterspec:accessModes: [ "ReadWriteOnce" ]storageClassName: "local-storage2"resources:requests:storage: 100Giselector:matchLabels:app: nacoskubectl apply -f nacos-pvc.yaml 

5.创建服务端口

cat nacos-service.yaml#特别强调一点,k8s的版本不同ingress配置的一些细节不同,具体可以看看官网,
#我展示的配置信息,只能保证1.23.1版本的k8s可以使用。
#nacos-k8s里也有ingress的配置,可以参考一下
#./nacos-k8s/deploy/nacos/nacos-no-pvc-ingress.yaml
apiVersion: v1
kind: Service
metadata:name: nacosnamespace: nacoscluster
spec:ports:- name: tcp-8848protocol: TCPport: 8848targetPort: 8848- name: tcp-9848protocol: TCPport: 9848targetPort: 9848- name: tcp-9849protocol: TCPport: 9849targetPort: 9849- name: tcp-7848protocol: TCPport: 7848targetPort: 7848selector:app: nacos
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nacosnamespace: nacosclusterlabels:nacos: ingress-httpannotations:kubernetes.io/ingress.class: nginx
spec:rules:- host: nacos.hdjsjb.com #自定义,ingress规定只能使用域名,没有的可以去修改host文件http:paths:- path: / #自定义,建议就这样,不然在springCloud服务注册时报错405pathType: Prefix #必须配置匹配策略backend:service: name: nacos-headlessport: number: 8848kubectl apply -f nacos-service.yaml

说明:可以在kuboard上查看

在这里插入图片描述
在这里插入图片描述

6.Nacos镜像内application.properties配置展示

cat application.properties# nacos-oracle-config
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.plugin.datasource.log.enabled=true##### If use Oracle as datasource:
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${ORACLE_DATABASE_NUM:1}
db.url.0=jdbc:oracle:thin:@//${ORACLE_SERVICE_HOST}:${ORACLE_SERVICE_PORT:1521}/${ORACLE_SERVICE_DB_NAME}
db.user.0=${ORACLE_SERVICE_USER}
db.password.0=${ORACLE_SERVICE_PASSWORD}
## DB connection pool settings
db.pool.config.connectionTimeout=${DB_POOL_CONNECTION_TIMEOUT:30000}
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
db.pool.config.driver-class-name=oracle.jdbc.OracleDriver
db.testQuery=select 1 from dual
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.enabled=${NACOS_AUTH_ENABLE:false}
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.console.ui.enabled=true
nacos.core.param.check.enabled=true

五、测试

用户名/密码:nacos/nacos
http://< IP >:8848/nacos/#/login
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、结束语

  到此k8sNacos集群部署Oracle作外部数据源使用讲解就完毕啦,如果有其它问题欢迎大家评论留言,如果觉得还可以,那么给作者点赞、收藏、关注吧!‌

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

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

相关文章

【Java开发】Springboot集成mybatis-plus

1、引入 mybatis-plus 依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.0</version> </dependency> <!--mysql依赖--> <dependen…

技术成长战略是什么?

文章目录 技术成长战略是什么&#xff1f;1. 前言2. 跟技术大牛学成长战略2.1 系统性能专家案例2.2 从开源到企业案例2.3 技术媒体大V案例2.4 案例小结 3. 学习金字塔和刻意训练4. 战略思维的诞生5. 建议 技术成长战略是什么&#xff1f; 1. 前言 在波波的微信技术交流群里头…

【开源免费】基于Vue和SpringBoot的课程答疑系统(附论文)

博主说明&#xff1a;本文项目编号 T 070 &#xff0c;文末自助获取源码 \color{red}{T070&#xff0c;文末自助获取源码} T070&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

【二分查找】力扣 275. H 指数 II

一、题目 二、思路 h 指数是高引用引用次数&#xff0c;而 citations 数组中存储的就是不同论文被引用的次数&#xff0c;并且是按照升序排列的。也就是说 h 指数将整个 citations 数组分成了两部分&#xff0c;左半部分是不够引用 h 次 的论文&#xff0c;右半部分论文的引用…

【LeetCode】169.多数元素

题目连接&#xff1a; https://leetcode.cn/problems/majority-element/solutions/2362000/169-duo-shu-yuan-su-mo-er-tou-piao-qing-ledrh/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述&#xff1a; 思路一&#xff1a; 使用哈希表unordered_map记录每个元…

SpringBoot整合knife4j,以及会遇到的一些bug

这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”&#xff0c;文中的讲解内容简单清晰&#xff0c;易于学习与理解&#xff0c;下面请大家跟着小编的思路慢慢深入&#xff0c;一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧&#xff01; 一…

️️耗时一周,肝了一个超丝滑的卡盒小程序

前言 先看看成品效果&#xff1a; 在上个月&#xff0c;我出于提升自己的英语造句能力的目的&#xff0c;想要找一个阅读或者练习造句类的英语学习 APP&#xff0c;但是最终找了几个 APP 不是不太好用就是要付费。于是我转换思路&#xff0c;找到了一本书&#xff0c;叫《36…

aardio - 汉字笔顺处理 - json转sqlite转png

本代码需要最新版 godking.conn 库&#xff0c;请自行下载&#xff01; 如果没有安装 odbc for sqlite 驱动&#xff0c;可以使用 godking.conn.driver.sqlite3.install() 安装。 也可以在此下载自行安装&#xff1a;http://www.chengxu.online/show.asp?softid267 1、将js…

Pick:一款安全易用的密码管理器

Pick&#xff1a;一款安全易用的密码管理器 pick A secure and easy-to-use CLI password manager for macOS and Linux 项目地址: https://gitcode.com/gh_mirrors/pick/pick 在当今数字化时代&#xff0c;密码管理已成为每个人不可或缺的一部分。为了保护您的在线账户…

C/C++当中的内存对齐

一&#xff1a;为什么要存在内存对齐 对与计算机而言&#xff0c;一次性可以取出处理的单元大小为字&#xff0c;在32位系统下&#xff0c;一次性可以取出4个字节&#xff0c;而在64位系统下&#xff0c;一次性可以取出8个字节&#xff0c;而一个地址对应一个内存单元&#xff…

Elasticsearch ILM 故障排除:常见问题及修复

作者&#xff1a;来自 Elastic Stef Nestor 大家好&#xff01;我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时&#xff0c;我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

C# 命名空间(Namespace)

文章目录 前言一、命名空间的定义与使用基础&#xff08;一&#xff09;定义语法与规则&#xff08;二&#xff09;调用命名空间内元素 二、using 关键字三、嵌套命名空间 前言 命名空间&#xff08;Namespace&#xff09;在于提供一种清晰、高效的方式&#xff0c;将一组名称与…

数字图像处理内容详解

1.对比度 最大亮度 / 最小亮度 2.邻域 m邻接&#xff1a;对于像素p和q&#xff0c;如果p和q四临接&#xff0c;或p和q八临接且两者的四邻域的交集为空 通路&#xff1a;如果俩点全部是K邻接&#xff08;K代表4&#xff0c;8&#xff0c;m&#xff09;&#xff0c;则说明存在K…

流媒体之linux下离线部署FFmpeg 和 SRS

前言 用户对网络做了限制&#xff0c;只能访问指定的网址&#xff0c;和没网没啥区别&#xff0c;导致无法连接外网&#xff0c;无法获取安装包&#xff0c;还有一些编译需要的开源工具 用户需要用平台查看库房的海康摄像头实时监控&#xff0c;只能在库房里一台纯净的ubantu…

【鸿蒙生态崛起】开发者如何把握机遇,应对挑战,打造卓越应用体验?

文章目录 每日一句正能量前言鸿蒙简析鸿蒙生态的认知和了解鸿蒙生态的崛起分析 鸿蒙生态下开发时遇到的挑战开发工具不完善技术难度生态竞争抓住机遇、应对挑战 鸿蒙生态未来的发展趋势1. 全场景智慧生活的推动者2. 技术创新的引领者3. 开放合作的倡导者对鸿蒙生态和开发者的建…

MySQL 主从同步一致性详解

MySQL主从同步是一种数据复制技术&#xff0c;它允许数据从一个数据库服务器&#xff08;主服务器&#xff09;自动同步到一个或多个数据库服务器&#xff08;从服务器&#xff09;。这种技术主要用于实现读写分离、提升数据库性能、容灾恢复以及数据冗余备份等目的。下面将详细…

第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0

时间轴&#xff1a; 演示案例&#xff1a; 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF 题目&源码审计 开发指南-NodeJS-安全 SecGuide 项目、 环境搭建-NodeJ…

Linux:network:wireshark:IO图尖峰实例

从下图可以看出来,这个尖峰还是很明显,比平均值大出不少。这个图是之前发生问题时的一个例子,放到这里做为参考。 在看峰值的时候,需要注意,时间间隔单位,一秒的间隔和100毫秒的间隔看到的信息可能不一样,比如上图,按照100毫秒展示差距很大,平均不到200,峰值到了70…

MySQL——数据类型

一、常见的数据类型及分类 其中上述的数值类型包含了整形和浮点型&#xff0c;文本、二进制类型主要是字符串类型。 整数类型&#xff08;Integer Types&#xff09;&#xff1a; TINYINT&#xff1a;范围为-128到127或0到255&#xff08;无符号&#xff09;&#xff0c;用于…