部署服务至K8S

1、将docker镜像打包

docker save dts-search:v1 > dts-search.tar

2、新建目录,目录结构如下:

部署服务至K8S_第1张图片
部署服务至K8S_第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

部署服务至K8S_第3张图片
其中 nodePort 需要向 k8s 管理员进行确认。

3.2、pods.yaml

部署服务至K8S_第4张图片

3.3、container.yaml

部署服务至K8S_第5张图片

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 接口的映射关系,若没有则添加。
部署服务至K8S_第6张图片

4.2、将上述文件上传至服务器。

在 /home/dts 下,新建项目文件夹,并将上面的配置文件上传至该文件夹下。层级目录不变。

4.3、启动
sh install.sh

部署服务至K8S_第7张图片

4.4、查看pod和服务
kubectl get pod | grep dts-search

kubectl get svc | grep dts-search

部署服务至K8S_第8张图片

4.5、查看启动日志
kubectl logs -f dts-search-pod-0

部署服务至K8S_第9张图片

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

在这里插入图片描述

你可能感兴趣的:(docker)