K8S 搭建 nacos 2.0.1 集群

注意: 后端使用 nfs 作为存储,需要部署 nfs-client-provisioner,对应的 rbac,storageclass,可以参考 https://www.cnblogs.com/klvchen/articles/15353575.html

mkdir -p /data/yaml/nacos-cluster
cd /data/yaml/nacos-cluster

# 创建 ConfigMap
vi cm.yaml 

apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-cm
data:
  mysql.host: "172.16.16.108"
  mysql.db.name: "nacos"
  mysql.port: "3306"
  mysql.user: "root"
  mysql.password: "klvchen"


kubectl apply -f cm.yaml

# 创建 StatefulSet
vi sts.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
spec:
  serviceName: nacos-headless
  replicas: 3
  selector:
    matchLabels:
      app: nacos
  template:
    metadata:
      labels:
        app: nacos
    spec:
      containers:
        - name: k8snacos
          imagePullPolicy: IfNotPresent
          image: nacos/nacos-server:2.0.1
          resources:
            requests:
              memory: "500m"
              cpu: "500m"
          volumeMounts: 
            - mountPath: /home/nacos/data/
              name: data
          ports:
            - containerPort: 8848
              name: client
          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: MODE
              value: "cluster"
            - name: NACOS_SERVER_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"
  volumeClaimTemplates:
  - metadata:
      name: data
      annotations:
        volume.beta.kubernetes.io/storage-class: "nfs"
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

kubectl apply -f sts.yaml

# 创建 svc
vi svc-headless.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  labels:
    app: nacos
spec:
  ports:
    - port: 8848
      name: server
      targetPort: 8848
  clusterIP: None
  selector:
    app: nacos

vi  svc-nodeport.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nacos-server
spec:
  type: NodePort
  selector:
    app: nacos
  ports:
    - name: http
      port: 8848
      targetPort: 8848
      nodePort: 30048

kubectl apply -f svc-headless.yaml 
kubectl apply -f svc-nodeport.yaml

posted @ 2021-10-12 10:59  klvchen  阅读(1241)  评论(0编辑  收藏  举报