阿里雲 k8s 部署 Spring Cloud Alibaba 微服務實踐 (一) 部署 Nacos


零、准備工作

0.1. 說明

  1. 目前官網提供的最新鏡像的 Nacos 版本為 1.4.1,但是在部署過程中有問題,實際使用為 1.3.0
  2. 官方文檔提供了自動伸縮的部署方式,但需要部署持久卷聲明(PersistentVolumeClaim 簡稱 PVC),故目前仍采用固定數量的部署方式
  3. 官方文檔使用的數據庫是自己部署的,因為實際中使用阿里雲,故直接使用阿里雲 RDS (阿里雲 k8s 部署的程序可以通過內網 IP 直接訪問阿里雲其他服務,如 RDS, Redis, Kafka 等)

0.2. 連接 Kubernetes 集群配置

如果需要在集群外的服務器執行 kubectl 命令,需要先進行連接 Kubernetes 集群配置:

一、開始部署 Nacos

1.1. 初始化數據庫

下載 Nacos 1.3.0 ,然后在數據庫執行 conf/nacos-mysql.sql 初始化數據庫

1.2. 部署 Nacos

克隆 nacos-k8s 項目:git clone https://github.com/nacos-group/nacos-k8s.git

修改 ./deploy/nacos/nacos-quick-start.yaml 文件:

---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  labels:
    app: nacos-headless
spec:
  type: ClusterIP
  clusterIP: None
  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.host: "阿里雲 RDS 內網地址"
  mysql.db.name: "數據庫名"
  mysql.port: "數據庫端口"
  mysql.user: "數據庫用戶名"
  mysql.password: "數據庫密碼"
---
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:1.3.0 # nacos 版本
          resources:
            requests:
              memory: "2Gi"
              cpu: "500m"
          ports:
            - containerPort: 8848
              name: client
            - containerPort: 7848
              name: rpc
          env:
            - name: NACOS_REPLICAS
              value: "3" # 實例數量
            - name: MYSQL_SERVICE_HOST
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.host               
            - 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-k8s 根目錄執行:kubectl create -f ./deploy/nacos/nacos-quick-start.yaml,刷新頁面可以看到部署結果:

參考:

  1. nacos-k8s
  2. nacos-docker
  3. nacos


免責聲明!

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



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