分享一个腾讯云 Kubernetes 独有的神奇 bug 和 debug 过程

2020-04-03 00:12:29 +08:00
 MiaRunis
某小伙伴迫于腾讯投资不得不把服务器迁移至腾讯云,然后发现爬虫总是能绕过防火墙爬到内容。LB 上已经限制了仅 cdn 源能访问,甚至还加了 waf 层,也不能阻止爬虫。只得在程序上写了屏蔽。随后就开始遭受攻击。


疯狂 debug 找不到原因,正好我最近也在做 K8S 于是一起 debug 。腾讯云各种骚操作早有耳闻,(比如超售后急忙迁移硬盘删掉用户全部数据,比如客服不声不响升级用户 redis 版本导致宕机,比如 cfs 各种不稳定等的)。但是没想到他到处都是坑。


问题也不复杂,腾讯云的公网模型还停留在上世代,其他公有云早八辈子已经抽象化网络层,腾讯云的公网还是得直接接 cvm 的 node 。

node 启动时分配公网带宽,会默认给一个公网 ip 。而他 k8s 的 node 默认的安全组又对 0.0.0.0/0 放开了高位端口访问。cvm 创建时默认给一个公网 ip,直接导致 k8s 服务的实际端口向公网暴露。

解决也简单,立刻在有公网带宽的 node 机器上撤掉了公网 ip,检查确定那台机器上除了 nginx 外没有敏感服务(如 redis/mysql ),检查确认是否有被入侵,看起来没有。保存了日志,镜像(供日后分析)。然后尽快重写了 YAML 文件,确认创建 node 时不再分配公网 ip,销毁这个 node 重建。解决!



这件事,腾讯云独有的莫名构架和朋友不仔细阅读文档都要负一定责任,不过我认为问题根子还是在腾讯云这个公网绑定 cvm 上。其他各家公有云都已经完成了网络层的完全解耦(比如 aws 的 ENI ),LB 公网各项操作都可以只做在 LB 上。不知道为什么腾讯云还维持在机房主机时代网络拓扑。
2080 次点击
所在节点    分享发现
3 条回复
MiaRunis
2020-04-03 00:15:54 +08:00
对了,再补一个腾讯云关于 redis 的骚操作。

他服务不稳,于是 redis 部署时强制开启双实例主从,想要开单实例 redis 必须工单申请,非常麻烦。

双实例主从,读写分离也行,但主从却必须部署到同一个可用区。无法分区部署。用户如果想要追求高可用,只能是上 3 的整倍数个 redis cluster 模式,付至少 3 倍 /6 倍的钱。 于是他 redis 虽然看着比其他家便宜一截,但算上倍数费用比其他各家都要贵不少。
scukmh
2020-04-03 09:41:00 +08:00
羡慕腾讯投资。
beordle
2020-04-06 06:40:39 +08:00
不是对应团队的,但说两句。其实你说的抽象网络层已经有了,计费跟 IP 走。 据我了解呢新增的用户已经灰度了,所以你说的问题我们其实是知道的,没生效的具体原因可能得找人分析下,需要的话你可以留个邮箱,我发给你对应产品经理的微信号。

ps 话说你应该发到云计算专栏,那边老板可能有关注.. so 也会帮助我们把产品做得越来越好,你懂得。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/658837

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX