Bootstrap

nacos-server 2.2.3版本部署

k8s环境部署nacos集群,helm部署

一、添加helm仓库,查找nacos charts包

# helm  repo add  azure  	http://mirror.azure.cn/kubernetes/charts
# helm search repo nacos
NAME         	CHART VERSION	APP VERSION	DESCRIPTION                                       
ygqygq2/nacos	2.1.4        	2.2.0      	Chart for nacos, an easy-to-use dynamic service...
# helm pull ygqygq2/nacos --version
# ls
nacos  nacos-2.1.4.tgz  nacos.tar.gz

二、 修改nacos charts包 valuse.yml

  1. 关闭mysql,添加自定义MySQL数据库。也可以不关闭,使用hlem内置mysql。
    自定义mysql信息填写再external: 部分 , slave部分可以不填
mysql:
  # if enabled set "false", fill the connection informations in "external" section
  # init containers will import the flow sql file into mysql db.
  # https://raw.githubusercontent.com/alibaba/nacos/${version}/distribution/conf/schema.sql
  # https://raw.githubusercontent.com/alibaba/nacos/${version}/distribution/conf/nacos-mysql.sql
  enabled: false
  external:
    mysqlMasterHost: "xxxx"
    mysqlDatabase: "xxxx"
    mysqlMasterPort: "xxxx"
    mysqlMasterUser: "xxxx"
    mysqlMasterPassword: "xxxx"
    mysqlSlaveHost: "xxxx"
    mysqlSlavePort: "xxxxx"
  1. 关闭持久化声明
    不关闭持久化会使用主机上的磁盘空间创建持久化存储类,关闭后使用的是临时存储。
    建议使用临时存储部署,等服务稳定下来改用持久化。
persistence:
enabled: false
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
##   set, choosing the default provisioner.  (gp2 on AWS, azure-disk on
##   Azure, standard on GKE, AWS & OpenStack)
##
storageClass: ""
accessMode: ReadWriteOnce
annotations: {}
#   helm.sh/resource-policy: keep
size: 5Gi  # 大小
existingClaim: nacos-pvc-storage 

三,helm部署在当前k8s

helm  $workloadName  ./nacos -n $namespace

四、 遇到的问题

  1. 低于2.2.3 版本都遇到了一个服务注册报错:
    因为nacos无法选主造成服务注册每次连接的nacos集群不同的节点。
    无法选主的原因是1.14版本以后加入jraft后会出现经常性的启动选不了主而导致的状态错误。
    所有raft协议都存在这个问题。
code:503,msg:server is DOWN now, please try again later!
  1. nacos 2.2.3 版本 helm部署默认没有开启鉴权 添加鉴权环境变量就报错
    日天 容器不识别NACOS_AUTH_IDENTITY_KEY 、
    NACOS_AUTH_IDENTITY_VAlUE 这个量环境变量。
    自行添加到配置文件中。
NACOS_AUTH_IDENTITY_KEY nacos
NACOS_AUTH_IDENTITY_VAlUE nacos
NACOS_AUTH_ENABLE true
NACOS_AUTH_TOKEN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;