Print

CloudOS集群新增work节点后,部署服务组件失败

组网及说明

CloudOS E5102H01,有PaaS服务。由于云容器引擎不支持子集群,因此将原规划的3控制节点+6work节点的容器子集群中的6台work节点,重新添加到cloudos的default集群中。

问题描述

部署OMP组件失败,查看服务中部署失败的pod事件,有提示无法找到fc disk。

过程分析

1. 经过查看,发现该pod被创建在work节点上,而work节点由于规划后续作为业务容器的节点,没有挂载CloudOS系统组件部署需要的卷

2. 需要确保该服务部署时候,使用卷的pod会创建在已挂载卷的3台控制节点上。

3. 目前OMP的安装包中,在部署相关pod的deployment文件中没有定义nodeselect,因此需要在安装包中修改nodeselect为controller

解决方法

1. 进入服务组件对应的路径

查询os-sys-app pod所在节点

pod | grep os-sys-app

切换到该节点,查看os-sys-app  pv的挂载路径 

 mount | grep os-sys-app-pvc-middle-pv 

 进入查询到的挂载路径

 cd /var/lib/origin/openshift.local.volumes/pods/2eb61734-e130-11ea-aa25-a4fa76de1b3a/volumes/kubernetes.io~fc/os-sys-app-pvc-middle-pv/extract

每个服务组件在该目录下均有一个子目录目录,可通过查看子目录中内容确定哪一个是OMP的安装包目录,例如为查到OMP的安装包目录为M1MzCAgrWm,pv名称为secaas,进入指定目录。

cd M1MzCAgrWm/secaas/

2. 解压服务组件路径下的服务压缩包zip文件,并备份压缩包 

 tar -zxvf cloudos-secaas-2.0.tgz 

 mv cloudos-secaas-2.0.tgz cloudos-secaas-2.0.tgz.bak 3.

修改需要改变默认配置的POD的deploy模板文件 

 vi cloudos-secaas/templates/sec-system-deployment.yaml 

 在spec中添加 nodeSelector: nodeType: controller 

 4. 重新打包安装包 ,该命令会将刚才解压的目录重新打包为tgz文件,同时会覆盖原来的tgz文件,所以要提前备份。

 helm package cloudos-secaas --save=false
 5. 在CloudOS页面的“系统”-“系统维护”-“云服务与组件”中,在部署失败的服务组件后选择“更新”,重新部署服务,即可正常部署完成。