部署服务至K8S
1、将docker镜像打包docker save dts-search:v1 > dts-search.tar2、新建目录,目录结构如下:将 dts-search.tar 放入 images 目录下。主目录下包含以下文件:install.sh:k8s 启动的主程序。images:存放 docker 的 tar 包,dts-search.tar。config:k8s的配置...
·
1、将docker镜像打包
docker save dts-search:v1 > dts-search.tar
2、新建目录,目录结构如下:
将 dts-search.tar 放入 images 目录下。
主目录下包含以下文件:
install.sh:k8s 启动的主程序。
images:存放 docker 的 tar 包,dts-search.tar。
config:k8s的配置文件,其中包含集群配置(cluster)和单机配置(single),里面的配置文件都是一样,包含configFile、configPod、yaml。
configPod:docker 容器映射到 k8s 上的配置文件,其中包含 container.yml、pods.yaml、serviceConfig.yaml
configFile:docker 启动过程中可进行修改的配置文件。
yml:?
3、修改配置
3.1、serviceConfig.yaml
其中 nodePort 需要向 k8s 管理员进行确认。
3.2、pods.yaml
3.3、container.yaml
3.4、install.sh
#!/bin/bash
ERROR="\033[41;37m ERROR \033[0m"
INFO="\033[42;37m INFO \033[0m"
WARN="\033[43;37m WARN \033[0m"
COMMON_ERROR='some error happeds, specific information please see console output'
## 定义k8s的安装路径
file_root='/var/lib/restful/common/product/dts-search'
## k8s的启动调用python脚本路径
script_path='/var/lib/restful/common/src/installApp.py'
## 模式:集群(cluster) 单机(single)
platform_type='single'
function check_fun(){
status=$?
error=$COMMON_ERROR
if [[ -n $1 ]] ; then
error=$1
fi
if [[ 0 -ne $status ]] ; then
echo -e "$ERROR $error"
clean
exit 1
fi
}
## 检查 k8s 是否安装 dts-search
function check_install()
{
svc_num=$(kubectl get svc -o=custom-columns=NAME:.metadata.name |grep -c dts-search)
sts_num=$(kubectl get sts -o=custom-columns=NAME:.metadata.name |grep -c dts-search)
pv_num=$(kubectl get pv -o=custom-columns=NAME:.metadata.name |grep -c dts-search)
exist_num=$(( svc_num+sts_num+pv_num ))
# if [[ $exist_num -gt 0 ]] ;then
# echo -e "$ERROR dts-search already installed, exit"
# exit 1
# fi
if [[ $exist_num -gt 0 ]] ;then
echo "$WARN dts-search already installed, uninstall them now !"
uninstall_app
fi
}
## 初始化 postgresql
function init_pg_script()
{
echo -e "$INFO start to init pg script"
kubectl exec -it viid-pg-0 -- /bin/bash -c "rm -rf /var/lib/postgresql/dbs"
kubectl cp ./dbs viid-pg-0:/var/lib/postgresql/
kubectl exec -it viid-pg-0 -- /bin/bash -c "chmod -R 755 /var/lib/postgresql/dbs/"
kubectl exec -it viid-pg-0 -- /bin/bash -c "chown -R postgres:postgres /var/lib/postgresql/dbs/"
kubectl exec -it viid-pg-0 -- su postgres bash -c "cd /var/lib/postgresql/dbs/ && ./sqltools.sh create"
}
## 检查 k8s 模式
function check_is_cluster()
{
nodes_num=$(kubectl get nodes |wc -l)
if [[ ${nodes_num} -gt 2 ]]; then
platform_type='cluster'
else
platform_type='single'
fi
echo -e "$INFO current is ${platform_type}"
}
## 将主目录下single(cluster)的配置文件copy 至 k8s 安装路径
function copy_config_file()
{
if [ ! -d ${file_root} ]; then
mkdir -p ${file_root}
fi
echo -e "$INFO copy config file to ${file_root}"
/bin/cp -rf ${platform_type}/* ${file_root}/
}
## 拷贝docker 镜像包至安装目录下,同时导入docker进行包
function copy_and_load_image()
{
echo -e "$INFO copy images to ${file_root}"
/bin/cp -rf ../images ${file_root}/
echo -e "$INFO load images"
python ${script_path} loadimage dts-search
}
## 卸载
function uninstall_app()
{
echo -e "$INFO begin to uninstall app......"
python ${script_path} uninstall dts-search
}
## 安装
function createAll_app()
{
echo -e "$INFO begin to install app......"
python ${script_path} createAll dts-search
}
## 启动
function start_search()
{
echo -e "$INFO 启动开州搜索后台"
kubectl exec -it dts-search-pod-0 -- /bin/bash -c "sh /opt/search-engine/bin/start-server.sh"
}
###---------------main----------------------
check_install
check_is_cluster
copy_config_file
copy_and_load_image
#uninstall_app
sleep 10
createAll_app
sleep 30
start_search
可自定义 Function,添加至 main 内下。
4、在k8s上启动容器
4.1、更新component.json,添加接口
查看 /var/lib/restful/common/src/component.json 文件是否有 dts-vehicle 接口的映射关系,若没有则添加。
4.2、将上述文件上传至服务器。
在 /home/dts 下,新建项目文件夹,并将上面的配置文件上传至该文件夹下。层级目录不变。
4.3、启动
sh install.sh
4.4、查看pod和服务
kubectl get pod | grep dts-search
kubectl get svc | grep dts-search
4.5、查看启动日志
kubectl logs -f dts-search-pod-0
4.6、卸载服务
python /var/lib/restful/common/src/installApp.py uninstall dts-search
4.7、重新安装
python /var/lib/restful/common/src/installApp.py createAll dts-search
4.8、查看节点
kubectl get node
更多推荐
已为社区贡献1条内容
所有评论(0)