k8s搭建nacos集群

本文详细介绍了如何在Kubernetes(k8s)环境下搭建Nacos集群,包括解除master节点调度限制、规划集群资源、创建命名空间、配置MySQL数据库以及编排Nacos StatefulSet服务。通过设置ConfigMap来连接MySQL,并配置Nacos集群内部通信。最后,通过kubectl命令部署并检查Nacos集群状态,确保服务正常运行。
摘要由CSDN通过智能技术生成


k8s搭建nacos集群

一、搭建k8s集群

前文已介绍过,不再赘述,详见文章

CentOS7 部署K8S集群

二、搭建nacos集群

1.集群资源规划

CPUMEMERYDISKNODE
500m2Gi20GB1

代码如下(示例):

resources:
	requests:
		memory: "2Gi"
		cpu: "500m"
注意:由于k8s默认不允许master节点pod调度资源,我们测试环境资源有限,不允许再多加一个节点,为了充分利用资源,我们需要接触该限制。

执行下面命令 代码如下(示例):

kubectl taint nodes k8s-master node-role.kubernetes.io/master-

2.编排nacos集群服务

  1. 创建plugins命名空间(非必须)
 kubectl create namespace plugins
  1. 搭建MYSQL数据库
    详见 https://editor.csdn.net/md/?articleId=113817445
  2. 搭建NACOS集群

vi nacos-cluster.yaml
代码如下(示例):

---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  labels:
    app: nacos-headless
spec:
  type: NodePort
  ports:
    - port: 8848
      name: server
      nodePort: 30022
      targetPort: 8848
    - port: 9555
      name: rpc-1
      targetPort: 7848
    - port: 7848
      name: rpc
      targetPort: 7848
  selector:
    app: nacos
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-cm
data:
  mysql.db.name: "nacos_devtest"
  mysql.host: "192.168.31.100"
  mysql.port: "30023"
  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
              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
            - containerPort: 7848
              name: rpc-1
          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_HOST
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.host
            - 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.plugins.svc.cluster.local:8848 nacos-1.nacos-headless.plugins.svc.cluster.local:8848 nacos-2.nacos-headless.plugins.svc.cluster.local:8848"
  selector:
    matchLabels:
      app: nacos

执行命令 代码如下:

kubelet apply -f nacos-cluster.yaml -n plugins

查看部署状态

kubectl get statefulset -n plugins -o wide

在这里插入图片描述
进入dashboard查看nacos服务
在这里插入图片描述
在这里插入图片描述访问测试

在这里插入图片描述部署完成

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用以下的 YAML 文件来部署 Nacos 集群: ```yaml apiVersion: v1 kind: Namespace metadata: name: nacos --- apiVersion: v1 kind: Service metadata: name: nacos-service namespace: nacos spec: selector: app: nacos ports: - protocol: TCP port: 8848 targetPort: 8848 type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: nacos-deployment namespace: nacos spec: replicas: 3 selector: matchLabels: app: nacos template: metadata: labels: app: nacos spec: containers: - name: nacos-server image: nacos/nacos-server:v1.4.1 ports: - containerPort: 8848 env: - name: MODE value: "cluster" - name: SPRING_DATASOURCE_PLATFORM value: "mysql" - name: MYSQL_SERVICE_HOST value: "mysql-host" # 修改为实际的 MySQL 主机名或 IP 地址 - name: MYSQL_SERVICE_DB_NAME value: "nacos" # 修改为实际的数据库名称 - name: MYSQL_SERVICE_PORT value: "3306" # 修改为实际的 MySQL 端口号 - name: MYSQL_SERVICE_USER value: "nacos" # 修改为实际的数据库用户名 - name: MYSQL_SERVICE_PASSWORD value: "nacos" # 修改为实际的数据库密码 ``` 请注意,上述 YAML 文件假设你已经有一个可用的 MySQL 数据库,并且将其相关信息填入了环境变量中。你需要修改 `MYSQL_SERVICE_HOST`,`MYSQL_SERVICE_DB_NAME`,`MYSQL_SERVICE_PORT`,`MYSQL_SERVICE_USER`,`MYSQL_SERVICE_PASSWORD` 这些变量的值,以适应你的实际环境。 你可以使用 `kubectl apply -f <yaml文件名>` 命令来应用这个 YAML 文件并部署 Nacos 集群
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值