MiaRunis

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

  •  
  •   MiaRunis · Apr 3, 2020 · 2618 views
    This topic created in 2246 days ago, the information mentioned may be changed or developed.
    某小伙伴迫于腾讯投资不得不把服务器迁移至腾讯云,然后发现爬虫总是能绕过防火墙爬到内容。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 replies    2020-04-06 06:40:39 +08:00
    MiaRunis
        1
    MiaRunis  
    OP
       Apr 3, 2020
    对了,再补一个腾讯云关于 redis 的骚操作。

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

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

    ps 话说你应该发到云计算专栏,那边老板可能有关注.. so 也会帮助我们把产品做得越来越好,你懂得。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5203 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:23 · PVG 17:23 · LAX 02:23 · JFK 05:23
    ♥ Do have faith in what you're doing.