k8s helm部署ms

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
image
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 ``

如下图所示 ![image|690x43](upload://g7MAEoq6wft802Wk8q5PwYjA4pU.png) `6.` `重载配置数据`

exportfs -rv

7. 启动 rpc

systemctl start rpcbind

8. 设置 rpc 开机启动 ``

systemctl enable rpcbind
9 .检查 RPC

rpcinfo -p localhost
image
10. 启动 NFS 服务 ``

systemctl start nfs

systemctl enable nfs

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

1. MeterSphere 节点上安装 NFS 客户端 ``

yum -y install nfs-utils

2. 检查 rpc 服务 ![image|656x234](upload://pYVWfWwBmOkhvt6S489XvNKyW4a.png) `3. ` `查看服务器端挂载目录(判断网络是否通)`

showmount -e xx.xx.xx.xx # xx.xx.xx.xx 服务端 服务器 IP
image
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
image
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