← 返回列表
2026-04-26T03:29:11.811ZK8SNacos

轻松掌握K8s部署企业级Nacos 3.0.2

K8s部署企业级Nacos

Nacos(Naming and Configuration Service)是一个开源的动态服务发现、配置管理和服务管理平台。使用Nacos可以带来以下几个好处:

  1. 服务发现

动态服务注册与发现:Nacos支持服务的动态注册和发现,可以方便地管理微服务的地址和状态,使得服务之间的调用更加灵活和高效。

多种服务发现模式:Nacos支持DNS和RPC两种服务发现方式,可以根据具体场景选择最合适的模式。

  1. 配置管理

集中化配置管理:Nacos提供集中化的配置管理功能,使得应用程序的配置可以集中存储和管理,便于版本控制和变更审计。

动态配置更新:支持热更新配置,应用可以在不重启的情况下获取新的配置,提高了系统的灵活性和可用性。

  1. 多语言支持

语言无关性:Nacos支持多种编程语言(如Java、Go、PHP等),可以方便不同技术栈的团队使用,降低了技术壁垒。

  1. 易于集成

与Spring Cloud集成:Nacos可以与Spring Cloud无缝集成,简化微服务的开发和管理。

支持生态系统:Nacos可以与其他云原生技术(如Kubernetes、Istio等)结合使用,增强微服务架构的能力。

  1. 高可用与扩展性

集群模式:Nacos支持集群部署,能够保证高可用性,适用于大规模的生产环境。

负载均衡:通过服务注册与发现,Nacos能够实现负载均衡,优化资源的使用,提高系统的整体性能。

  1. 监控与管理

健康检查:Nacos可以对注册的服务进行健康检查,及时发现并处理故障,确保系统的稳定性。

管理界面:提供友好的用户界面,通过可视化的方式管理服务和配置,降低了运维的复杂性。

  1. 社区支持与文档

活跃的社区:Nacos作为开源项目,有着活跃的社区支持和丰富的文档资料,可以帮助用户解决问题,促进技术交流。

Nacos部署实战

  1. 创建ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-config
  namespace: default
data:
  jvm-xmn: "512m"
  jvm-xms: "512m"
  jvm-xmx: "512m"
  mode: "cluster"
  mysql.host: "数据库地址"
  mysql.port: "3306"
  mysql.db.name: "nacos"
  mysql-database-num: "1"
  mysql.db.param: "characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=true"
  mysql.user: "数据库用户"
  mysql.password: "数据库密码"
  nacos.servers: "nacos-svc:8848"  # 使用 Service 名称
  spring.datasource.platform: "mysql"
  nacos.core.auth.enabled: "true"  # 开启鉴权功能
  nacos.core.auth.system.type: "nacos"  # 设置鉴权系统类型
  nacos.core.auth.server.identity.key: "nacos"
  nacos.core.auth.server.identity.value: "nacos"
  nacos.core.auth.caching.enabled: "true"  # 开启权限缓存
  nacos.core.auth.plugin.nacos.token.secret.key: "VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg="  # 自定义 JWT 密钥
  1. 创建StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
  namespace: default
spec:
  selector:
    matchLabels:
      app: nacos
  replicas: 3
  template:
    metadata:
      labels:
        app: nacos
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nacos
        image: registry.cn-shenzhen.aliyuncs.com/starbucket/nacos-server:v3.0.2
        ports:
        - containerPort: 8848
          name: nacos
        env: 
        - name: JVM_XMN
          valueFrom:
            configMapKeyRef:
              key: jvm-xmn
              name: nacos-config
        - name: JVM_XMS
          valueFrom:
            configMapKeyRef:
              key: jvm-xms
              name: nacos-config
        - name: JVM_XMX
          valueFrom:
            configMapKeyRef:
              key: jvm-xmx
              name: nacos-config
        - name: MODE
          valueFrom:
            configMapKeyRef:
              key: mode
              name: nacos-config
        - name: MYSQL_DATABASE_NUM
          valueFrom:
            configMapKeyRef:
              key: mysql-database-num
              name: nacos-config
        - name: MYSQL_SERVICE_DB_NAME
          valueFrom:
            configMapKeyRef:
              key: mysql.db.name
              name: nacos-config
        - name: MYSQL_SERVICE_DB_PARAM
          valueFrom:
            configMapKeyRef:
              key: mysql.db.param
              name: nacos-config
        - name: MYSQL_SERVICE_HOST
          valueFrom:
            configMapKeyRef:
              key: mysql.host
              name: nacos-config
        - name: MYSQL_SERVICE_PASSWORD
          valueFrom:
            configMapKeyRef:
              key: mysql.password
              name: nacos-config
        - name: MYSQL_SERVICE_PORT
          valueFrom:
            configMapKeyRef:
              key: mysql.port
              name: nacos-config
        - name: MYSQL_SERVICE_USER
          valueFrom:
            configMapKeyRef:
              key: mysql.user
              name: nacos-config
        - name: NACOS_SERVERS
          valueFrom:
            configMapKeyRef:
              key: nacos.servers
              name: nacos-config
        - name: SPRING_DATASOURCE_PLATFORM
          valueFrom:
            configMapKeyRef:
              key: spring.datasource.platform
              name: nacos-config
        - name: NACOS_AUTH_ENABLED
          valueFrom:
            configMapKeyRef:
              key: nacos.core.auth.enabled
              name: nacos-config
        - name: NACOS_AUTH_SYSTEM_TYPE
          valueFrom:
            configMapKeyRef:
              key: nacos.core.auth.system.type
              name: nacos-config
        - name: NACOS_AUTH_CACHING_ENABLED
          valueFrom:
            configMapKeyRef:
              key: nacos.core.auth.caching.enabled
              name: nacos-config
        - name: NACOS_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEY
          valueFrom:
            configMapKeyRef:
              key: nacos.core.auth.plugin.nacos.token.secret.key
              name: nacos-config
  1. 创建Service
apiVersion: v1
kind: Service
metadata:
  name: nacos-service
  labels:
    app: nacos
spec:
  type: ClusterIP
  clusterIP: None
  ports:
    - port: 8848
      name: server
      targetPort: 8848
    - port: 9848
      name: client-rpc
      targetPort: 9848
    - port: 9849
      name: raft-rpc
      targetPort: 9849
    - port: 7848
      name: old-raft-rpc
      targetPort: 7848
  selector:
    app: nacos
  1. 创建应用
kubectl apply -f *

评论与交流

每条首评会开启一个话题;大家可在该话题下继续讨论。

还没有评论,欢迎留下想法。

发起新话题