【安装部署】使用 Helm 部署 MeterSphere


Administrator
飞致云 发布于 2022-03-04 / 945 阅读 / 0 评论 /
本文介绍在K8S集群环境中使用Helm 部署MeterSphere 的操作过程。

1 概述

本文档将介绍在K8S集群环境中部署MeterSphere 的操作过程,不包括部署K8S的过程。

2 部署说明

2.1 环境说明

(1)演示使用metersphere版本:v1.16.4

(2) k8s节点包括1台master和1台worker,提前用kubeoperator自动部署k8s集群,如果是腾讯云,节点IP要使用内网IP,不能用弹性IP

(3) 应用部署控制管理器使用deployment

(4) 持久化存储使用hostPath写入到NFS挂载目录

2.2 NFS挂载方式

在master配置nfs服务,并将nfs共享目录/nfs_storage挂在到了两个节点中的/opt/nfs

如下图所示:

image.png

3 NFS挂载

3.1 安装NFS服务端(Master节点)

在master节点上安装NFS服务器

yum -y install nfs-utils

安装nfs+rpc

yum -y install nfs-utils rpcbind

验证NFS安装

rpm -qa nfs-utils

在服务端创建共享目录/nfs_storage (目录可自定义)

mkdir -p /nfs_storage
chmod 666 /nfs_storage

修改 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

如下图所示:

重载配置数据

exportfs -rv

启动rpc

systemctl start rpcbind

设置rpc开机启动

systemctl enable rpcbind

检查RPC

rpcinfo -p localhost

启动 NFS 服务

systemctl start nfs
systemctl enable nfs

3.2 安装NFS客户端(Worker节点)

在MeterSphere节点上安装NFS客户端

yum -y install nfs-utils

检查rpc服务

查看服务器端挂载目录(判断网络是否通)

showmount -e xx.xx.xx.xx   # xx.xx.xx.xx为NGINX服务器IP

将服务器端目录挂在到本地

mkdir -p /opt/nfs/metersphere
mount -t nfs xx.xx.xx.xx:/nfs_storage  /opt/nfs/metersphere     # xx.xx.xx.xx为NGINX服务器IP(如果报错,检查NFS状态,是否正常启动)

验证:在服务器端 /nfs_storage路径下新建文件后去客户端挂载目录查看是否同步

4 部署MS

4.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
image.png

4.1.2 创建存储类

kubectl create -f class.yaml
kubectl get sc查看存储类

以下为 class.yaml 文件内容:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default
provisioner: mycase

4.1.3 赋权

kubectl create clusterrolebinding gitlab-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccounts --namespace=dev

4.1.4 导入镜像

将MeterSphere安装包中的镜像一次导入到系统中,或导入到harbor中;此次演示环境没有配置harbor,直接导入到两个k8s节点中,每个节点都要导入所有镜像:

cd /opt/metersphere-offline-installer-v1.16.4/
for i in ls images; do docker load < $i; done

4.1.5 创建MS应用

创建命名空间

kubectl create ns ms  

提前下载好helm离线包,直接helm 部署 MeterSphere

helm install metersphere metersphere.tgz -n ms

部署完成后,通过 kubectl get pods -n ms 查看MeterSphere 各个POD的运行状态
image.png4.1.6 创建node-port端口映射

kubectl create -f ms-server-nodeport.yaml

以下为ms-server-nodeport.yaml文件内容:

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

4.1.7 访问MS

http://nodeIP:30801



是否对你有帮助?