1.部署说明
1.1环境说明
1. 演示使用 metersphere 版本: v1.16.4
2.k8s 节点包括 1 台 master 和 1 台 worker ,提前用 kubeoperator 自动部署 k8s 集群,如果是公有云,节点 IP 要使用公网 IP ,不能用弹性 IP
3. 应用部署控制管理器使用 deployment
4. 持久化存储使用 hostPath 写入到 NFS 挂载目录 ``
1.2NFS挂载方式
在 master 配置 nfs 服务,并将 nfs 共享目录 /nfs_storage 挂在到了两个节点中的 /opt/nfs
如下图所示: ``
2.NFS挂载
2.1 安装NFS服务端(Master节点)
1. 在 master 节点上安装 NFS 服务器 ``
yum -y install nfs-utils
2 安装 nfs+rpc
yum -y install nfs-utils rpcbind
3. 验证 NFS 安装 ``
rpm -qa nfs-utils
![]()
4. 在服务端创建共享目录 /nfs_storage ( 目录可自定义 )
mkdir -p /nfs_storage
chmod 666 /nfs_storage
5. 修改 NFS 配置文件 /etc/exports
vim /etc/exports
/nfs_storage``
xx.xx.xx.xx(rw,sync,insecure,no_subtree_check,no_root_squash) xx.xx.xx.xx(rw,sync,insecure,no_subtree_check,no_root_squash)
# xx.xx.xx.xx 为 MeterSphere 节点 IP ``
如下图所示 :  `6.` `重载配置数据`
exportfs -rv
7. 启动 rpc
systemctl start rpcbind
8. 设置 rpc 开机启动 ``
systemctl enable rpcbind
9 .检查 RPC
rpcinfo -p localhost

10. 启动 NFS 服务 ``
systemctl start nfs
systemctl enable nfs
2.2安装NFS客户端(Worker节点)
1. 在 MeterSphere 节点上安装 NFS 客户端 ``
yum -y install nfs-utils
2. 检查 rpc 服务  `3. ` `查看服务器端挂载目录(判断网络是否通)`
showmount -e xx.xx.xx.xx # xx.xx.xx.xx 为 服务端 服务器 IP

4. 将服务器端目录挂在到本地
mkdir -p /opt/nfs/metersphere
mount -t nfs xx.xx.xx.xx:/nfs_storage /opt/nfs/metersphere # xx.xx.xx.xx 为 服务端 服务器 IP (如果报错,检查 NFS 状态,是否正常启动) ``
5. 验证:在服务器端 /nfs_storage 路径下新建文件后去客户端挂载目录查看是否同步
3.部署MS
3.1 创建应用
1.创建NFS-CLIENT
Kubectl create -f nfs-deployment.yaml
以下是yalm文件内容:
172.16.16.12 和/nfs_storage,这两个是NFS服务IP和共享目录,根据实际情况修改
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-client-provisioner
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-client-provisioner
spec:
replicas: 1
selector:
matchLabels:
app: nfs-client-provisioner
strategy:
type: Recreate
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: nfs-client-provisioner
containers:
- name: nfs-client-provisioner
image: registry.cn-hangzhou.aliyuncs.com/wangfang-dev/nfs-client-provisioner:latest
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: mycase
- name: NFS_SERVER
value: 172.16.16.12
- name: NFS_PATH
value: /nfs_storage
volumes:
- name: nfs-client-root
nfs:
server: 172.16.16.12
path: /nfs_storage
kubectl get po 查看nfs-client

2. 创建存储类
Kubectl create -f class.yalm
Kubectl get sc查看存储类
以下下为文件内容:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default
provisioner: mycase
3. 赋权
kubectl create clusterrolebinding gitlab-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccounts --namespace=dev
4. 导入镜像
将MeterSphere安装包中的镜像一次导入到系统中,或导入到harbor中;
此次演示环境没有配置harbor,直接导入到两个k8s节点中,每个节点都要导入所有镜像:
cd /opt/metersphere-offline-installer-v1.16.4/
for i in ls images; do docker load < $i; done
5. 创建MS应用
kubectl create ns ms创建命名空间
提前下载好helm离线包
helm install metersphere metersphere.tgz -n ms部署应用
kubectl get pods -n ms 查看POD部署状态
6.创建node-port端口映射
kubectl create -f ms-server-nodeport.yalm
以下为文件内容:
apiVersion: v1
kind: Service
metadata:
name: metersphere-server-nodeport
namespace: ms
spec:
ports:
- name: metersphere-server
protocol: TCP
port: 8081
targetPort: 8081
nodePort: 30801
type: NodePort
selector:
app: metersphere-server
7.访问MS
http://nodeIP:30801


