分享好友 最新资讯首页 最新资讯分类 切换频道
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分钟。多执行几次就会很快了,至于什么原因,不知道!

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

 


最新文章
注意!12月10日实时申赎货币基金操作将关闭,投资者需提前做好准备
摘要:实时申赎货币基金操作将于12月10日关闭。这意味着投资者将无法在该日期进行货币基金的实时申购或赎回操作。投资者应提前做
win10开不了机怎么重装系统
Windows 10系统因其稳定性和丰富的功能,受到广大用户的喜爱。然而,当遇到Win10电脑无法开机的问题时,我们该如何重装系统呢?
微信鸿蒙原生版发布1.0.2.16内测:终于支持文件转发、小程序搜索
快科技11月25日消息,微信鸿蒙原生版今日发布了全新内测,版本号为1.0.2.16。新版加入了文件发送(安全访问)、聊天引用、小程序
小i机器人股价上涨4.77%,AI技术助力企业发展新机遇
2024年12月10日,小i机器人(AIXI)股价在盘中上涨4.77%,最终报收于6.15美元/股,成交额达到81.76万美元。这一上涨趋势反映了市
户外闯关剧本杀小程序源码app制作免费售后
户外闯关剧本杀小程序源码app制作免费售后景区剧本游戏系统搭建源码是由漫云科技开发的一款功能强大的应用程序,可以帮助景区快
火山引擎Force原动力大会临近,关注AI应用进展
国元证券近日发布通信行业周报:火山引擎Force原动力大会临近,关注AI应用进展。以下为研究报告摘要:市场整体行情及通信细分板
伊克罗德携手九科信息共同发布RPA+AI智能机器人解决方案ECRobot
伊克罗德携手九科信息共同发布RPA+AI智能机器人解决方案——ECRobot12月12日,伊克罗德信息在上海举办 “创见AI,迈进智能化未来
淘宝要怎么开店?开店一年交多少钱?(淘宝要怎么开店才能赚钱)
淘宝网是一个比较成熟的网站,所以大家在淘宝网开店是一个非常不错的选择,那淘宝开店要怎么开呢?大家来了解一下淘宝开店的详细
云服务器网络延迟排名
在现代互联网服务中,网络延迟是衡量服务性能的重要指标。云服务器提供商的网络延迟直接影响到应用的响应速度和用户体验。因此,
百度蜘蛛池优化:SEO教程经典版,揭秘蜘蛛池在搜索引擎优化中的应用
《百度蜘蛛池优化:SEO教程经典版》深入解析蜘蛛池在搜索引擎优化中的策略与应用,揭示如何有效利用蜘蛛池提升网站排名,是SEO从