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集群的方法,如有不足之处还望不断的提出意见,会及时查看。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏