kubernetes部署集群nacos(防坑版)

在Kubernetes上部署一套 nacos 集群

一、nacos 概覽

Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)畅形。Nacos 提供了一組簡單易用的特性集,幫助您快速實現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)说铃、服務(wù)配置归粉、服務(wù)元數(shù)據(jù)及流量管理共螺。

Nacos 幫助您更敏捷和容易地構(gòu)建径筏、交付和管理微服務(wù)平臺葛假。 Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu) (例如微服務(wù)范式、云原生范式) 的服務(wù)基礎(chǔ)設(shè)施匠璧。

二桐款、nacos 2.0版本須知

Nacos2.0版本相比1.X新增了gRPC的通信方式咸这,因此需要增加2個端口夷恍。新增端口是在配置的主端口(server.port)基礎(chǔ)上,進行一定偏移量自動生成媳维。

端口 與主端口的偏移量 描述
9848 1000 客戶端gRPC請求服務(wù)端端口酿雪,用于客戶端向服務(wù)端發(fā)起連接和請求
9849 1001 服務(wù)端gRPC請求服務(wù)端端口,用于服務(wù)間同步等

使用VIP/nginx請求時侄刽,需要配置成TCP轉(zhuǎn)發(fā)指黎,不能配置http2轉(zhuǎn)發(fā),否則連接會被nginx斷開州丹。

客戶端擁有相同的計算邏輯醋安,用戶如同1.X的使用方式,配置主端口(默認8848)墓毒,通過相同的偏移量吓揪,計算對應(yīng)gRPC端口(默認9848)。

因此如果客戶端和服務(wù)端之前存在端口轉(zhuǎn)發(fā)所计,或防火墻時柠辞,需要對端口轉(zhuǎn)發(fā)配置和防火墻配置做相應(yīng)的調(diào)整。

三主胧、nacos部署

kubectl create ns nacos

3.1叭首、準(zhǔn)備storageClass

這里部署采用nfs的存儲類,自動創(chuàng)建pvc踪栋,詳情參考k8s存儲

3.2焙格、準(zhǔn)備好數(shù)據(jù)庫

一、選擇自己數(shù)據(jù)庫鏡像(數(shù)據(jù)庫在GitHub里面有夷都,可以復(fù)制一份)   
          https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql 

二间螟、選擇nacos/mysql鏡像部署

如果選擇一:

    參考 docker部署mysql(含初始化腳本)
    create database nacos-db;
/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '內(nèi)容',
  `gmt_modified` datetime NOT NULL COMMENT '修改時間',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租戶字段';


/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整個集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配額,0表示使用默認值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個配置大小上限厢破,單位為字節(jié)荣瑟,0表示使用默認值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大個數(shù),摩泪,0表示使用默認值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個聚合數(shù)據(jù)的子配置大小上限笆焰,單位為字節(jié),0表示使用默認值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大變更歷史數(shù)量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群见坑、各Group容量信息表';

/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租戶改造';


/******************************************/
/*   數(shù)據(jù)庫全名 = nacos_config   */
/*   表名稱 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配額嚷掠,0表示使用默認值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個配置大小上限,單位為字節(jié)荞驴,0表示使用默認值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大個數(shù)',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個聚合數(shù)據(jù)的子配置大小上限不皆,單位為字節(jié),0表示使用默認值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大變更歷史數(shù)量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租戶容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '創(chuàng)建時間',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
    `username` varchar(50) NOT NULL PRIMARY KEY,
    `password` varchar(500) NOT NULL,
    `enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
    `username` varchar(50) NOT NULL,
    `role` varchar(50) NOT NULL,
    UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

如果選擇二:

[root@ljwmaster1 my]# cat mysql-storageClass-service.yaml 
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-data
  namespace: nacos
spec:
  accessModes:  ["ReadWriteMany"]
  resources:
    requests:
      storage: 3Gi
  storageClassName: nfs  # kubectl get storageclass

---
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
  namespace: nacos
  labels:
    name: mysql
spec:
  replicas: 1
  selector:
    name: mysql
  template:
    metadata:
      labels:
        name: mysql
    spec:
      containers:
      - name: mysql
        image: nacos/nacos-mysql:5.7   #鏡像版本
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
        env: #數(shù)據(jù)庫參數(shù)
        - name: MYSQL_ROOT_PASSWORD
          value: "root"
        - name: MYSQL_DATABASE
          value: "nacos_devtest"
        - name: MYSQL_USER
          value: "nacos"
        - name: MYSQL_PASSWORD
          value: "nacos"
      volumes:
      - name: mysql-data
        persistentVolumeClaim:
          claimName: mysql-data

---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: nacos
  labels:
    name: mysql
spec:
  ports:
  - port: 3306       #svc 端口
    targetPort: 3306 #容器端口  
  selector:
    name: mysql

運行結(jié)果:

# kubectl get pvc -n nacos
NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   
mysql-data           Bound    pvc-fa46712d-ee1d-453a-b9bd-8b48ae9666ae   3Gi        RWX            nfs           

# kubectl get pods -n nacos -o wide
NAME          READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
mysql-99js9   1/1     Running   0          8h    10.244.242.31   ljwnode2   <none>           <none>


# kubectl get svc -n nacos -o wide
NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)               AGE   SELECTOR
mysql            ClusterIP   10.104.5.176    <none>        3306/TCP              8h    name=mysql

3.3熊楼、創(chuàng)建配置文件

[root@ljwmaster1 nacos]# cat configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-cm
  namespace: nacos
data:
  #第一種:自己部署mysql初始化如下配置
  #mysql.db.name: "nacos-db"
  #mysql.db.host: "ip" # mysql數(shù)據(jù)庫內(nèi)部地址
  #mysql.port: "3306"
  #mysql.user: "root"
  #mysql.password: "密碼"
  #第二種:nacos/mysql如下配置
  mysql.db.name: "nacos_devtest"
  mysql.db.host: "10.104.5.176" # mysql數(shù)據(jù)庫內(nèi)部地址
  mysql.port: "3306"
  mysql.user: "nacos"
  mysql.password: "nacos"

3.4霹娄、部署headless-service

[root@ljwmaster1 nacos]# cat nacos-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  namespace: nacos
  labels:
    app: nacos
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
  ports:
  - protocol: TCP
    port: 8848
    targetPort: 8848
    name: nacos-http
  - protocol: TCP
    port: 9848
    targetPort: 9848
    name: nacos-rpc
  - protocol: TCP
    port: 9849
    targetPort: 9849
    name: raft-rpc
  - protocol: TCP
    port: 7848
    targetPort: 7848
    name: old-raft-rpc
  clusterIP: None
  selector:
    app: nacos

3.5、創(chuàng)建部署文件StatefulSet

StatefulSet部署方式為每個POD生成固定的名稱鲫骗,如nacos-0犬耻、nacos-1、nacos-2

StatefulSet和Headless Service為每個nacos實例生成一個唯一的dns地址执泰,其中NACOS_SERVERS 的value值一定要根據(jù)實際情況來更改:
                    模板:statefulset名.nacos服務(wù)名.空間命名.svc.cluster.local:端口 

statefulset.yaml

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
  namespace: nacos
spec:
  serviceName: nacos-headless
  selector:
    matchLabels:
      app: nacos
  replicas: 3
  template:
    metadata:
      labels:
        app: nacos
    spec:
     # affinity:
     #   podAntiAffinity:
     #     requiredDuringSchedulingIgnoredDuringExecution:
     #       - labelSelector:
     #           matchExpressions:
     #             - key: "app"
     #               operator: In
     #               values:
     #                 - nacos
     #         topologyKey: "kubernetes.io/hostname"
      initContainers:
      - name: peer-finder-plugin-install
        image: nacos/nacos-peer-finder-plugin:1.1
        imagePullPolicy: IfNotPresent
        volumeMounts:
          - mountPath: /home/nacos/plugins/peer-finder
            name: nacos-data
            subPath: peer-finder
      containers:
      - name: nacos
        image: nacos/nacos-server:latest
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            memory: "2Gi"
            cpu: "500m"
        ports:
        - containerPort: 8848
          name: nacos-http
        - containerPort: 9848
          name: nacos-rpc
        - containerPort: 9849
          name: raft-rpc
        #- containerPort: 7848
        #  name: old-raft-rpc
        env:
        - name: NACOS_REPLICAS
          value: "3"
        - name: SERVICE_NAME
          value: "nacos-headless"
        - name: DOMAIN_NAME
          value: "cluster.local"
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: MYSQL_SERVICE_HOST
          valueFrom:
            configMapKeyRef:
              name: nacos-cm
              key: mysql.db.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: NACOS_APPLICATION_PORT
          value: "8848"
        - name: PREFER_HOST_MODE
          value: "hostname"
        - name: NACOS_SERVERS
          value: "nacos-0.nacos-headless.nacos.svc.cluster.local:8848 nacos-1.nacos-headless.nacos.svc.cluster.local:8848 nacos-2.nacos-headless.nacos.svc.cluster.local:8848"
        volumeMounts:
        - name: nacos-data
          mountPath: /home/nacos/plugins/peer-finder
          subPath: peer-finder
        - name: nacos-data
          mountPath: /home/nacos/data
          subPath: data
        - name: nacos-data
          mountPath: /home/nacos/logs
          subPath: logs
      #volumes:
      #- name: nacos-data
      #  persistentVolumeClaim:
      #    claimName: nacos-data
  volumeClaimTemplates: #存儲卷申請模板枕磁,創(chuàng)建PVC,指定pvc名稱大小,將自動創(chuàng)建pvc术吝,且pvc必須由存儲類供應(yīng)计济。
  - metadata:
      name: nacos-data
      namespace: nacos
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: nfs
      resources:
        requests:
          storage: 1Gi
          
[root@ljwmaster1 nacos]# kubectl get pod -n nacos -o wide
NAME          READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
mysql-99js9   1/1     Running   0          9h    10.244.242.31   ljwnode2   <none>           <none>
nacos-0       1/1     Running   0          8h    10.244.242.34   ljwnode2   <none>           <none>
nacos-1       1/1     Running   0          8h    10.244.82.181   ljwnode1   <none>           <none>
nacos-2       1/1     Running   0          8h    10.244.242.35   ljwnode2   <none>           <none>

[root@ljwmaster1 nacos]# ll /nfs/nfs_pro/
drwxrwxrwx 5 root    root  4096 Feb 26 16:46 nacos-nacos-data-nacos-0-pvc-7b7613cc-2ee2-4b4d-af75-ebd2ad57e85d
drwxrwxrwx 5 root    root  4096 Feb 26 16:46 nacos-nacos-data-nacos-1-pvc-9f317d6d-87b6-4b82-89be-b7d00c9ee273
drwxrwxrwx 5 root    root  4096 Feb 26 16:49 nacos-nacos-data-nacos-2-pvc-d4a66073-b12c-4b54-8d39-5d44f8ac0e1f

官方bug:### 已知問題
- 啟動后需要重啟pod nacos-0集群才能正常使用

3.6、nacos訪問

可以配置Ingress(可選)排苍,這兒直接用的nodeport暴露端口方式外部訪問沦寂。

http://ip:端口/nacos/

7.png

3.7、可能遇到的報錯

第一種:沒配置cluster模式

1.png

解決方法:

        - name: MODE
          value: "cluster"

報錯解析:需要對 statefulset.yaml 配置文件中添加這個模式纪岁,不然無法識別集群查找

第二種:沒配置存儲字段

報錯: invalid: spec.resources[storage]: Required value

解決:
      resources:       <<<--- statefulset.yaml加入以下三行
        requests:
          storage: 1Gi

第三種:沒有使用volumeClaimTemplates

nacos.log日志查看詳細凑队,nacos.log日志中最后顯示

3.png

異常是由com.alipay.sofa.jraft.***類拋出的,讓我去查看alipay-jraft.log日志幔翰。

4.png

lipay-jraft.log日志異常顯示這個什么log被鎖了不能使用

5.png

就猜測是這個文件只能被一個服務(wù)使用漩氨,不能三個服務(wù)都用一個相同文件,需要三個不同的pvc解決

解決方法:
     使用volumeClaimTemplates

第四種:無mysql.db.host

只是nacos-k8s這個里面有個坑遗增,就是缺了(官方缺少了)
          - name: MYSQL_SERVICE_HOST
            valueFrom:
              configMapKeyRef:
                name: nacos-cm
                key: mysql.db.host

如有問題叫惊,歡迎討論反饋喲!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末做修,一起剝皮案震驚了整個濱河市霍狰,隨后出現(xiàn)的幾起案子抡草,更是在濱河造成了極大的恐慌,老刑警劉巖蔗坯,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件康震,死亡現(xiàn)場離奇詭異,居然都是意外死亡宾濒,警方通過查閱死者的電腦和手機腿短,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绘梦,“玉大人橘忱,你說我怎么就攤上這事⌒斗睿” “怎么了钝诚?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長榄棵。 經(jīng)常有香客問我凝颇,道長,這世上最難降的妖魔是什么秉继? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任祈噪,我火速辦了婚禮泽铛,結(jié)果婚禮上尚辑,老公的妹妹穿的比我還像新娘。我一直安慰自己盔腔,他們只是感情好杠茬,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弛随,像睡著了一般瓢喉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舀透,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天栓票,我揣著相機與錄音,去河邊找鬼愕够。 笑死走贪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惑芭。 我是一名探鬼主播坠狡,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼遂跟!你這毒婦竟也來了逃沿?” 一聲冷哼從身側(cè)響起婴渡,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凯亮,沒想到半個月后边臼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡假消,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年硼瓣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片置谦。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡堂鲤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出媒峡,到底是詐尸還是另有隱情瘟栖,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布谅阿,位于F島的核電站半哟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏签餐。R本人自食惡果不足惜寓涨,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氯檐。 院中可真熱鬧戒良,春花似錦、人聲如沸冠摄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽河泳。三九已至沃呢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拆挥,已是汗流浹背薄霜。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纸兔,地道東北人惰瓜。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像食拜,于是被迫代替她去往敵國和親鸵熟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容