k8s集群部署nacos集群

1、部署 MySQL

k8s集群上部署mysql,注意storageClassName名字,生产环境上不建议用这种方式,推荐独立部署mysql

vim nacos-mysql.yaml

复制代码
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos-mysql
  namespace: nacos
spec:
  serviceName: nacos-mysql
  replicas: 1
  selector:
    matchLabels:
      app: nacos-mysql
  template:
    metadata:
      labels:
        app: nacos-mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "nacos@123"
        - name: MYSQL_DATABASE
          value: "nacos_config"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-data
        persistentVolumeClaim:
          claimName: nacos-mysql-pvc

---
apiVersion: v1
kind: Service
metadata:
  name: nacos-mysql
  namespace: nacos
spec:
  selector:
    app: nacos-mysql
  ports:
    - port: 3306
      targetPort: 3306

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nacos-mysql-pvc
  namespace: nacos
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: nfs-client

2、初始化数据库

我这里用自建的mysql,不使用k8s集群部署mysql的方式

下载nacos初始化SQL

复制代码
https://github.com/alibaba/nacos/blob/2.4.1/distribution/conf/mysql-schema.sql

登录MySQL创建数据库

复制代码
mysql -u root -p -e "CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

3、部署 Nacos 集群(3节点)

记得修改mysql数据库连接地址

vim nacos-cluster.yaml

复制代码
root@opstest001:~/nacos# cat nacos-cluster.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: nacos

---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  namespace: nacos
  labels:
    app: nacos
spec:
  ports:
    - port: 8848
      name: client
    - port: 9848
      name: cluster
  clusterIP: None
  selector:
    app: nacos

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos-cluster
  namespace: nacos
spec:
  serviceName: nacos-headless
  replicas: 3
  podManagementPolicy: OrderedReady
  selector:
    matchLabels:
      app: nacos
  template:
    metadata:
      labels:
        app: nacos
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - nacos
              topologyKey: "kubernetes.io/hostname"
      containers:
      - name: nacos
        image: registry.cn-hangzhou.aliyuncs.com/iuxt/nacos-server:v2.3.2
        args:
          - "/bin/sh"
          - "-c"
          - "exec java -Dnacos.standalone=false -Dlogging.path=/dev/stdout -jar /home/nacos/nacos-server.jar"
        ports:
        - containerPort: 8848
          name: client
        - containerPort: 9848
          name: cluster
        env:
        - name: PREFER_HOST_MODE
          value: hostname
        - name: NACOS_SERVER_PORT
          value: "8848"
        - name: NACOS_APPLICATION_PORT
          value: "8848"
        - name: SPRING_DATASOURCE_PLATFORM
          value: mysql
        - name: MYSQL_SERVICE_HOST
          value: "192.168.2.251"
        - name: MYSQL_SERVICE_DB_NAME
          value: "nacos_config"
        - name: MYSQL_SERVICE_PORT
          value: "3306"
        - name: MYSQL_SERVICE_USER
          value: "root"
        - name: MYSQL_SERVICE_PASSWORD
          value: "dbaadmin@123"
        - name: NACOS_AUTH_ENABLE
          value: "true"  # 开启鉴权
        - name: NACOS_AUTH_IDENTITY_KEY
          value: "nacos"  # 身份标识Key(默认值)
        - name: NACOS_AUTH_IDENTITY_VALUE
          value: "nacos"  # 身份标识Value(默认值)
        - name: NACOS_AUTH_TOKEN
          value: "SecretKey012345678901234567890123456789012345678901234567890123456789"  # 自定义JWT密钥
        - name: NACOS_SERVERS
          value: "nacos-cluster-0.nacos-headless.nacos.svc.cluster.local:8848 nacos-cluster-1.nacos-headless.nacos.svc.cluster.local:8848 nacos-cluster-2.nacos-headless.nacos.svc.cluster.local:8848"
        readinessProbe:
          httpGet:
            path: /nacos/v1/console/health/liveness
            port: 8848
          initialDelaySeconds: 20
          periodSeconds: 10
        livenessProbe:
          httpGet:
            path: /nacos/v1/console/health/liveness
            port: 8848
          initialDelaySeconds: 60
          periodSeconds: 20
        volumeMounts:
        - name: nacos-data
          mountPath: /home/nacos/data
      volumes:
      - name: nacos-data
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: nacos-cluster-service
  namespace: nacos
  labels:
    app: nacos
spec:
  type: ClusterIP
  selector:
    app: nacos
  ports:
    - name: client
      port: 8848
      targetPort: 8848

配置ingress,设置管理地址

复制代码
root@opstest001:~/nacos# cat nacos-ingress.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nacos-ingress
  namespace: nacos
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /nacos/$1
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"
spec:
  ingressClassName: nginx  # 明确指定使用 nginx IngressClass
  rules:
  - host: nacos.cctbb.com
    http:
      paths:
      - path: /(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: nacos-cluster-service
            port:
              number: 8848

访问

http://nacos.cctbb.com

nacos/nacos

相关推荐
三坛海会大神55525 分钟前
k8s(六)Pod的资源控制器
云原生·容器·kubernetes
缘的猿1 小时前
Docker 与 K8s 网络模型全解析
docker·容器·kubernetes
运维栈记2 小时前
使用Grafana监控K8S中的异常Pod
docker·kubernetes·grafana
荣光波比2 小时前
K8S(十二)—— Kubernetes安全机制深度解析与实践:从认证到RBAC授权
安全·容器·kubernetes
liming4952 小时前
k8s 安装 kuboardV3 报错
云原生·容器·kubernetes
明灯L9 小时前
《Kubernetes 集群搭建全指南:从核心概念到环境部署!》
云原生·容器·kubernetes
荣光波比10 小时前
K8S(十五)—— 企业级K8s集群管理实践:Rancher安装配置与核心功能实操
容器·kubernetes·rancher
小屁不止是运维11 小时前
k8s问题详解1:k8s集群上传文件过大导致413 Request Entity Too Large(请求文件实体过大)
docker·容器·kubernetes
東雪蓮☆11 小时前
K8s Ingress 详解与部署实战
linux·运维·kubernetes
能不能别报错1 天前
K8s学习笔记(十九) K8s资源限制
笔记·学习·kubernetes