kubernetes 環境安裝Nacos集群


一、nfs服務器配置

$ yum install -y nfs-utils
$ mkdir -p /usr/local/nacos/nfs-share
$ mkdir -p /usr/local/nacos/mysql-slave
$ mkdir -p /usr/local/nacos/mysql-master
$ chmod a+rw /usr/local/nacos
$ vi /etc/exports
/usr/local/nacos/mysql-master  *(insecure,rw,async,no_root_squash)
/usr/local/nacos/mysql-slave  *(insecure,rw,async,no_root_squash)
/usr/local/nacos/nfs-share  *(insecure,rw,async,no_root_squash)
$ systemctl restart rpcbind.service
$ systemctl restart nfs-server.service
$ showmount -e k8s-master

二、部署NFS StorageClass

2.1 下載nacos k8s 部署代碼

$ git clone https://github.com/nacos-group/nacos-k8s.git

2.2 創建nacos命名空間

$ kubectl create ns nacos

2.3 創建ServiceAccount

$ cd nacos-k8s
$ sed -i 's/namespace: default/namespace: nacos/g' deploy/nfs/rbac.yaml

2.4 部署NFS-Client Provisioner

修改deployment.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: nfs-client-provisioner
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccount: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: fuseim.pri/ifs
            - name: NFS_SERVER
              value: k8s-master
            - name: NFS_PATH
              value: /usr/local/nacos/nfs-share
      volumes:
        - name: nfs-client-root
          nfs:
            server: k8s-master
            path: /usr/local/nacos/nfs-share
$ kubectl create -f deploy/nfs/deployment.yaml -n nacos

創建 NFS StorageClass

$ kubectl create -f deploy/nfs/class.yaml -n nacos

驗證NFS部署成功

$ kubectl get pod -l app=nfs-client-provisioner -n nacos
NAME                                      READY   STATUS    RESTARTS   AGE
nfs-client-provisioner-65c7bc8d57-mcdg9   1/1     Running   0          2m26s

三、部署mysql數據庫

3.1 部署主庫

$ vim deploy/mysql/mysql-master-nfs.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql-master
  labels:
    name: mysql-master
spec:
  replicas: 1
  selector:
    name: mysql-master
  template:
    metadata:
      labels:
        name: mysql-master
    spec:
      containers:
      - name: master
        image: nacos/nacos-mysql-master:latest
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-master-data
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "root"
        - name: MYSQL_DATABASE
          value: "nacos_devtest"
        - name: MYSQL_USER
          value: "nacos"
        - name: MYSQL_PASSWORD
          value: "nacos"
        - name: MYSQL_REPLICATION_USER
          value: 'nacos_ru'
        - name: MYSQL_REPLICATION_PASSWORD
          value: 'nacos_ru'
      volumes:
      - name: mysql-master-data
        nfs:
          server: k8s-master
          path: /usr/local/nacos/mysql-master
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-master
  labels:
    name: mysql-master
spec:
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    name: mysql-master
$ kubectl create -f deploy/mysql/mysql-master-nfs.yaml  -n nacos

3.2 部署從庫

$ vim deploy/mysql/mysql-slave-nfs.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql-slave
  labels:
    name: mysql-slave
spec:
  replicas: 1
  selector:
    name: mysql-slave
  template:
    metadata:
      labels:
        name: mysql-slave
    spec:
      containers:
      - name: slave
        image: nacos/nacos-mysql-slave:latest
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-slave-data
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "root"
        - name: MYSQL_REPLICATION_USER
          value: 'nacos_ru'
        - name: MYSQL_REPLICATION_PASSWORD
          value: 'nacos_ru'
      volumes:
      - name: mysql-slave-data
        nfs:
          server: k8s-master
          path: /usr/local/nacos/mysql-slave
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-slave
  labels:
    name: mysql-slave
spec:
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    name: mysql-slave
$ kubectl create -f deploy/mysql/mysql-slave-nfs.yaml -n nacos    

四、部署Nacos

修改deploy/nacos/nacos-pvc-nfs.yaml和數據庫配置文件保持一致即可!

data:
  mysql.master.db.name: "主庫名稱"
  mysql.master.port: "主庫端口"
  mysql.slave.port: "從庫端口"
  mysql.master.user: "主庫用戶名"
  mysql.master.password: "主庫密碼"
$ kubectl create -f deploy/nacos/nacos-pvc-nfs.yaml -n nacos
$ kubectl scale sts nacos --replicas=3 -n nacos

五、創建ingress

$ vim nacos-ingress.yaml
---
# 創建Ingress,定義訪問規則 
apiVersion: extensions/v1beta1 
kind: Ingress
metadata:
  name: nacos-headless
spec: 
 rules:
  - host: nacos.lvzhenjiang.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nacos-headless
          servicePort: 8848 
$ kubectl create -f nacos-ingress.yaml -n nacos


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM