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
随机推荐
- Blind SQL injection:盲注详解
什么是盲注? 当应用程序易受SQL注入攻击,但其HTTP响应不包含相关SQL查询的结果或任何数据库错误的详细信息时,就会出现盲SQL注入. 对于盲目SQL注入漏洞,许多技术(如联合攻击)都是无效的,因 ...
- noip16
<凉宫春日的忧郁>专场 T1 考试的时候连题面都没看懂,都没往图论这方面想,更别提最小生成树. 正解: 最小生成树prim,好像是什么欧几里得生成树,寒假时候的东西了,我直接找的blog看 ...
- springmvc学习日志三
一.文件的上传 1.首先在lib中添加相应的jar包 2.建立jsp页面,表单必须是post提交,编码必须是multipart/form-data,文件上传文本框必须起名 <body> & ...
- jQuery中ajax请求的六种方法(三、三):$.post()方法
3.$.post()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 使用servlet中是否需要考虑线程问题
package day09; import java.io.IOException; import javax.servlet.ServletException; import javax.servl ...
- tomcat中修改Web站点的默认根目录
转自:http://blog.csdn.net/wzqcongcong/article/details/6387907 想把Tomcat的默认网站根目录修改成自己指定的目录,比如:F:/MyWeb.这 ...
- Java程序设计学习笔记(四)—— GUI
时间:2016-3-24 11:24 天道酬勤 --GUI(图形用户界面) 1.GUI Graphical User Interface(图形用户接口). 用图形的 ...
- java 查询当天0点0分0秒
由于业务需求,要计算客户今日收益,本周本月,本年等收益, 1.查询当天0点0分0秒 2.查询本月一号0点0分0秒 ...... Calendar calendar = Calendar.getInst ...
- centos7 postgresql安装配置
2021-07-15 1.添加用户 # 添加用户 postgres useradd postgres # 给用户 postgres 设置密码 passwd postgres 2.切换到该用户,下载 p ...
- Spring Boot 入门系列(二十四)多环境配置,3分钟搞定!
之前讲过Spring Boot 的系统配置和自定义配置,实现了按照实际项目的要求配置系统的相关熟悉.但是,在实际项目开发过程中,需要面对不同的环境,例如:开发环境,测试环境,生产环境.各个环境的数据库 ...