Kubernetes 部署 Nacos集群
无持久化存储
- 下载 nacos-quick-start.yaml
- 修改nacos-quick-start.yaml中的ConfigMap为自己的数据库账号密码
- 执行数据库初始化语句
- 执行
kubectl apply -f nacos-quick-start.yaml
持久化存储
- 下载 nacos-pvc-nfs.yaml
- 修改nacos-quick-start.yaml中的ConfigMap为自己的数据库账号密码
- 执行数据库初始化语句
- 如果使用的是云厂商的k8s服务,nacos-quick-start.yaml中的volumeClaimTemplates部分写法可能会略有不同,华为云云硬盘写法如下:
volumeClaimTemplates:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: staging
name: data
annotations:
everest.io/disk-volume-type: SAS # 云硬盘的类型 https://support.huaweicloud.com/usermanual-cce/cce_10_0613.html
labels:
failure-domain.beta.kubernetes.io/region: cn-south-1 # 云硬盘所在的区域
failure-domain.beta.kubernetes.io/zone: cn-south-2b # 云硬盘所在的可用区,必须和工作负载部署的节点可用区一致
spec:
accessModes: [ "ReadWriteOnce" ] # 云硬盘必须为ReadWriteOnce
storageClassName: csi-disk # StorageClass的名称,https://support.huaweicloud.com/usermanual-cce/cce_10_0380.html
resources:
requests:
storage: 10Gi
- nacos-pvc-nfs.yaml使用了扩容插件
nacos/nacos-peer-finder-plugin:1.1
,此时需要设置SERVICE_NAME
、DOMAIN_NAME
、POD_NAMESPACE
这三个环境变量,且必须有nacos-headless
无头服务(Headless Services),无头服务的spec.clusterIP
的值为"None"
。
如果不想使用nacos-peer-finder-plugin
, 修改yaml中的如下两项:- 增加配置环境变量
NACOS_SERVERS
- name: NACOS_SERVERS value: "nacos-0.nacos-headless:8848 nacos-1.nacos-headless:8848 nacos-2.nacos-headless:8848"
- 删除
/home/nacos/plugins/peer-finder
目录挂载,挂载了此目录后会忽略NACOS_SERVERS
环境变量
- 增加配置环境变量
- 执行
kubectl apply -f nacos-pvc-nfs.yaml
注意事项:
- 如果k8s集群不足3个,需要修改yaml文件中的
affinity
部分为:
affinity:
podAntiAffinity: # Pod 间反亲和性
preferredDuringSchedulingIgnoredDuringExecution: # 调度器会尝试寻找满足对应规则的节点
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- nacos
topologyKey: "kubernetes.io/hostname"
即nacos的多个副本由“必须部署在不同节点”改为“尽量部署在不同节点”