k8s集群内部署nacos集群

【Nacos】基于k8s容器化部署Nacos集群 前情纪要 仅集群内访问 内网k8s环境外网端口开放条件 nacos2.2.X版本常见问题 本地搭建集群环境轻轻松松,在服务器上面提供机器搭建也是正常,到了k8s环境内网的时候就有点偏差笔记积累 阅读详情
AI摘要

本文详细介绍了如何在Kubernetes(k8s)集群中部署Nacos服务,包括setafulset的使用、存储管理(pv/pvc)、配置管理(configmap)以及服务(service)设置,确保高可用性和持久化存储。

一、前言

    在k8s集群中部署nacos集群需要用到以下服务setafulset、pv、pvc、service、configmap,setafulset用来管理nacos服务,因为nacos服务是有状态服务,所以需要使用setafulset,pv、pvc用来挂载存储nacos数据的路径,configmap用来管理nacos配置,service用来配置无头服务和对外访问,无头服务是为了固定nacos每个节点的地址,使用cluster ip会导致pod的地址发生变化,但是使用service的无头服务就可以固定nacos每个节点的地址,即给每个nacos节点分配以下地址:nacos-0.nacos.nacos.svc.cluster.local:8848该地址解析出来的意思就是 pod名称.service名称.命名空间名称.svc.cluster.local:service端口,这个地址就是不会变得,即每个nacos服务都有了固定的地址,就类似于deployment管理的无状态服务,需要访问这些无状态服务,在集群内部可以通过 service名称.命名空间:service端口访问,举个例子就是nacos.nacos:8848

二、部署

    部署nacos前需要先部署mysql

    参考:yum安装mysql 5.7_yum安装mysql5.7-优快云博客

   创建nacos数据存储库

   mysql -u root -p

   create database nacos

   创建nacos配置数据库用户

   grant all on nacos.* to 'nacos'@'%' identified by '12345678';

   flush privileges;

  往nacos库中导入nacos初始化脚本

   在nacos官网中下载对应版本的安装包

   参考:Releases · alibaba/nacos · GitHub

   下载解压

   tar -zxvf nacos-server-1.4.2.tar.gz

   ls /root/nacos/conf/

  找到nacos库初始化脚本,在nacos库中导入

  mysql -u root -p

  use nacos

  source /root/nacos/conf/nacos-mysql.sql

   创建命名空间

     kubectl create namespace nacos

     创建nacos的yaml文件存放目录

      mkdir /opt/nacos && cd /opt/nacos

     编辑pv配置文件

     nacos集群有三个节点,所以需要创建三个不同的pv

      vi pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nacos-pv0
spec:
  storageClassName: nacos-pv    #定义模板匹配名称,用于给pvc自动匹配
  capacity:
    storage: 40Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /share/k8s/nacos/nacos01
    server: 10.1.60.22
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nacos-pv1
spec:
  storageClassName: nacos-pv    #定义模板匹配名称,用于给pvc自动匹配
  capacity:
    storage: 40Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /share/k8s/nacos/nacos02
    server: 10.1.60.22
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nacos-pv2
spec:
  storageClassName: nacos-pv    #定义模板匹配名称,用于给pvc自动匹配
  capacity:
    storage: 40Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /share/k8s/nacos/nacos03
    server: 10.1.60.22

编辑configmap配置文件

vi configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-cm
  namespace: nacos
data:
  mysql.host: "10.1.60.8"     #数据库地址
  mysql.db.name: "nacos"      #nacos数据存储库名称
  mysql.port: "6033"          #数据库端口,这里使用了proxysql所以是6033
  mysql.user: "root"     #数据库用户名
  mysql.password: "12345678"  #数据库用密码

编辑service配置文件

这里需要两个service服务,一个给nacos提供无头服务,一个给nacos提供对外访问

vi service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nacos
  namespace: nacos
  labels:
    app: nacos
spec:
  publishNotReadyAddresses: true
  clusterIP: None     #无头服务中配置clusterip为none
  ports:
    - port: 8848
      name: server
      targetPort: 8848
    - port: 9848      #选举端口
      name: client-rpc
      targetPort: 9848
      ## 兼容1.4.x版本的选举端口
    - port: 7848
      name: old-raft-rpc
      targetPort: 7848
  selector:
    app: nacos

vi service-nodeport.yaml

kind: Service
apiVersion: v1
metadata:
  name: nacos-nodeport
  namespace: nacos
  labels:
    app: nacos
spec:
  type: NodePort
  ports:
    - name: http-8848
      protocol: TCP
      port: 8848
      nodePort: 30002
      targetPort: 8848
    - port: 9848        #对外提供服务的其实可以把这里删了,选举端口不用对外服务
      name: client-rpc
      targetPort: 9848
  selector:
    app: nacos

编辑setafulset配置文件

vi setafulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
  namespace: nacos
spec:
  podManagementPolicy: Parallel   #对setafulset的pod进行并行操作,而不是像deployment一样处理完一个pod再到下一个pod
  serviceName: nacos
  replicas: 3
  template:
    metadata:
      labels:
        app: nacos
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      affinity:  #反亲和性,避免pod在同一个node上
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - nacos
              topologyKey: "kubernetes.io/hostname"
      initContainers:
        - name: peer-finder-plugin-install
          image: nacos/nacos-peer-finder-plugin:1.1
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /home/nacos/plugins/peer-finder
              name: data
              subPath: peer-finder
      containers:
        - name: nacos
          imagePullPolicy: IfNotPresent
          image: nacos/nacos-server:1.4.2
          resources:
            requests:
              memory: "2Gi"
              cpu: "500m"
          ports:
            - containerPort: 8848
              name: client-port
            - containerPort: 9848
              name: client-rpc
            - containerPort: 9849
              name: raft-rpc
            - containerPort: 7848
              name: old-raft-rpc
          env:
            - name: NACOS_REPLICAS
              value: "3"           #定义集群节点数量
            - name: SERVICE_NAME
              value: "nacos"
            - name: DOMAIN_NAME
              value: "cluster.local"
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            - name: MYSQL_SERVICE_HOST
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm         #使用configmap中的配置
                  key: mysql.host         
            - name: MYSQL_SERVICE_DB_NAME
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm        #使用configmap中的配置
                  key: mysql.db.name
            - name: MYSQL_SERVICE_PORT
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm      #使用configmap中的配置
                  key: mysql.port
            - name: MYSQL_SERVICE_USER
              valueFrom:
                configMapKeyRef:       #使用configmap中的配置
                  name: nacos-cm
                  key: mysql.user
            - name: MYSQL_SERVICE_PASSWORD
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.password
            - name: SPRING_DATASOURCE_PLATFORM
              value: "mysql"          #配置nacos使用mysql数据库
            - name: NACOS_SERVER_PORT
              value: "8848"
            - name: NACOS_APPLICATION_PORT
              value: "8848"
            - name: PREFER_HOST_MODE
              value: "hostname"
          livenessProbe:
            httpGet:
              path: /nacos/actuator/health
              port: 8848
            initialDelaySeconds: 10
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /nacos/actuator/health
              port: 8848
            initialDelaySeconds: 10
            periodSeconds: 10
          startupProbe:
            tcpSocket:
              port: 8848
            failureThreshold: 30
            periodSeconds: 10
          volumeMounts:
            - name: data
              mountPath: /home/nacos/plugins/peer-finder
              subPath: peer-finder   #该配置会在挂载的路径中单独创建一个该名称的目录
            - name: data
              mountPath: /home/nacos/data
              subPath: data         #该配置会在挂载的路径中单独创建一个该名称的目录
            - name: data
              mountPath: /home/nacos/logs
              subPath: logs            #该配置会在挂载的路径中单独创建一个该名称的目录
  volumeClaimTemplates:   #使用pvc模板,使pvc自动创建,然后自动绑定pv
    - metadata:
        name: data
      spec:
        accessModes: [ "ReadWriteMany" ]
        storageClassName: "nacos-pv"    #使用模板名称,去对应的模板名称中匹配pv
        resources:
          requests:
            storage: 40Gi
  selector:
    matchLabels:
      app: nacos

创建各项yaml文件对应的服务

kubectl apply -f pv.yaml

kubectl apply -f service.yaml

kubectl apply -f service-nodeport.yaml

kubectl apply -f configmap.yaml

kubectl apply -f setafulset.yaml

查看服务是否正常

kubectl get pv

kubectl get pvc -n nacos

kubectl get configmap -n nacos

kubectl get all -n nacos

访问nacos web

http://10.1.60.14:30002/

初始用户名nacos  密码nacos 

SpringCloudAlibaba实战(三):Kubernetes Nacos   参考Nacos官网在Kubernetes上部署StatefulSets类型的Nacos(单机/集群)。 快速开始   为了理解各类参数的意义和用法,对nacos镜像内配置文件和启动脚本进行分析。 1.Clone 项目 git clone https://github.com/nacos-group/nacos-k8s.git 2.镜像说明   查看YAMlw文件可知官方教程使用的初始化容器镜像是:nacos/nacos-peer-finder-plugin:1.0,镜像则是:nacos/nacos- 阅读详情

相关推荐

第 7 篇 Helm 部署 Nacos【详细步骤】

详细介绍如何使用 Helm 部署 Nacos。

甘蓝的专栏 3466

k8s部署nacos集群(官方文档版)

记录根据nacos官方文档部署nacos集群所踩的坑

qq_45449792的博客 2万+

KubeSphere 最佳实战:Kubernetes 部署集群模式 Nacos 实战指南

KubeSphere 已被 Aqara 智能家居、本来生活、东方通信、微宏科技、东软、华云、新浪、三一重工、华夏银行、四川航空、国药集团、微众银行、紫金保险、去哪儿网、中通、中国人民银行、中国银行、中国人保寿险、中国太平保险、中国移动、中国联通、中国电信、天翼云、中移金科、Radore、ZaloPay 等海内外数万家企业采用。至此,我们完成了在 KubeSphere 管理的 Kubernetes 集群上手动部署 Nacos 集群的全过程,后续的配置管理请根据实际应用的需求进行配置。

KubeSphere 1477

K8S安装部署Nacos集群

在k8s中部署nacos集群和在裸机器上直接部署nacos机器其实差别不大。 最主要的区别是k8s中部署的服务没有固定的ip地址,而nacos集群部署需要配置所有实例的ip 在k8s中通过StatefulSet和Headless Service为每个nacos实例生成一个唯一的dns地址, 创建一个普通Service给可客户端使用

程序员阿超的博客 2万+

k8s使用headless部署nacos集群

nacos是目前比较流行的一个框架,是阿里开源的一个框架。可用于配置中心和注册中心。配置中心:就是说nacos,可以帮我们管理项目中,需要用到的配置文件,这些配置都可以交给nacos进行管理。配置中心可以实现多个环境的配置管理,多个环境之间配置的动态切换...注册中心:就是说,我们的一些微服务可以注册到nacos上,然后其他的微服务就能发现,也就能调用到我们的服务。这就是我们常说的服务发现服务注册。当然,如果我们的微服务宕掉了,nacos也可以帮我们检测到,阻止向不健康的微服务发送请求。这就是我们常说的。

weixin_74412978的博客 2152

nacos集群/单点部署到k8s

nacos集群/单点部署到k8s 参考:Kubernetes Nacos 单点部署: MODE,后面添加PREFER_HOST_MODE修改配置,找到 否则单节点以集群模式启动,会报错: server is DOWN now, please try again later - name: PREFER_HOST_MODE value: "hostname" - name: MODE value: standalone # 此处设置是否为单机

qq_41377914的博客 1314

Kubernetes(k8s)搭建部署nacos集群

本文详细介绍了在Kubernetes集群中部署Nacos服务的完整流程。主要内容包括:1)使用官方Nacos-k8s项目进行部署;2)配置NFS存储类(StorageClass)和持久卷(PV)以实现数据持久化;3)修改YAML配置文件,包括调整副本数、资源限制、镜像版本和反亲和性策略等;4)集成外部MySQL数据库并启用鉴权功能;5)提供了三种访问Nacos Web界面的方式(端口转发、NodePort和Ingress)。该部署方案适用于生产环境,通过合理的资源配置和隔离策略,确保了Nacos服务的高可用

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 2699

手眼标定(EyeToHand)推导

Base为基坐标系(B),工具末端坐标系(T),标定板为Mark坐标系(M),相机坐标系(C)对于每两个姿态都存在上式,组成一个AX=XB的矩阵方程,X为。此时转换成AX=0的问题,单纯用SVD求奇异解便可得到。相机坐标系到Base基坐标系下的转换关系。已知标定板与机械臂末端的相对位置固定不变,,即。带入(2)式求,至此求解出需要的手眼矩阵。在眼在手外的时候,其实是要求解。

stevenreally6的博客 1143

k8s部署nacos集群

操作系统:centos 7。

菜鸡的博客 3530

Unity游戏开发:从零开始适配Nintendo Switch的完整指南

本文详细介绍了如何使用Unity进行Nintendo Switch游戏开发的完整流程,包括开发环境搭建、Unity工程适配、手柄与硬件特性开发、存储与性能优化等关键步骤。特别强调了Switch SDK的配置、输入系统改造和内存优化技巧,帮助开发者高效完成跨平台适配。

vodka的博客 1069

时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比

本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。

rust6ferris的博客 453

Kubernetes中安装部署Nacos集群

官方下载的nacos-server-1.2.1.zip包需要经过处理下:修改配置、加入docker-startup.sh启动脚本。

weixin_39941298的博客 2274

【Dify】PPT生成工具应用

本文介绍了一款自动化PPT生成工具,通过智能接口将文本内容高效转化为结构化演示文档。该系统采用三阶段工作流(内容输入、HTTP请求上传、文件输出),无需复杂操作即可生成专业PPT。工具适用于教学课件、产品发布、企业培训等场景,能显著提升内容表达效率,特别适合初学者快速制作演示材料。文章详细说明了核心节点、应用场景及开发资源,为文本到PPT的自动化转换提供了实用解决方案。

Mr数据杨 1218

全网最详细K8S部署Nacos集群

K8S部署Nacos集群

虽非技冠群英首,愿与同道共长歌; 大鹏一日同风起,扶摇直上九万里; 7246

人体分割笔记总结

人体分割 人体分割(human parsing),属于语义分割任务的子任务,旨在对人类图像进行像素级的是细粒度分割(例如,划分出身体部位和服装)。根据不同的场景,又可以分为单人人体解析(single-person human parsing)和多人人体解析(multi-person human parsing,或者 instance-level human parsing)。除此之外,按照处理媒介分类,还可以分为基于图像的人体解析和基于视频的人体解析。 对于人体解析任务,常用的度量指标包括 Pixel a

jacke121的专栏 4255

地图之家总目录

地图之家总目录 cesium示例 leaflet示例

GIS之家家长 1万+

kubernetes(k8s)部署nacos集群/单机服务问题

kubernetes(k8s)部署nacos集群/单机服务问题 说明 由于需要搭建微服务来做分布式事务的demo实践,所以需要使用到注册中心,由于微服务现在很多都是会使用阿里的微服务sentinel和nacos,而且nacos除了做注册中心还可以做配置中心,相比其他注册中心eureka,consul,zookeeper等因为nacos有中文文档,且也比较熟悉nacos,所以选择使用nacos来做注册中心,由于之前使用的是docker部署的nacos单机模式的服务,所以没有遇到什么问题,然而最近使用k8s部署

BiaoYBbiao的博客 5711

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

kubernetes部署nacos集群

Nacos是一个开源的动态服务发现、配置管理和服务管理平台,可以在Kubernetes集群中方便地实现服务注册和发现、配置中心以及路由管理等功能。本文将介绍如何在Kubernetes集群中部署Nacos集群。

苏酥甜心糕的博客 1343

图像处理 | 基于matlab的多尺度Retinex(MSR)和自适应直方图均衡化(CLAHE)算法联合的低照度图像增强(附代码)

本文介绍了一种基于多尺度Retinex(MSR)和CLAHE的低照度图像增强算法。算法首先对图像进行多尺度Retinex处理,通过不同尺度的高斯核去除光照影响;然后采用CLAHE算法进行对比度增强。Matlab实现展示了算法流程,包含灰度转换、多尺度Retinex增强和CLAHE处理。实验结果显示,该方法能有效提升低照度图像的可见性,增强细节表现。最后提出了改进建议,包括引入深度学习方法和优化参数选择。

尘世冰封的专栏 952

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Kubernetes部署Nacos集群

如何在kubernetes上部署nacos集群

你说亮不亮的博客 2602

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

k8s(kubernetes)部署nacos(3各节点....N各节点均可以)集群

先两名目标:在K8s集群中搭建3个nacos服务,构成高可用集群。 给出官方的文档,地址,根据这个方式大致可以搭建出来,但是有些细节他上面没有。下面不如正题。 官方链接:https://github.com/nacos-group/nacos-k8s/blob/master/README-CN.md 这里说明一下,官方给出了两种方式去搭建集权其中一种是快速搭建方式,另一种是集群搭建方式。对于快速搭建这里不再赘述,执行一个脚本就可以了。 但是快速搭建的劣势是数据没有持久化,可能会出现数据集丢失的问题,搭建三台

前路无畏的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

K8S中部署 Nacos 集群

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

mkii_hong的博客 4032

【运维 docker+k8s】docker+k8s部署nacos集群

nacos版本号:2.0.3 k8s集群部署

qq_42944442的博客 868
上一篇: k8s集群内部署nexus
下一篇: nacos配置导出
Apex   Predator
博客等级 码龄6年 9371粉丝 289原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值