V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MiaRunis
V2EX  ›  分享发现

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

  •  
  •   MiaRunis · 2020-04-03 00:12:29 +08:00 · 2067 次点击
    这是一个创建于 1696 天前的主题,其中的信息可能已经有所发展或是发生改变。
    某小伙伴迫于腾讯投资不得不把服务器迁移至腾讯云,然后发现爬虫总是能绕过防火墙爬到内容。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 上。不知道为什么腾讯云还维持在机房主机时代网络拓扑。
    3 条回复    2020-04-06 06:40:39 +08:00
    MiaRunis
        1
    MiaRunis  
    OP
       2020-04-03 00:15:54 +08:00
    对了,再补一个腾讯云关于 redis 的骚操作。

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

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

    ps 话说你应该发到云计算专栏,那边老板可能有关注.. so 也会帮助我们把产品做得越来越好,你懂得。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:17 · PVG 06:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.