分享好友 最新资讯首页 最新资讯分类 切换频道
python代码部署到k8s中运行 python k8s
2024-12-29 10:37

线上有一套k8s集群,部署了很多应用。现在需要对一些基础服务做一些常规检测,比如:

  • 系统时间,要求:k8s的每一个节点的时间,差值上下不超过2秒
  • k8s版本,要求:k8s的每一个节点的版本必须一致
  • redis集群,要求:1. 查看cluster nodes状态 2. AOF状态
  • etcd,要求:访问etcd的api,能获取到版本信息, 说明etcd服务正常
  • mysql,要求:获取mysql运行统计时间,能获取说明mysql服务正常
  • ceph,要求:使用ceph osd tree命令查看ceph节点信息
  • kafka,要求:使用生产者模式写入一个消息,消费者模式能得到同样的消息,则kafka服务正常

 

上面这么多要求,有一大部分,都需要远程执行命令。那么如何使用python来执行远程命令呢?

使用paramiko模块即可!

paramiko

安装paramiko模块

 

使用paramiko

这里,我封装了一个函数ssh2,代码如下:

 

执行此函数,会返回一个列表。因为是使用readlines,将结果转换为列表了!

 

如果执行时,输出:

 

原因

paramiko 2.4.2 依赖 cryptography,而最新的cryptography==2.5里有一些弃用的API。

解决

删掉cryptography,安装2.4.2,就不会报错了。

 


我们需要获取多台服务器的时间,并且还需要对比时间差。那么最简单办法,就是获取时间戳,它是一段数字,那么数字之间,就可以做减法了!

使用 date +%s

 

怎么去对比,每一天服务器的时间戳呢?上面已经获取到时间戳了,关键问题是,如何对比?

构造字典

这里需要构造一个数据字典,将每一台服务器的ip以及时间戳存储一下,数据格式如下:

 

对比数据

首先从字典里面取出第一个值,由于python 3.5是无需的,所以取出的数据,每次可能不一样。不过没有关系,取出之后,再删除即可!

然后将取出的第一个值,和字典中的其他值,做对比即可!注意:时间戳要转换为int类型才行!

 

ntp.py

View Code

 

执行脚本,输出如下:

 

查看k8s版本,使用命令 kubectl version 

 

那么要获取到 "v1.11.2" ,还需要进一步过滤

 

使用上面的ssh2函数之后,输出的值,是这样的

 

这里会有一个换行符,为了避免这种问题,使用 json.loads() 反序列一下,就可以还原为 v1.11.2,连双引号也没有了!

 

kube_v.py

View Code

 

执行输出:

 

查看cluster nodes信息,使用命令

 

请确保服务器,已经安装了redis,可以执行redis-cli命令

 

执行输出:

 

从上面的输出信息,可以看出,有3个master节点,3个slave节点。其中紫色部分,如果id一致,表示这是一组服务器!

请确保这一组服务器不能同时挂掉,否则会造成数据丢失!

默认redis集群要求至少6个节点,当redis集群中的master节点,挂掉一半时,集群不可用。

也就是说,目前有3个master节点,最多允许1台mater节点挂掉!

判断依据

还有一点,当有任意一个节点状态为fail时,也表示集群不正常!说明:mater节点已经挂掉了一半!

因此,使用python来判断集群是否状态的关键点,就是判断状态中是否有fail即可!

 

在redis.conf配置文件中, 有一个参数 appendonly ,表示是否开启aof,默认是关闭的。

那么使用redis-cli可以获取它的状态

 

执行输出:

 

上面这段输出,表示 没有开启aof

 

redis.py

View Code

 

执行程序,输出:

 

判断etcd工作是否正常,只需要能访问到api地址,就说明正常,url如下:

 

etcd.py

View Code

 

执行输出:

 

查看mysql的运行统计时间,使用命令

 

View Code

 

执行输出:

 

查看节点信息,需要在 主节点操作

 

View Code

 

执行输出:

 

手动创建名为test的topic

 

因为python中的kakfa包无法直接创建 topic,所以需要手动创建

 

由于线上kafka启动了ACL,那么请确保相关用户设置了ACL规则,关于acl的配置,请参考链接:


 

为了方便,这里直接使用超级用户。注意:超级用户是不需要设置ACL规则的,拥有所有权限

View Code

 

执行程序,输出:

 

注意:第一次执行时,会卡住1分钟。多执行几次就会很快了,至于什么原因,不知道!

就是在执行这一行代码时,会卡住

 


最新文章
笔记本电脑十大排名
在现代社会,笔记本电脑已成为人们生活中不可或缺的一部分。无论是工作、学习还是娱乐,笔记本电脑都能够满足人们的需求。市场上
漯河普教云计算机云教室产品厂家
管理亟待改善,人们开始把希望寄托在虚拟化技术的应用上,希望利用虚拟化技术来解决服务器闲置的问题,提高服务器的利用率。虚拟
SSM招聘网系统43yw5--程序+源码+数据库+调试部署+开发环境
本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系
漫画:不食人间烟火的大小姐来到男主的家,若是你该如何侍奉她?
大家好,闲话不多说,先前推的爆笑喜剧漫画大家都看腻了吧,因此这次小编就不搞怪,为大家献上一部正经的温馨甜蜜的古穿今奇幻爱
众安金融总是发短信原因是什么
众安金融总是发短信小编导语在数字化金融时代,信息技术的迅猛发展使得金融服务的方式发生了巨大的变化。众安金融作为一家创新型
Venus(VNS币)兑换菲律宾比索今日价格行情,Venus(VNS币)今日价格行情,最新消息,VNS24小时实时汇率K线历史走势图分析
Venus旨在搭建一个分布式互联网架构,坚持以“信息流动即价值流动”为推动力,以区块链技术为核心,以新的分布式DNS服务系统、分
百度推广怎么做?百度推广收费标准是多少?
在当今数字化时代,网络营销已成为企业获取客户、提升品牌知名度的重要手段之一。作为中国最大的搜索引擎,百度不仅拥有庞大的用
国内莆田潮鞋品牌排行榜最新​从哪买莆田鞋子, 莆田鞋分为哪几个档次​
国内莆田潮鞋品牌排行榜最新​从哪买莆田鞋子, 莆田鞋分为哪几个档次​,需要了解关于“国内莆田潮鞋品牌排行榜最新&
长城汽车车崛起!武装到牙齿的紧凑型suv
新车的外观设计与2019款车型基本保持一致,六边形中网内部采用网状结构,并配有大尺寸的logo,看起来非常的年轻、时尚。车侧采用
支付宝直播卖货怎么操作?支付宝卖货技巧有哪些?(支付宝直播卖货要小程序吗)
随着直播带货的兴起,支付宝也推出了直播卖货功能,为商家提供了一个全新的销售渠道,通过实时视频直播,卖家可以展示产品、与观