论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
大数据
›
数据仓库与分析
›
k8s中sidecar死循环
k8s中sidecar死循环
嚴華
论坛元老
|
6 天前
|
显示全部楼层
|
阅读模式
楼主
主题
1724
|
帖子
1724
|
积分
5172
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
序言
怎么发现我的同事们很上进呢,估计做了下贱的事儿吧。
伤不到我,不代表不疼!
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所在的两个呆板同时宕机了,也不能使用了,而且这个时候,如果业务容器重启了,那还启不起来,如果告警做的欠好,那估计等整个集群挂了,你才能发现这个题目,告警做的是否富足,也是个考验。
上进和下贱有区别吗?当然没分别了,凡是有上进心的人一定会做出下贱的事儿,这下贱的人也一定会有上进心的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
嚴華
论坛元老
这个人很懒什么都没写!
楼主热帖
iOS全埋点解决方案-用户标识 ...
用uniapp实现微信小程序的电子签名效果 ...
【万能皆可链接】C++中的动态链接库编 ...
【云服务器】推荐阿贝云服务器,目前永 ...
【Selenium+Pytest+allure报告生成自动 ...
MySQL实战45讲 20
【Javaweb】Web工作原理、两种网页、两 ...
Spring Boot 配置文件
Qt-FFmpeg开发-打开本地摄像头(6) ...
微服务介绍
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
Mysql
云原生
SQL-Server
图数据库
运维.售后
快速回复
返回顶部
返回列表