Sunday, January 8 2023

K8S的探针和优雅关机问题

最近折腾起K8S来,顺便整理下遇到的问题。

首先是探针问题,早期版本只有存活探针(liveness probe)和就绪探针(readiness probe),这两个探针没有依赖关系,是同时开始探测的。我总想不明白,程序存活检测都没通过,为啥要浪费时间做就绪检查?等到新版本支持第三个探针:启动探针(startup probe),总算是没毛病了。 为什么要增加启动探针?我想到业务上有些程序启动确实太慢(比如几分钟),以前需要在存活探针加很长的延迟时间(delay),这个延迟其实不好设置,程序随着迭代可能启动更慢,导致需要在fail次数上容忍更多,fail次数更多导致程序运行时被重启的时间被迫也拉长了,这对服务故障恢复不利;又或者程序启动变快了,却又因为延迟是固定的,滚动更新时又白白浪费时间拖慢发布流程。 现在好了,设置启动探针后,只有等启动探针通过后,存活、就绪探针才会开始干活。这就解决了上面提的两个问题,只要启动成功就可以尽快开始服务,不需要像之前那样必须等一个写死的延迟时间;同时存活探针fail次数也可以设置更合理,以便在程序故障时尽快被重启。

另一个问题就是滚动更新时的优雅关机问题,实际情况就是程序开始关闭了,还有业务流量打到这个容器里,导致异常响应。这也很奇怪,K8S本身是知道关机事件的,应该可以提前切走流量才对。网上找到相关文章学习了下,原来是关闭容器开始,切流量和发送关闭信号给容器是同步进行的,但是发关闭信号非常快,而切流量过程本身链路较长(更新etcd,通知ingress,再变更iptables规则等等)实际是异步执行,这两件事之间有时间差,所以程序关闭了,流量还要延迟一会才会切走,导致用户遇到500。因此优雅关机要稳一点还需要在preStop里sleep一会,比如sleep 5,一般流量就切好了。关闭信号会在preStop执行完后发出。 我仔细看了下应用设置,发现preStop里就写了一句stop应用,难怪优雅不起来,流量还没切掉,就主动stop了,增加sleep后问题解决。

顺便又思考了下,为啥会在preStop里主动stop应用?明明K8S会发送关闭信号的啊,测试了下,发现应用没有关闭过程,只等30s超时后被SIGKILL。看来是关闭信号被忽略导致,这里就涉及到容器的init(1号)进程是否会传递信号了,回看应用设置,启动命令是sh,破案了,它不是一个合格的init进程,怪不得需要在preStop里写一个主动stop呢。如果要少写这个stop,可能需要把init程序换一个合适的轻量级init程序,比如tini

ref:

https://freecontent.manning.com/handling-client-requests-properly-with-kubernetes/

https://medium.com/@meng.yan/what-happens-when-deleting-a-pod-d1219c7e1b53

Monday, May 2 2022

冲牙器杀手

很奇怪,不久前还用了一次,它就莫名其妙的坏了。 装好水,按开关没反应,灯是亮的,马达悄无声息。 想来想去,也没有不爱惜啊,这也罢工的太突然了。 中午吃的太渣了,很想冲一下,这下可好。 也许是没电了吧,放到充电座上,嗯?充电指示灯不亮了。 有些意外,以前没电的话会闪烁的,这回完全不亮,算了,充一晚上再说。 早上起来第一件事就是打开冲牙器,很遗憾,没用。 看来是真的坏了。 翻出说明书,只保修一年,早过了。 可牙缝里的渣滓还在提醒我,要冲啊,火速下单。 哎,这疫情期间等个快递是真心焦。 好在物流没有中断,拿到后畅快一冲,哈哈哈。。 但,没用几次,新家伙也罢工了,一样的是马达悄无声息。  […]

Continue reading

Wednesday, April 13 2022

遍插茱萸少一人

因为疫情过年不能回家,一个小学同学联系到我,发过来一张“我们”的小学毕业照。 嗯,非常诡异,里面竟然没有我,可能拍照那天我请假了吧。 当我们一一回忆起相片中每个人的名字时,不禁悲伤的发现有人已经不在了。 《寻梦环游记》里说只有世上没人记得你,你才会真正消失不见。 不知是否来得及,我要记一记。  […]

Continue reading

Wednesday, December 23 2020

终于还是戴上眼镜了

撑不下去了。 最近眼睛疲劳的好快,开始以为是没睡好,或者用眼过度,直到我戴上人生第一副眼镜,过份清晰了啊!一整天眼睛都不累! 其实以前我说看远处的字会重影,就有人告诉我是散光,但我以为散光并非近视,没有考虑去配眼镜,谁知道这散光都是近视给害的越来越深。 为啥不想去配眼镜,除了麻烦,还有一个传统迷思,觉得戴上眼镜后,度数会越来越深,身边这种例子很多。早在刚上高中的时候,宿舍同学借了一副大概100度的眼镜给我也试了下,看远处确实更清晰,他就下结论说我近视了,该配眼镜,我不屑一顾,后来同学他配了,然后涨到600度。现在知道这迷思是错误的,会不会加深在于用眼习惯是否纠正了。  […]

Continue reading

Saturday, March 21 2020

KVM云主机高负载之二

一个上线不久,没什么访问量的网站,突然收到用户反馈说页面经常打不开,或者能打开,但是要等十几秒,卡顿非常严重,几乎无法正常使用了,自己人测试下也是相同的表现,看来问题在服务端,排除了网络影响后,就是后端有什么问题了,奇怪的是,并没有任何指标报警啊,服务器一切正常,研发表示也没有啥特别改动,程序日志也很正常。  […]

Continue reading

Sunday, March 15 2020

捡到一次PHP性能提升的机会

PHP的程序并发稍微高一点就慢的不行,sys 消耗出奇的高,除了太慢被切换,平时 strace 总能发现php进程疯狂的stat文件,之前查的不是性能问题,就没有深究。 如果正在使用 open_basedir ,那么好消息,一次性能提升的机会来了;最近考虑升级到7.4,性能可能会好点,结果在更新配置文件的时候突然发现 open_basedir 有一行提示:Note: disables the realpath cache, 天!难怪stat这么多,搜索一通,找到 Bug #52312 ,没想到的是,这个禁用从5.2时代就开始了,但是这个禁用的提示到7.2才写出来,坑人! 禁用的原因是安全问题  […]

Continue reading

Monday, January 20 2020

KVM云主机高负载之一

Continue reading

Thursday, December 26 2019

无题圣诞

对于中国人来说新年才是节日,圣诞也不放假,有个锤子用? 我大概是高中时开始感受圣诞,因为学校旁边有一个小教堂。当时是住校生,没人管的那种,经常晚上跑出去玩,记得有天照例去游戏厅,老远就看到教堂那挤满了人,那大概就是圣诞了,人多到路口几乎堵上,真不知道这帮人寒冬里挤在门口等什么?听说是12点会开门,进去能拿礼物?  […]

Continue reading

Saturday, December 7 2019

放弃 btrfs zfs

先说 zfs,Ubuntu 16.04 (4.4内核)开始集成,几乎每个月都会遇到高IO挂起问题,升级到 18.04 (4.15内核)后解决,但是要命的问题:不支持docker。 再说 btrfs,磁盘限额功能有缺陷,必须关闭quota,否则就是定时炸弹一枚, 最最糟糕的是IO性能随时间急剧下降(跑docker,也就几千个subvolume),可能是CoW导致的碎片太严重?滚一滚日志都能让负载上天。 网上查下,说最好定期跑跑balance,但是跑的太慢,对IO影响也很厉害,遂 ctrl+c 中断之,结果文件系统只读了。。 [7296807.472310] BTRFS: error  […]

Continue reading

Friday, October 18 2019

苹果系统升级后证书不信任问题

同事升级苹果系统到最新的10.15导致内部系统证书提示无效,换火狐浏览器就没问题(还是火狐好!)。 查了半天,发现是苹果新系统对证书有效性校验的更严格了: iOS 13 和 macOS 10.15 中的可信证书应满足的要求 看到最后,就是新规定要求2019年7月1号以后签发的证书有效期不能超过825天(两年多一点),我们内部证书都好几年的,刚好签发日期在时间点之后,那么干脆重新签发证书,把签发时间提到6月份就好了。 PS, 这是苹果唯一值得称道的点,安全性。

Tuesday, October 8 2019

《我11》

wo11.jpg

得了,豆瓣也关张了,咱只能在自留地里玩了。 又看了一部三线建设相关电影,《我11》,完美复现我的童年啊,厂矿子弟可以看个情怀,别的就不推荐了。  […]

Continue reading

Sunday, October 6 2019

噢,1997快点儿到吧

想讨论一下香港,才发现自己其实对香港一无所知, 清晰的知道1997回归中国,说不定还是因艾敬的这首《我的1997》, 那时我才小学毕业,这首歌大街小巷都在放,唱的让人对香港有无限的遐想和希望。 除了鸦片战争、不平等条约、殖民地以外,就是武打警匪片、四大天王、美女俊男,香港到底是一个什么样的地方,又到底经历过什么,让它变成现在的模样? 豆瓣上看到友邻推荐《香港简史》,是该补一补课了,国内没有出版,所幸可以直接在谷歌图书买到电子版, 是繁体字,看着略微不习惯,基本上没有障碍,趁着假期终于看完了。 书里可以找到曾经听说过的各种关于香港的破碎信息如何拼合,还有你完全陌生的历史进程,  […]

Continue reading

Wednesday, October 2 2019

cacti 64bit counter need snmp v2

cacti里绘图的网卡带宽超过100M后,需要使用64位计数器,否则图都是错误的, 换64位后,snmp版本至少使用v2,否则取不到数据。害我查半天。

Saturday, September 28 2019

gtk程序终于可以显示jpg了

8月11号不知道删了什么或是更新了什么,似乎是卸载了jasper后发生的,所有gtk程序都识别不了jpg图片了,只有png图片可以正常显示,这下系统多处图案无法显示,连壁纸都没了,最大影响还是看图软件,gqview没法用,只好临时装gwenview来应急,但是看图太卡。 查了很久都没有结果,jpg相关软件重装更新都无效。。 碰巧今天更新adwaita-icon-theme失败,gtk-encode-symbolic-svg执行报错: Can't load file: 无法识别的图像文件格式  […]

Continue reading

Sunday, June 23 2019

解决 TOSHIBA 移动硬盘 Linux下使用异常

到手一块 TOSHIBA DTB305 500G 移动硬盘,计划用来备份电脑的数据,先加密 cryptsetup -s 512 luksFormat /dev/sdb 居然失败,磁盘一直报错: May 23 23:38:20 mom kernel: scsi 6:0:0:0: Direct-Access TOSHIBA External USB 3.0 0114 PQ: 0 ANSI: 6 May 23 23:38:20 mom kernel: sd 6:0:0:0: [sdb] Spinning up disk... May 23 23:38:21 mom kernel: .ready  […]

Continue reading

Sunday, June 16 2019

入手最佳便携电脑 Chromebook

因为使用频率其实不高,直接某宝买二手,三星 Chromebook Plus (ARM版)1650块。 作为一个外出需要携带电脑的人来说,谷歌本的优势实在太大了: 轻便,仅1kg,而且充电口是Type-C,可以和手机共用充电器 便宜,出门在外随便用,丢了也不心疼 支持安卓应用,几乎任意VPN都可以用了 续航长,目测5小时没问题 支持LXD,可以跑原生Linux程序 从引导到磁盘全都有校验和加密,丢失设备不心慌 嗯,性能不是我考虑的,出门在外能看网页,能SSH,还可以看电影,足矣。  […]

Continue reading

Monday, March 25 2019

什么值得买?冲牙器啊

我牙缝小,牙签没用,牙线用过太麻烦,牙线棒也不行,很多位置不好用力,被丁香医生安利过多次后,趁促销下手买了。 绝对是买过最值的东西了! 用了会上瘾,舒服,简单,闭着眼睛都能冲干净的感觉真好,以前经常感觉到的口腔异味也几乎没有了,棒!

Sunday, March 3 2019

再一个十年,为旧电脑续命

爱机在十年前升级后一直坚挺,但是编译时的高温还是经常自动关机,换了CPU风扇也不见效,怀疑是电源老化,16年买了个全汉400W,似乎不太容易自动关机了。 但岁月不饶人机,年前竟然经常性休眠后唤不醒,插拔大法换电池依然无果,表现就是开机后各风扇一阵响,然后断电,排除法确定是主板归西了,也是挺不容易的,十年来基本上是不掉电状态,不用的时候S3休眠,突然想起有一次启动BIOS还报过一次checksum error,偶发一次没有在意……  […]

Continue reading

Sunday, October 4 2015

为MySQL管理员准备的PostgreSQL简易指南

原文在此: PostgreSQL for MySQL Administrators CDH默认的数据库是postgresql, 一时间还真的弄不明白, 看完以后差不多可以开搞了.

Saturday, October 3 2015

多网卡多IP策略路由配置

默认外网eth1, 默认路由不用改, 为了正确路由到内网eth0: 新增外网 eth2, NewIP 配置路由: ip route add default via NewGW dev eth2 src NewIP table 200 ip rule add from NewIP table 200 ip rule add fwmark 0x200 table 200 配置iptables mangle 表: ( eth0 : LAN ) -A PREROUTING -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j CONNMARK  […]

Continue reading

- page 1 of 52