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