在Kubernetes上部署一套 nacos 集群
- 官方nacos集群yaml文檔參考: https://github.com/nacos-group/nacos-k8s.git
一、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/
3.7、可能遇到的報錯
第一種:沒配置cluster模式
解決方法:
- name: MODE
value: "cluster"
報錯解析:需要對 statefulset.yaml 配置文件中添加這個模式纪岁,不然無法識別集群查找
第二種:沒配置存儲字段
報錯: invalid: spec.resources[storage]: Required value
解決:
resources: <<<--- statefulset.yaml加入以下三行
requests:
storage: 1Gi
第三種:沒有使用volumeClaimTemplates
nacos.log日志查看詳細凑队,nacos.log日志中最后顯示
異常是由com.alipay.sofa.jraft.***類拋出的,讓我去查看alipay-jraft.log日志幔翰。
lipay-jraft.log日志異常顯示這個什么log被鎖了不能使用
就猜測是這個文件只能被一個服務(wù)使用漩氨,不能三個服務(wù)都用一個相同文件,需要三個不同的pvc解決
解決方法:
使用volumeClaimTemplates
第四種:無mysql.db.host
只是nacos-k8s這個里面有個坑遗增,就是缺了(官方缺少了)
- name: MYSQL_SERVICE_HOST
valueFrom:
configMapKeyRef:
name: nacos-cm
key: mysql.db.host
如有問題叫惊,歡迎討論反饋喲!