K8STARS 将 Tars 服务运行在 Kubernetes 中开源项目

我要开发同款
匿名用户2020年08月01日
62阅读
所属分类Google Go、微服务框架、程序开发、云原生
授权协议BSD-3-Clause

作品详情

k8stars是便于将tars服务运行在Kubernetes中的方案。

特性保持tars原生的开发框架能力支持tars的名字服务自动注册和配置删除支持原有tars服务平滑迁移到k8s等容器平台无侵入性设计,与运行环境无偶合关系实现方案

在tarsregistry增加了3个接口,用于tars名字的自动注册/心跳上报和节点下线。

提供一个tarscli命令行工具,用于分配端口/生成配置/上报心跳以及节点下线。

部署示例

tarsregistry(名字服务)参考baseserver的说明部署tarsregistry

部署服务示例

部署示例simpleserver

cdexamples/simple&&kubectlapply-fsimpleserver.yaml

示例说明:

镜像由 examples/simple/Dockerfile 文件制作,基础镜像由 cmd/tarscli/Dockerfile 制作start.sh中的tarscligenconf用于生成tars服务启动配置_server_meta.yaml文件用于配置服务的元数据,字段信息可以参考 app/genconf/config.go 中的 ServerConf 结构体。endpoint默认为tcp-h${local_ip}-p${random_port},支持自动填入IP和随机端口。

基于Go语言的HelloWorld程序TestApp.HelloGo

验证部署登录db_tars,然后执行select*fromt_server_conf\G可以看到simpleserver的节点信息已自动注册。

tars部署目录结构

tarscli基于环境变量TARS_PATH(默认/tars)来管理服务,各目录功能:

${TARS_PATH}/bin:启动脚本和二进制文件${TARS_PATH}/conf:配置文件${TARS_PATH}/log:log文件${TARS_PATH}/data:运行状态/缓存文件关于tarscli

tarscli提供了一组命令工具,方便tars服务的容器化部署,可通过环境变量来指定参数,详细说明见tarsclihelp。以下是tarscli支持的子命令

genconf 用于生成tars服务的启动配置文件。支持的环境变量有:

TARS_APPLICATION 指定的应用名,默认从_server_meta.yaml中读取TARS_SERVER 指定的服务名,默认从_server_meta.yaml中读取TARS_BUILD_SERVER编译时的服务名,编译的服务名与运行的服务名不同时会用到TARS_LOCATOR可以指定registry的地址,默认是tars-registry.default.svc.cluster.local-p17890(service的地址)TARS_SET_ID可以指定服务setTARS_MERGE_CONF可指定配置模板文件,并将配置合并到服务的启动配置文件中

supervisor 默认执行先genconf命令,再启动并监控服务。支持的环境变量有:

TARS_START_PATH服务的启动脚本,默认是$TARS_PATH/bin/start.shTARS_STOP_PATH服务的停止脚本,默认是kill在$TARS_PATH路径下的所有服务进程TARS_REPORT_INTERVAL上报心跳到registry的时间间隔TARS_DISABLE_FLOW注册到registry时是否开启流量,非空表示关闭,默认开启TARS_CHECK_INTERVAL检查服务状态的时间间隔,如果状态有变化会实时同步到regitryTARS_BEFORE_CHECK_SCRIPT每次检查前都运行的shell命令TARS_CHECK_SCRIPT_TIMEOUT每次检查前运行shell命令的超时时间TARS_PRESTOP_WAITTIME关流量-停止服务前的等待时间,用于无损变更,默认80秒

hzcheck用于同步服务状态和k8s的pod状态,需要将pod的readinessprobe设为tarscli hzcheck命令

prestop用于在服务退出前删除在registry对应的配置

TARS_PRESTOP_WAITTIME关流量-停止服务前的等待时间,用于无损变更,默认80秒

notify用于发送管理命令,常用命令有:tars.setloglevel/tars.pprof等

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论