kubernetes环境已经创建好了,下面针对在kubernetes环境中部署自己的nacos集群环境,nacos集群官方提供的nacos.yaml文件部署的集群是在default名空间的,我想把nacos集群部署到自己的命名空间中,这里需要修改一下nacos.yaml文件了。下面看一下官方提供的yaml文件,参考:https://nacos.io/zh-cn/docs/use-nacos-with-kubernetes.html
---
apiVersion: v1
kind: Service
metadata:
name: nacos-headless
labels:
app: nacos-headless
spec:
ports:
- port: 8848
name: server
targetPort: 8848
- port: 7848
name: rpc
targetPort: 7848
selector:
app: nacos
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nacos-cm
data:
mysql.db.name: "nacos_devtest"
mysql.port: "3306"
mysql.user: "nacos"
mysql.password: "nacos"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nacos
spec:
serviceName: nacos-headless
replicas: 3
template:
metadata:
labels:
app: nacos
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- nacos-headless
topologyKey: "kubernetes.io/hostname"
containers:
- name: k8snacos
imagePullPolicy: Always
image: nacos/nacos-server:latest
resources:
requests:
memory: "2Gi"
cpu: "500m"
ports:
- containerPort: 8848
name: client
- containerPort: 7848
name: rpc
env:
- name: NACOS_REPLICAS
value: "3"
- name: MYSQL_SERVICE_DB_NAME
valueFrom:
configMapKeyRef:
name: nacos-cm
key: mysql.db.name
- name: MYSQL_SERVICE_PORT
valueFrom:
configMapKeyRef:
name: nacos-cm
key: mysql.port
- name: MYSQL_SERVICE_USER
valueFrom:
configMapKeyRef:
name: nacos-cm
key: mysql.user
- name: MYSQL_SERVICE_PASSWORD
valueFrom:
configMapKeyRef:
name: nacos-cm
key: mysql.password
- name: NACOS_SERVER_PORT
value: "8848"
- name: NACOS_APPLICATION_PORT
value: "8848"
- name: PREFER_HOST_MODE
value: "hostname"
- name: NACOS_SERVERS
value: "nacos-0.nacos-headless.default.svc.cluster.local:8848 nacos-1.nacos-headless.default.svc.cluster.local:8848 nacos-2.nacos-headless.default.svc.cluster.local:8848"
selector:
matchLabels:
app: nacos
这是nacos中nacos-quick-start.yaml文件内容,因为我的nacos集群信息保存在mysql里的,所以不需要创建svc挂载存储。这里需要注意几个地方:
1、nacos的命名空间
nacos集群所在的kubernetes中的命名空间,在nacos的yaml文件中没有定义,我们可以在metadata中手动进行添加一下,例如:namespace: wulaoer
2、nacos的连接mysql的信息
在nacos的data下是关于nacos连接mysql的信息,如下:
data: mysql.db.name: "nacos_devtest" mysql.port: "3306" mysql.user: "nacos" mysql.password: "nacos"
这里没有定义mysql的主机名,需要手动进行添加,例如:mysql.host: "172.24.0.62"。这样创建的nacos就可以直接连接mysql进行数据存储了。
3、修改nacos的服务名称
针对自己的nacos集群定义符合自己标准的nacos连接名称,可以在name里进行修改,在nacos中针对nacos有一个labels标签,这个标签可以去掉,或者保留根据自己需求。name修改后,为了方便集群之间进行通信需要在NACOS_SERVERS总进行修改。看我的例子:
- name: NACOS_SERVERS
value: "nacos-0.nacos-headless.wulaoer.svc.cluster.local:8848 nacos-1.nacos-headless.wulaoer.svc.cluster.local:8848 nacos-2.nacos-headless.wulaoer.svc.cluster.local:8848"
需要把nacos-headless替换成自己需要的name,我这里用wolf代替修改后的是:
- name: NACOS_SERVERS
value: "nacos-0.wolf.wulaoer.svc.cluster.local:8848 nacos-1.wolf.wulaoer.svc.cluster.local:8848 nacos-2.wolf.wulaoer.svc.cluster.local:8848"
这样nacos集群之间的通信才能正常。如果nacos的集群有节点不正常也可以考虑看一下这里的配置是否正常。
以上就是在kubernetes环境中部署nacos集群的方法,如有不足之处还望不断的提出意见,会及时查看。

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏