k8s中sidecar死循环

序言

    怎么发现我的同事们很上进呢,估计做了下贱的事儿吧。

    伤不到我,不代表不疼!

sidecar产生的问题

    1 背景

    在k8s的环境中,pod的使用越来越多了,也就产生了sidecar容器,在现在的环境中,一个pod可以带差不多快10个sidecar容器了,各种各样的场景,例如监控的sidecar容器,例如日志的sidecar容器。

    sidecar容器最好用的地方在于只要在pod中加了一个annotations就可以无缝启动一个容器了,而且当pod删除之后,如果sidecar容器的配置发生了变化,那么就会自动生效了。

    日志sidecar容器,主要用来将pod的日志进行收集,发送到kafka中,从而保存日志,在pod中写了一个annotions进行保存,而sidecar的配置的相关的容器,用一个helm进行安装,一个k8s中一个集群就好了。

    2 sidecar容器引发的问题

    在某一个月黑风高夜,要进行kafka的topic变更,从而就理所当然的修改了sidecar容器的配置,将topic修改,然后进行升级,升级完成之后,重启了一个测试pod,发现配置未发生变化。

    查看sidecar的cm配置,发现没有变化,手动进行修改cm,然后再重启容器,发现生效了,但是再次更新helm,依旧变成了老的值。

    没有想出特别好的办法,从而将sidecar 配置的2的pod同时进行了删除,然后发现pod居然不能重新启动了,emmm,有点慌。

    赶紧将业务的测试pod删除一个,看是否能启动,发现pod能正常删除,但是启动不了,生产环境有点压力,这个时候只要有pod挂掉或者是宿主机挂机,那么所有的业务pod将不能启动,必然会造成故障。

    掐指一算,没办法了,先喊人一起帮忙查,pod都没启动,看不到任何错误信息,只能直接查看namespace的事件了。

kubectl get events -n fuck

    发现有事件,事件显示pod无法启动,是因为sidecar的svc端点无法找到,这不是很正常吗,因为服务的pod都被删除了,那么svc肯定用不了,从而形成了一个死循环。

    pod启动需要经过验证,也就是要调用svc,而svc的两个pod被删除了,那么就卡死在这里,都不能启动。

webhooks.failurePolicyfailurePolicy 定义了如何处理来自准入端点的无法识别的错误 - 允许的值是 Ignore 或 Fail。默认为 Fail

   默默地修改了webhook的失败策略,从默认值修改为Ignore,然后发现控制的pod启动了,发现业务的pod也启动了,危机解决,默默地送了一口气,说了一句fuck,居然还会有循环依赖的情况发生。

    我知道你很急,但是请先别急,找找思路,实在不行,就只能摇人了。

    故障都是天注定的,所以急也没用,没用也急。

validatingwebhookconfiguration 全局资源,用来进行验证使用。

    3 日志sidecar存在的问题

    在使用日志sidecar的时候,碰到几个问题,注意避雷。

    使用sidecar的时候,如果修改配置,必须要重启原来的pod,如果重启pod影响很大,可能要使用其他的方案,因为在使用sidecar的时候,如果单独启动sidecar容器,配置是不能生效的;如果对于发布部署类的,这种比较好用,如果是中间件那种万年不启动的,有点难度,所以选择sidecar的时候,最好的是pod能自动对修改的配置生效。

    在使用sidecar的时候,注意分配好对应的request和limit,如果一个宿主机上的机器过多,不要把request和limit设置成一样,设置的很大,因为sidecar占用的资源也很大,最好是request很少,limit稍微大一点,而且这个配置都是固定的,不能说有的pod是一个值,其他的pod又是一个值。

    在使用日志配置的时候,有一个是多行的配置,默认值是开启的,这个容易产生一个bug,在有的云上面,如果日志为空,那么会直接将这个宿主机的磁盘直接吃满,不过没仔细查,当时也就草草的把这个配置设置为false就解决了。

    sidecar的配置是全局的时候,你会发送最新的配置更新了,但是在其他的namespace里面的配置没更新,直到你重启了一个pod,才会发现配置更新,这点也需要注意,经常会在重启pod之前去检查配置,然后发现没更新,在那折腾半天。

    在使用helm的时候,如果发现upgrade的时候,set的值未生效,检查一下template,没准就会发现有些傻叉把对应的配置要么就是不能配置,要么就是配置的位置不对,从而导致不能生效。

风言风语

    sidecar用起来的确很爽,因为使用起来很简单,只要加一个annotation,但是要注意使用的时候,可能会阻塞pod的启动,如果你使用了istio,也可能存在这种问题。

    两个pod同时删除,就导致了webhook不能使用,这个也是个风险点,如果2个pod同时在一个机器上,而这台机器宕机了;如果这两个pod所在的两个机器同时宕机了,也不能使用了,而且这个时候,如果业务容器重启了,那还启不起来,如果告警做的不好,那估计等整个集群挂了,你才能发现这个问题,告警做的是否充足,也是个考验。

     上进和下贱有区别吗?当然没分别了,凡是有上进心的人一定会做出下贱的事儿,这下贱的人也一定会有上进心的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day53 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* T…

C盘清理技巧分享

一、系统级深度清理 1. 存储感知自动化 路径:设置 → 系统 → 存储 → 开启「存储感知」配置策略: 临时文件:每 1-2 周自动清理回收站:超过 30 天自动清空应用缓存:按需求设置清理频率进阶操作:在「高级存储设置」中关闭「传递优化」(减少更新缓存占用)2. 磁盘清理工具…

面试题--随机(一)

MySQL事务中的ACID特性? A 原子性 事务是一组SQL语句,不可分割 C 一致性 事务中的SQL语句要么同时执行,即全部执行成功,要么全部不执行,即执行失败 I 隔离性 MySQL中的各个事务通过不同的事务隔离等级,产生…

Spring Boot资源耗尽问题排查与优化

Spring Boot服务运行一段时间后新请求无法处理的问题。服务没有挂掉,也没有异常日志。思考可能是一些资源耗尽或阻塞的问题。 思考分析 首先,资源耗尽可能涉及线程池、数据库连接、内存、文件句柄或网络连接等。常见的如线程池配置不当,导致…

Map和Set相关练习

目录 1、只出现一次的数字 2、宝石与石头 3、坏键盘打字 4、复制带随机指针的链表 5、大量数据去重 6、大量数据重复次数 7、前K个高频单词 1、只出现一次的数字 oj:136. 只出现一次的数字 - 力扣(LeetCode) 思路: 1. 使用…

day45——非递减数列(LeetCode-665)

题目描述 给你一个长度为 n 的整数数组 nums &#xff0c;请你判断在 最多 改变 1 个元素的情况下&#xff0c;该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的&#xff1a; 对于数组中任意的 i (0 < i < n-2)&#xff0c;总满足 nums[i] < nums[i …

OOM 未触发 JVM 崩溃的可能原因

1. OOM 未触发 JVM 崩溃的可能原因‌ (1) 未配置 JVM 参数强制崩溃‌ 关键参数缺失‌&#xff1a; 若未添加 -XX:CrashOnOutOfMemoryError&#xff0c;JVM 在 OOM 时可能仅抛出异常并正常退出&#xff0c;而非崩溃&#xff0c;因此不会生成 hs_err_pid.log。 # 正确配置示例&…

Axios 介绍及使用指南

本文将基于 Axios 原理&#xff0c;安装及封装方面展开描述&#xff0c;话不多说&#xff0c;现在发车&#xff01; 一、原理 Axios 中文文档&#xff1a;起步 | Axios中文文档 | Axios中文网 赛前科普&#xff1a; 下文将涉及到三个关键词&#xff1a;Axios&#xff0c;Ajax…

C#插件与可扩展性

外接程序为主机应用程序提供了扩展功能或服务。.net framework提供了一个编程模型,开发人员可以使用该模型来开发加载项并在其主机应用程序中激活它们。该模型通过在主机和外接程序之间构建通信管道来实现此目的。该模型是使用: System.AddIn, System.AddIn.Hosting, System.…

Melos 发布pub.dev

确保登录 置登录状态 按照提示操作&#xff0c;先运行&#xff1a; bash dart pub logout 这会清除当前的&#xff08;损坏的&#xff09;登录信息。 然后再重新登录&#xff1a; bash dart pub login 这一次它应该会在浏览器中打开 Google 登录页面&#xff0c;完成登…

4.黑马学习笔记-SpringMVC(P43-P47)

1.SpringMVC简介 SpringMVC技术&#xff08;更少的代码&#xff0c;简便&#xff09;与servlet技术功能相同&#xff0c;属于web层开发技术。 SpringMVC是一种基于java实现MVC模型的轻量级web框架。 轻量级指的是&#xff08;内存占用比较低&#xff0c;运行效率高&#xff09;…

【特殊场景应对1】视觉设计:信息密度与美学的博弈——让简历在HR视网膜上蹦迪的科学指南

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…

CentOS 7 linux系统从无到有部署项目

环境部署操作手册 一、Maven安装与配置 1. 下载与解压 下载地址&#xff1a;https://maven.apache.org/download.cgi?spm5238cd80.38b417da.0.0.d54c32cbnOpQh2&filedownload.cgi上传并解压解压命令&#xff1a; tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /usr/loc…

Odoo:免费开源的轧制品行业管理软件

Odoo免费开源的轧制品行业管理软件能够帮助建材、电线电缆、金属、造纸包装以及纺织品行业提高韧性和盈利能力&#xff0c;构筑美好未来。 文 &#xff5c; 开源智造&#xff08;OSCG&#xff09;Odoo金牌服务 提高供应链韧性&#xff0c;赋能可持续发展 如今&#xff0c;金属…

51单片机实验二:数码管静态显示

目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.单个数码管显示 2.六个数码管依次从0~F变换显示 3.proteus仿真 一、实验环境与实验器材 环境&#xff1a;Keli&#xff0c;STC-ISP烧写软件,Proteus. 器材&#xff1a;TX-1C单片机&#xff08;STC89C52RC…

学术AI工具推荐

一、基础信息对比 维度知网研学AI&#xff08;研学智得AI&#xff09;秘塔AIWOS AI开发公司同方知网&#xff08;CNKI&#xff09;上海秘塔网络科技Clarivate Analytics是否接入DeepSeek✅ 深度集成&#xff08;全功能接入DeepSeek-R1推理服务&#xff09;✅ 通过API接入DeepS…

冰川流域提取分析——ArcGIS pro

一、河网提取和流域提取视频详细GIS小熊 || 6分钟学会水文分析—河网提取&#xff08;以宜宾市为例&#xff09;_哔哩哔哩_bilibili 首先你要生成研究区域DEM&#xff0c;然后依次是填洼→流向→流量→栅格计算器→河网分级→栅格河网矢量化&#xff08;得到河网.shp&#xff…

【物联网-RS-485】

物联网-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点 ■ RS-485 连接方式 ■ RS-485 半双工通讯 一线定义为A 一线定义为B RS-485传输方式&#xff1a;半双工通信、&#xff08;逻辑1&#xff1a;2V ~ 6V 逻辑0&#xff1a;-6V ~ -2V&#xff09;这里的电平…

解析检验平板:设备还是非设备?深入了解其功能与应用(北重铸铁平台厂家)

检验平板通常被归类为设备&#xff0c;因为它们具有特定的功能&#xff0c;并且被用于测试和评估其他设备或产品的性能和质量。检验平板通常具有平坦的表面&#xff0c;用于放置要进行测试或检验的物品。它们可以用于测量尺寸、形状、平整度、表面光洁度等参数。 检验平板的应…

6.数据手册解读—运算放大器(二)

目录 6、细节描述 6.1预览 6.2功能框图 6.3 特征描述 6.3.1输入保护 6.3.1 EMI抑制 6.3.3 温度保护 6.3.4 容性负载和稳定性 6.3.5 共模电压范围 6.3.6反相保护 6.3.7 电气过载 6.3.8 过载恢复 6.3.9 典型规格与分布 6.3.9 散热焊盘的封装 6.3.11 Shutdown 6.4…