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.xdnf.cn/news/34489.html

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

相关文章

Halcon 深度学习目标分类:原理与应用全解析

摘要&#xff1a; 本文深入探讨了 Halcon 在深度学习目标分类方面的原理及广泛的应用场景。详细阐述了从数据准备到模型训练与分类决策的目标分类工作流程&#xff0c;剖析了其背后的深度学习技术支撑。同时&#xff0c;结合多个行业领域&#xff0c;展示了 Halcon 目标分类技术…

【burp】burpsuite基础(五)

Burp Suite基础&#xff08;五&#xff09; 声明&#xff1a;该笔记为up主 泷羽的课程笔记&#xff0c;本节链接指路。 警告&#xff1a;本教程仅作学习用途&#xff0c;若有用于非法行为的&#xff0c;概不负责。 抓包方式 burp在抓包上十分全面&#xff0c;这里介绍几种抓包…

固态电池产业路径思考

《固态电池产业路径思考》主要探讨了固态电池的研究思路、解决方案、已取得的成果以及TC固态电池的介绍。以下是核心内容的整理&#xff1a; 一、固态电池优势 高比能耐高温易匹配高电压镍钴锰&#xff08;NCM&#xff09;正极和金属锂负极 二、固态电池关键共性问题 固态电…

第3章.垃圾收集器与内存分配策略

概述 对象已死 引用计数法 可达性分析算法 再谈引用 生存还是死亡 回收方法区 垃圾收集算法 分代收集理论 3种垃圾收集算法 HotSpot的算法细节实现 根节点枚举 安全点 安全区域 记忆集与卡表 写屏障 并发的可达性分析 误消亡问题 经典垃圾收集器 概述 简单的一些GC CMS G1 低延…

推动行业创新 猿辅导素养课斩获“2024影响力教育品牌”奖项

近日&#xff0c;由教育界网、校长邦联合主办&#xff0c;鲸媒体、职教共创会协办的“第9届榜样教育年度盛典”评奖结果揭晓。猿辅导素养课凭借在素养教育领域的卓越表现和深远影响力&#xff0c;荣获“2024影响力教育品牌”奖项。这一殊荣不仅肯定了猿辅导素养课在教学教研和产…

Vue工程化开发中各文件的作用

1.main.js文件 main.js文件的主要作用&#xff1a;导入App.vue&#xff0c;基于App.vue创建结构渲染index.html。

注解方式的AspectJ实现方式

BookService类 package com.hkd.service;public interface BookService {public void buyJava();public int comment();void buy(); }BookServiceImp类 package com.hkd.service;import org.springframework.stereotype.Component;Component("bs") public class Bo…

侦查与监测类吊舱应用场景!

一、军事领域 侦察与监视&#xff1a; 侦查与监测类吊舱能够全天候、全气候地提供高清图像数据&#xff0c;支持军事侦察和监视任务。 通过可见光相机和红外热成像仪的结合&#xff0c;吊舱可以在白天和夜晚、晴天和恶劣天气条件下&#xff0c;为无人机等空中平台提供清晰的…

(ICLR-2022)LoRA:大型语言模型的低秩自适应

LoRA&#xff1a;大型语言模型的低秩自适应 Paper是Microsoft Corporation发表在ICLR 2022的工作 Paper Title&#xff1a;LoRA: Low-Rank Adaptation of Large Language Models Code &#xff1a;地址 Abstract 自然语言处理的主导范式包括对通用领域数据进行大规模预训练&am…

linux上修改容器网卡docker0为固定ip

修改容器为固定ip段。 1.在一次项目中发现创建的容器网段跟办公室网段有冲突的&#xff0c;导致连接不上。修改容器ip为固定ip 这是默认启动docker自动创建的。172网段 2.修改前先停用运行容器 3.在配置路径下修改vim /etc/docker/daemon.json 4.重启docker systemctl re…

群硕融合医疗器械:打造智能治疗设备管理平台,全程护航精准手术

治疗成功率更高&#xff0c;患者更信任。 科技革命在医疗领域开花 在珠海航展上&#xff0c;一群灵活穿梭于复杂地形的机器狗吸引了人们的目光&#xff0c;它们仿佛是从科幻电影中走出的“未来战士”&#xff0c;展现了科技应用的无限潜力。 与此同时&#xff0c;医疗领域同…

成都栩熙酷网络科技抖音电商为您打造无忧购物体验

在这个信息爆炸的时代&#xff0c;电子商务的便捷性让越来越多的人选择在线购物。作为一家深耕西南地区的创新型科技企业&#xff0c;成都栩熙酷网络科技有限公司&#xff08;以下简称“栩熙酷”&#xff09;始终将用户的安全与满意度置于首位&#xff0c;致力于通过先进的技术…

细节之处见真章:移门缓冲支架的功能之美

细节之处见真章&#xff0c;这句话在移门缓冲支架的设计与应用中得到了完美的诠释。移门缓冲支架不仅仅是一个简单的五金件&#xff0c;它通过一系列精心设计的功能&#xff0c;确保了移门关闭过程中的平稳和安静&#xff0c;同时为家居环境增添了实用和美学价值。下面我们将深…

Hive 中 IP 字典的应用:让你的数据分析更加精准

​ 大家好&#xff01;时隔一年&#xff0c;再次更新帖子&#xff0c;今天我们来探讨一个在大数据分析中非常实用的功能&#xff1a;在 Hive 中将连续的 IP 地址合并为一整条数据&#xff0c;作为字典使用。这项技术可以帮助我们减少数据量&#xff0c;提高数据处理效率&#x…

LCR 023. 相交链表

一.题目&#xff1a; LCR 023. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 二.我的原始解法-无&#xff1a; 三.其他人的正确及好的解法&#xff0c;力扣解法参考&#xff1a; 哈希表法及双指针法&#xff1a;LCR 023. 相交链表 - 力扣&#xff08;LeetCode&#xff0…

【spring cache】自定义redis缓存管理器自控key过期时间

目录 说明实现思路实现步骤创建项目添加依赖创建自定义缓存管理器定义redis配置redis 缓存值格式序列化redis 操作方法&#xff08;可省略&#xff09;使用 spring cache 缓存注解Cacheable说明参数value 或者 cacheNames描述类型示例 key描述类型示例 keyGenerator描述类型示例…

Linux相关概念和易错知识点(23)(进程间通信、匿名管道、进程池)

目录 1.进程间通信&#xff08;IPC&#xff09; &#xff08;1&#xff09;为什么要有进程间通信&#xff1f; &#xff08;2&#xff09;通信的前提 &#xff08;3&#xff09;通信分类 2.匿名管道 &#xff08;1&#xff09;管道使用及现象 &#xff08;2&#xff09;匿…

D745 php+mysql+电影网站 在线视频播放网站 源码 配置 文档 全套资料

电影网站 1.项目描述2.开发背景与意义3.项目功能4.界面展示5.源码获取 1.项目描述 摘要 21世纪是信息的时代&#xff0c;随着信息技术与网络技术的发展&#xff0c;其已经渗透到人们日常生活的方方面面&#xff0c;与人们是日常生活已经建立密不可分的联系。电影网站是电影业发…

JAVA |日常开发中JSTL标签库详解

JAVA &#xff5c;日常开发中JSTL标签库详解 前言一、JSTL 概述1.1 定义1.2 优势 二、JSTL 核心标签库2.1 导入 JSTL 库2.2 <c:out>标签 - 输出数据2.3 <c:if>标签 - 条件判断2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择 结束语优…

开闭原则与访问修饰符 中 的线程安全问题

开闭原则 对外扩展开放&#xff0c;对修改关闭 看下面一段代码 当我们一个类 中公共的方法本来是线程安全的&#xff0c; 被子类重写之后改变了逻辑&#xff0c;并且有新的线程去运行&#xff0c;这时候 就不是 线程安全的了 运行结果如下 而我们使用 private修饰方法3&#…