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

相关推荐
羊羊羊i1 小时前
使用Informer监听K8s资源
云原生·容器·kubernetes
VermiliEiz2 小时前
二进制文件部署k8s方式(5)
云原生·容器·kubernetes
2301_810746313 小时前
CKA冲刺40天笔记 - day24 Kubernetes Clusterrole 和 Clusterrole Binding
笔记·容器·kubernetes
ICT董老师5 小时前
通过kubernetes部署nginx + php网站环境
运维·nginx·云原生·容器·kubernetes·php
原神启动15 小时前
K8S(八)—— Kubernetes Pod 资源限制 + 探针(Probe)解析
云原生·容器·kubernetes
zxnbmk5 小时前
【7】Kubernetes存储(本章知识密度较高,仅浅浅了解后续详解)
linux·云原生·容器·kubernetes
叫致寒吧5 小时前
pod详解
云原生·kubernetes
水上冰石5 小时前
查看k8s下Jenkins的插件在宿主机的路径
容器·kubernetes·jenkins
孤岛悬城5 小时前
58 k8s之pod
云原生·容器·kubernetes
可爱又迷人的反派角色“yang”5 小时前
k8s(五)
linux·运维·docker·云原生·容器·kubernetes