重启ks容器自动化

这篇具有很好参考价值的文章主要介绍了重启ks容器自动化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景:

容器部署的selenium,如果出现以下场景:

  1. selenium脚本执行完没调用driver.quit()
  2. selenium执行过程中报错终止了代码
  3. 手动ctr+c终止中断运行

上面的场景都会导致容器里面的driver进程没有被释放,下次再跑selenium脚本,就会报错:502超时,链接不到remote driver。

解决方法,每次跑脚本前,手动重启一下容器,但是,如果在集成工具去执行脚本,不可能每次跑脚本前都去手动重启容器。

所以,需要通过代码自动化实现这一手动操作。

二、实现方案:

  1. 把ks的登录密码存储到redis,方便修改,因为经常几个月就需要改一次密码
  2. 在ks控制台查看login接口是返回302的,没有response.body,而是把cookie返回给response.headers的Set-Cookie。
  3. 在ks控制台查看重启容器的接口,需要传哪些信息。
import requests
import json
from helpers._redis import operate_redis
from datetime import datetime, timezone
import time
opr = operate_redis()
 
def redeploy_docker():
    # ks登录跳转到302后,获取set-cookie
    url = "http://ks.orgapp.com/login"
    username = opr.find_redis_str("ks:username")
    password = opr.find_redis_str("ks:password")
    payload = json.dumps({"username":username,"encrypt": password})
    headers = {
        'content-type': "application/json"
        }
    # allow_redirects=False 参数表示不允许自动重定向,便会返回302,否则返回200,获取不到 set-cookie
    # password = "***=@^fSn`ugM_oSgIxIW\\=G]",反斜杠被转义 \\\\,需要处理
    response = requests.request("POST", url, headers=headers, data=payload.replace("\\\\","\\"), allow_redirects=False)
    cookie = response.headers["Set-Cookie"]
 
    # 重新部署docker-selenium容器
    url = "http://ks.orgapp.com/apis/clusters/dev-iot4-oam/apps/v1/namespaces/devops/deployments/docker-selenium"
    headers = {
        'cookie': cookie,
        # 这里需要看前端的传值,有些不一样
        'content-type': "application/merge-patch+json"
        }
    # 获取当前时间
    current_time = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%fZ')
    payload = {"spec":{"template":{"metadata":{"annotations":{"kubesphere.io/restartedAt": str(current_time)}}}}}
    response = requests.request("PATCH", url, json=payload, headers=headers)
    # 等待容器重启
    time.sleep(10)
 
if __name__ == "__main__":
    redeploy_docker()

三、运行顺序

试过在scrapy框架里面调用 重启ks容器自动化的脚本,可还是经常出现连接remote-selenium超时的情况,猜测还是因为重启ks容器自动化的顺序不能在scrapy创建driver对象之前。

所以,简单粗暴些,在Jenkins的shell命令行里面,先直接执行ks的文件,再运行scrapy:

重启ks容器自动化,# DeadLinkHunter,自动化,运维文章来源地址https://www.toymoban.com/news/detail-819765.html

到了这里,关于重启ks容器自动化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化运维CICD

    目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 持续集成(Continuous Integration,CI)和持续发布(Continuous Delivery,CD,又称持续交付)是经常放在一起提及的两

    2024年02月05日
    浏览(46)
  • DevOps?自动化运维!

    by: 雪月三十 DevOps流程图 DevOps是Dev和Ops的结合 Dev(developer开发) Ops(operation运维) 在企业中dev和ops是有一种天然的矛盾,dev要求的是快速迭代,给公司挖掘出商业的价值,而ops则是强调的稳定,不让你如此快的开发,以稳定为主,不希望动代码(if no problem, don’t touch it),所

    2024年02月12日
    浏览(57)
  • Ansible自动化运维

    目录 前言 一、概述 常见的开源自动化运维工具比较 二、ansible环境搭建 三、ansible模块 (一)、hostname模块 (二)、file模块 (三)、copy模块 (四)、fetch模块 (五)、user模块 (六)、group模块 (七)、cron模块 (八)、yum_repository模块 (九)、yum模块 (十)、service模块

    2024年02月09日
    浏览(46)
  • 运维自动化bingo前端

    项目目录结构介绍 项目创建完成之后,我们会看到bingo_web项目其实是一个文件夹,我们进入到文件夹内部就会发现一些目录和文件,我们简单回顾一下里面的部分核心目录与文件。 2.3、项目执行流程图 要在Vue.js项目中指定域名和端口,你通常需要配置Vue CLI提供的 devServer ,

    2024年02月20日
    浏览(51)
  • 【自动化运维】playbook剧本

    (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates:模板 (4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作 (5)Roles:角色 运行playbook Ansible提供了很多种循环结构,一般都命名为wi

    2024年02月15日
    浏览(34)
  • 自动化运维工具——Ansible

    Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个

    2024年02月14日
    浏览(47)
  • 自动化运维工具—Ansible

    Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。 市面上其他自动化工具:pupet(ruby语言) saltstack(python) chef(C/S模式)等 Ansible能批量配

    2024年02月10日
    浏览(43)
  • Ansible 自动化运维工具

    目录 一: Ansible 简介   Ansible与其他自动化运维工具对比  二: ansible 环境安装部署   三:ansible 命令行模块 1、command 模块 2、 shell 模块 3、 cron 模块 4、 user 模块 5、 group 模块  6、copy 模块 7、 file 模块  8、hostname 模块 9、ping 模块 10、 yum 模块 11、 service/systemd 模块

    2024年02月15日
    浏览(42)
  • 自动化运维ansible(role)

    一、role的介绍 1、Roles称为角色,本质上是为简化playbook配置文件而产生的一种特殊的方法。 2、简单来说,roles就是将原本在一个yaml中的文件进行规则化分散,封装到不同的目录下,从而简化playbook的yaml配置文件大小。从其实现方法上来看,类似于软件开发上的代码封装。

    2024年02月07日
    浏览(33)
  • Ansible自动化运维工具

    Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。 ansible 自动化运维工具(机器管理工具) 可以实现批量管理多台(成百上千)主机,应用级

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包