Probius+Kubernetes任务系统如虎添翼
Probius是一款自定义任务引擎,可以灵活方便的处理日常运维中的各种任务,我们所有的CI/CD任务都通过Probius来完成的,这篇文章Probius:一个功能强大的自定义任务系统对其有详细的介绍,之前通过Probius更新Kubernetes的Deployment是通过脚本的方式来完成的,脚本大概像这样
if [ $# != 2 ];then
echo "USAGE: $0 PROJ ENVT"
exit 1
fi
PROJ=$1
ENVT=$2
BASE_DIR=/home/data/probius/${PROJ}/${ENVT}
DOCKER_DIR=${BASE_DIR}/docker
IMAGE_NAME=`cat ${BASE_DIR}/cache/image.txt`
cd ${DOCKER_DIR} &&\
export KUBECONFIG=/root/.kube/config &&\
kubectl set image deployment/${ENVT}-${PROJ} ${ENVT}-${PROJ}=${IMAGE_NAME} -n ${ENVT} &&\
exit 0 ||\
exit 1
直接通过kubectl
命令来更新,这就需要在Probius服务器上安装kubectl并打通整个集群,这种方式仅是能用但不够优雅,并且对于开发测试环境,在部署完成后有查看日志及登录系统排错的需求,这就需要借助Kubernetes-Dashboard
来完成,多个系统相互关联跳转增加了使用成本,同时Dashboard的权限也不好控制,所以我就考虑是否可以让Kubernetes以插件的形式集成进Probius系统,用户在Probius系统内完成部署,同时也可以在Probius系统查看Kubernetes的相关信息甚至通过WebSSH登陆,彻底抛弃掉Kubernetes的Dashboard,看上去很完美,正好最近打算升级下Kubernetes集群版本,于是就趁此机会花了几天时间来实现了
Kubernetes子任务
首先在命令和脚本之外添加了Kubernetes类型的子任务,部署任务只需要关联这个Kubernetes类型的子任务就可以实现Deployment的更新
这个子任务的目的主要是为了替换上边的脚本,通过Kubernetes的Python客户端来实现对Deployment的更新,有了这个子任务我们就不需要在Probius服务器上安装kubectl服务来运行kubectl命令了,整个部署流程能够正常跑通
Kubernetes管理
但在部署之前我们需要先新建相关服务,以一个全新的环境为例,需要先创建Kubernetes的namespace,然后在namespace下创建deployment、service、ingress,我们的namespace是根据环境来划分了,例如dev环境的所有容器都跑在名为dev的namespace下
Namespace创建完成后,可以点击进入查看Namespace下的deployment、service、ingress、configmap
当前还没有具体deployment/service/ingress,接下来就创建,每个项目都会有deployment、service和ingress,并且他们之间是相互关联的,新建项目的同时就把这些服务给一并创建了是个不错的选择,为此写了个KubeProject服务,在这里可以定义项目的名称、环境、镜像、域名、配置以及关联的configmap
选择保存仅会保存填写的表单信息到数据库,选择保存并创建K8S环境就可以在保存表单信息到数据库的同时创建Kubernetes的deployment、service和ingress了,保存并更新Deployment会在Deployment配置有变化的情况下使用,例如新的资源限制或是configmap绑定
当资源创建成功后我们就可以在namespace下看到相应资源了
我们最为关注的deployment信息也可以通过点击deployment的名字或是在KubProject里点击项目的名字进入,进入之后可以查看deployment下的pod列表,通过webssh进入pod内部,也可以查看每个pod的日志,甚至可以对deployment进行scale伸缩或是重建
WebSSH很好用,想要实现的可以看看这篇文章:Django实现WebSSH操作Kubernetes Pod
至此可以摆脱Kubernetes-dashboard了
后记
我们使用Kubernetes有超过4年的时间,借助于Kubernetes不仅提高了资源利用率,更是优化了整个运维的工作流程,受益颇多
留个截图纪念下这战功赫赫的集群吧,虽然你已老去,但是你把我带进了Kubernetes的大门,从此打开了另一个世界
Probius+Kubernetes任务系统如虎添翼的更多相关文章
- Probius+Prometheus通过API集成POD监控
上一篇文章Probius+Kubernetes任务系统如虎添翼讲了我们把Kubernetes集成进了任务系统Probius,上线后小伙伴反馈虽然摆脱了Kubernetes-Dashboard,但还是得 ...
- Probius:一个功能强大的自定义任务系统
断更的这些日子,我又折腾了一个轮子,文末参考源码 大约在一年半以前写过一篇文章『探秘varian:优雅的发布部署程序』,里边有讲到我们采用类似lego的模块化方式来构建CICD的流程,虽能满足我们的需 ...
- 039.[转] 基于 Kubernetes 和 Spring Cloud 的微服务化实践
http://dockone.io/article/2967 基于 Kubernetes 和 Spring Cloud 的微服务化实践 写在前面 网易云容器平台期望能给实施了微服务架构的团队提供完整的 ...
- [笔记]kubernetes 无法启动问题
在启动kubernetes的时候报错误. ERROR: timed out for http://localhost:4001/v2/keys/ 原因是无法启动etcd, etcd 监听4001本地端 ...
- 基于Kubernetes在AWS上部署Kafka时遇到的一些问题
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 交代一下背景:我们的后台系统是一套使用Kafka消息队列的数据处理管线 ...
- 基于Python+Django的Kubernetes集群管理平台
➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...
- Docker中部署Kubernetes
Kubernetes为Google开源的容器管理框架,提供了Docker容器的夸主机.集群管理.容器部署.高可用.弹性伸缩等一系列功能:Kubernetes的设计目标包括使容器集群任意时刻都处于用户期 ...
- kubernetes部署Fluentd+Elasticsearch+kibana 日志收集系统
一.介绍 1. Fluentd 是一个开源收集事件和日志系统,用与各node节点日志数据的收集.处理等等.详细介绍移步-->官方地址:http://fluentd.org/ 2. Elastic ...
- kubernetes 文档
kubernetes 官方文档:http://kubernetes.io/docs/ null
随机推荐
- 【java web】拦截器inteceptor
一.简介 java里的拦截器提供的是非系统级别的拦截,也就是说,就覆盖面来说,拦截器不如过滤器强大,但是更有针对性. Java中的拦截器是基于Java反射机制实现的,更准确的划分,应该是基于JDK实现 ...
- mybatis学习日志二
一.动态sql语句 if语句 if+where语句 if+set语句 choose(when,otherwise)语句 trim语句 sql片段 foreach语句 总结 bean部分的User类代码 ...
- 【springcloud】Zuul高级配置(zuul--2)
转自:https://blog.csdn.net/pengjunlee/article/details/87162192 自定义路由规则 在<API Gateway 的路由和过滤(Zuul)&g ...
- Python环境变量配置
第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64 ...
- Maven脑图
转自:https://segmentfault.com/a/1190000017832792 参考:https://www.cnblogs.com/mzywucai/p/11053341.html
- Linux c高级
目录 一.Linux 1.1.嵌入式 1.2.什么是Linux 1.3.Linux发行版 1.4.Linux体系结构 1.5.虚拟4G内存 1.6.shell 命令 1.7.软件包的管理 1.8.图形 ...
- clickhouse物化视图
今天来简单介绍一下clickhouse的物化视图 物化视图支持表引擎,数据保存形式由它的表引擎决定,创建物化视图的完整语法如下: create materialized view mv_log eng ...
- 刷题-力扣-剑指 Offer 15. 二进制中1的个数
剑指 Offer 15. 二进制中1的个数 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de- ...
- Supervisor服务开机自启动
要解决的问题 在机器上部署自己编写的服务时候,我们可以使用Supervisor作为进程检活工具,用来自动重启服务. 但是当机器重启后,Supervisor却不能自动重启,那么谁来解决这个问题呢? 答案 ...
- spring之自定义注解
java.lang.annotation提供了四种元注解,专门注解其他的注解: @Target –注解用于什么地方,默认值为任何元素,表示该注解用于什么地方.可用的ElementType指定参数 ,也 ...