轻松掌握K8s部署企业级Nacos 3.0.2
K8s部署企业级Nacos
Nacos(Naming and Configuration Service)是一个开源的动态服务发现、配置管理和服务管理平台。使用Nacos可以带来以下几个好处:

- 服务发现
动态服务注册与发现:Nacos支持服务的动态注册和发现,可以方便地管理微服务的地址和状态,使得服务之间的调用更加灵活和高效。
多种服务发现模式:Nacos支持DNS和RPC两种服务发现方式,可以根据具体场景选择最合适的模式。
- 配置管理
集中化配置管理:Nacos提供集中化的配置管理功能,使得应用程序的配置可以集中存储和管理,便于版本控制和变更审计。
动态配置更新:支持热更新配置,应用可以在不重启的情况下获取新的配置,提高了系统的灵活性和可用性。
- 多语言支持
语言无关性:Nacos支持多种编程语言(如Java、Go、PHP等),可以方便不同技术栈的团队使用,降低了技术壁垒。
- 易于集成
与Spring Cloud集成:Nacos可以与Spring Cloud无缝集成,简化微服务的开发和管理。
支持生态系统:Nacos可以与其他云原生技术(如Kubernetes、Istio等)结合使用,增强微服务架构的能力。
- 高可用与扩展性
集群模式:Nacos支持集群部署,能够保证高可用性,适用于大规模的生产环境。
负载均衡:通过服务注册与发现,Nacos能够实现负载均衡,优化资源的使用,提高系统的整体性能。
- 监控与管理
健康检查:Nacos可以对注册的服务进行健康检查,及时发现并处理故障,确保系统的稳定性。
管理界面:提供友好的用户界面,通过可视化的方式管理服务和配置,降低了运维的复杂性。
- 社区支持与文档
活跃的社区:Nacos作为开源项目,有着活跃的社区支持和丰富的文档资料,可以帮助用户解决问题,促进技术交流。
Nacos部署实战
- 创建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 密钥
- 创建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
- 创建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
- 创建应用
kubectl apply -f *