微服务,【容器亚健康状态】问题,研究和解决

—【前言】—

我问:”程序有『亚健康状态』吗?”

一个正常的人,应该这样回答:”什么?程序,亚健康。。。?你神经病吧?我只听说过人,有亚健康状态。”

实际上,’程序’是有『亚健康状态』的,这和人有『湿气』道理一样。

『亚健康状态』是指,程序处于【正常】和【非正常】之间,老司机都知道,

最明显的表现就是:程序表面输入/输出正常,但卡顿,或后台在疯狂报错。

细探原因,实际上是千奇百怪的。这里不做展开。

既然程序有亚健康状态,那么容器内运行的程序,也应该有亚健康状态,也很合理。这就是标题说的『容器亚健康状态』问题。

https://www.cnblogs.com/cmt/p/14083631.html

上述『容器亚健康状态』问题,在博客园特例中,我总结如下:

最开始,后端数据库有问题了,导致页面pod报错。后端数据库修复后,页面表现有时很快,有时卡顿,估计某个pod有问题,没恢复过来。但由于pod很多,无法立马找出问题pod。猜测cpu100%,但是容器探活正常。或探活有些慢但能通过。

—【『容器亚健康状态』问题分析】—

老司机都知道,细探原因,实际上是千奇百怪的。

又因为部分容器正常,所以你必须收集所有容器的log。这些『亚健康状态容器』,也是能通过容器探活的,有时候我们并不具备详细探究的条件。这就好像医生知道从海鲜市场里出来的很多病人肺有问题了,用常规的药后也治不好。而你急着解决,手头上还没有【基因测序】这些个超级手段。

—【k8s的解法】—

假设100个容器里头,有1个『亚健康状态容器』,这个容器还是『无症状』或『症状不明显,能过探活』这种,这个问题是不容易解决的。

K8s 1.15版本,提供了滚动重启的命令。但我赶脚相对而言不轻量。

需要说明的是:

定时重启能缓解和部分解决这种问题,不能解决所有问题。要想解决所有问题,还得靠压测,和看日志,还有调试。

—【k4t的解法】—

K4t是我业余时间开发的,容器编排系统。

博客园的问题,提醒了我。我看了k8s的解决方案后,琢磨出了这个问题更好的方案:

即『杀死容器老奶奶』功能,或者叫『最老容器_定时重启间隔』参数。

这个值默认是7天,最小是1分钟。值绑定在应用上。

这个参数假设生存时间越长的容器副本,越会出问题。而新run的容器副本,假设没问题。

也就是说超过这个阈值(1分钟—7天),就会优雅的重启1个容器副本。

优雅的重启1个容器副本是指:
1从dns,和反向代理中摘除这个容器入口。那么就没有新流量进来了。
2超过n分钟后。这个时间可以自定义。目的是等待老http session,结束。
3再杀死容器,重启。

若遇到上述『容器亚健康』问题。则调小这个值即可。等过一段时间,容器都优雅重启了后,再调整回来即可。当然了,我的k4t是有办法查看,每个容器的启动时间的。

注意:

l 定时重启并不能解决所有问题。要想解决所有问题,还得靠压测,和看日志,还有调试。

l 此参数不能理解成『单个容器最大生存时间』。设你的应用有10个容器副本,第一个容器会在7天后重启,第10个容器在70天才会重启。

这个参数,看起来跟滚动重启类似吗?

K8s有这功能吗???

—【附录a:k4t简介】—

k4t即:《kaiiit生产级别的容器编排系统》

https://gitee.com/chuanjiao10/k4t

预计2021年6月发布alphi1版

中文名:《海贼帝·优秀的怕被沽沟暗杀·黑毛腿》

中文别名:《ps1倚天剑》

微服务,【容器亚健康状态】问题,研究和解决

这是一套基于《卡死你3000》打造的,全功能,容器集群的自动化部署、扩容以及运维的平台。(国产k8s)。它采用开放式架构,具有网络简单稳定,使用简单,脚本操控灵活的特点。

powershell传教士 业余时间 作品

群名称:k4t官方1群 群 号:722528388

—【附录b:k4t 组件介绍】—

问:完美版的k4t项目,由哪几部分组件构成?

答:

1 master端。 正在开发中,预计2021年6月前发布alphi1版。

2 node端。已经开发完成,并部分开源免费成为雏形版。

3 动态负载均衡api网关。(外部)

提供反向代理,和负载均衡功能。用于给一组容器应用,形成统一的ip。

目前基于我编写的envoy后端增删脚本。

https://gitee.com/chuanjiao10/envoy_powershell

你也可diy,改成自己喜欢的。

4 动态dns。(外部)

是非必要组件。K4t集群,可以只用负载均衡器api-getway。

用于给一组容器应用,形成统一的服务名字。

目前基于未激活的无图win2019。当然有图版win2019也行。你也可diy,改成自己喜欢的。例如:dnsmasq

—【后记】—

“容器当然有亚健康状态了,容器996也有可能会疲劳呀!这和人有’湿气’道理是一样的”我喃喃道。

K4t的这个参数,让容器告别996,也有轮流上下班时间了。哈哈,这参数堪称『大力丸』。有病能治病(比如内存泄漏),无病能防病(比如内存泄漏)。实乃居家旅行、以及运维编排、必备之好手段也!

实际上,【大力丸】存在的意义是:pod常规http探活手段不完美。写脚本并绑定pod探测稍嫌麻烦,这么做的少。

谢谢观看。

Original: https://www.cnblogs.com/piapia/p/14406823.html
Author: PowerShell免费软件
Title: 微服务,【容器亚健康状态】问题,研究和解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610797/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • CentOS7安装MYSQL8.X详细教程

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 1-首先查看系统是否存在mysql,无则不返回 rpm -qa|grep mysql 2-安装wget yum -y insta…

    Linux 2023年5月27日
    0112
  • git 那些事儿 —— 基于 Learn Git Branching

    推荐一个 git 图形化教学网站:Learn Git Branching,这个网站有一个沙盒可以直接在上面模拟 git 的各种操作,操作效果使用图形的方式展示,非常直观。本文可以看…

    Linux 2023年5月27日
    0125
  • iptables快速入门

    iptables简介 在生产实践过程中,为了保证生产安全,通常需要进行数据加密,例如通过网络层面上将应用隔离成内网和公网应用,内网再分成生产、测试、开发、DMZ等区域,然后进行不同…

    Linux 2023年6月6日
    093
  • Java常见知识点总结

    1 重载 && 重写 重载: 发生在同一个类中, 方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。 重写: 发生在父…

    Linux 2023年6月7日
    094
  • IDEA 构建 mybatis 源码

    mybatis 源码构建 mybatis-source 下载 mybatis源码下载 mybatis-parent 版本信息 mybatis-parent 下载 mybatis-p…

    Linux 2023年6月13日
    090
  • IDEA 无法显示 Run Dashboard 的解决方法

    前言 最近开始接触微服务的项目,项目很多有时候本地调测需要启动多个项目,看到同事都是使用dashboard管理项目,服务和端口排列的整整齐齐。但是我dashboard里面啥都没有,…

    Linux 2023年6月14日
    0108
  • oracle 删除表空间与用户

    以system用户登录,查找需要删除的用户: –查找用户 select * from dba_users; –查找工作空间的路径select * from …

    Linux 2023年6月8日
    064
  • 用全域安全防范美国NSA对西工大的网络攻击

    上周写的一篇文章《全域安全:一种运行时安全管理模型》,向大家介绍了全域安全管理模型,它是如何在Laxcus分布式操作系统的分布环境下,解决了分布式应用业务的全流程安全管理问题。其中…

    Linux 2023年6月6日
    0100
  • 文件权限问题导致plink报错 Failed to open 21JAN.log. Try changing the –out parameter.

    晚上兴起,想起一直以来没有解决的问题,于是复制一个目录,开始跑数据,但是跑到第一步就采坑 plink –chr-set 95 –file merge &#8…

    Linux 2023年6月14日
    0126
  • UE4游戏上架Steam全流程

    本人使用的是UE4.27.2, Windows 11操作系统。 首先,在ue4项目的插件设置中,勾选Online Subsystem 和 Online Subsystem Stea…

    Linux 2023年6月6日
    095
  • 一篇文章带你全面读懂Android Backup

    前言 手机等智能设备是现代生活中的重要角色,我们会在这些智能设备上做登录账户,设置偏好,拍摄照片,保存联系人等日常操作。这些数据耗费了我们很多时间和精力,对我们而言极为重要。 如果…

    Linux 2023年6月13日
    0133
  • Tomcat启动乱码

    1、找到安装的tomcat的conf目录2、找到logging.properties配置文件3、在文件中找到 java.util.logging.ConsoleHandler.en…

    Linux 2023年6月7日
    096
  • 数据结构 单链表

    cpp;gutter:true;</p> <h1>include</h1> <h1>define null 0;</h1&gt…

    Linux 2023年6月13日
    081
  • Redis集群-主从架构

    1.为什么需要集群? 互联网思维一向讲究的是三高,即高并发,高可用,高性能。高并发:系统能够同时并行处理的请求,主要度量指标有响应延时,吞吐量,每秒查询处理,每秒事务处理,并发用户…

    Linux 2023年6月7日
    0106
  • centos 更换yum 源

    1.如果系统有wget : 备份yum repo cd /etc/yum.repos.d for i in $(ls);do mv ${i}{,.bak};done for i i…

    Linux 2023年6月13日
    082
  • 快速掌握Linux三剑客命令使用

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球