K8S 里面怎么做类似 VPC 的网络结构比较好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
annoygaga
V2EX    Kubernetes

K8S 里面怎么做类似 VPC 的网络结构比较好?

  •  
  •   annoygaga 355 天前 2759 次点击
    这是一个创建于 355 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,需求是希望用 K8S 在内部平台做类似 VPC 那样的网络区分,保证不同链路下,网络的安全,这块大家目前走的什么方案呀?

    PS:维护的人很少,希望方案比较完整,坑比较少

    PS:k8s 集群可能有多个机房,希望方案附带了这方面的适配

    39 条回复    2024-10-25 19:23:30 +08:00
    defunct9
        1
    defunct9  
       355 天前   1
    rancher 吧
    annoygaga
        2
    annoygaga  
    OP
       355 天前
    @defunct9 rancher 有 VPC ? rancher 不是个平台发行版么?
    defunct9
        3
    defunct9  
       355 天前
    人少就用这玩意好了
    zhoulq7
        4
    zhoulq7  
       355 天前
    使用 rancher 管理 k8s 集群,k8s 集群使用 Canal 网络插件, 启用项目网络隔离。
    vus520
        5
    vus520  
       355 天前
    1. 基本的网络策略,pod 之间的通信,命名空间隔离,可以用网络策略结合 CNI 插件(如 Calico 或 Cilium )来实现
    2. 服务之间的通信可以使用使用 Istio 或 Linkerd 等服务网格来管理,可以有更细粒度的控制和安全性,比如流量管理、监控和安全策略
    FabricPath
        6
    FabricPath  
       355 天前
    网络层的权限管理能力太弱了,只能控制通和不通;
    建议你直接用 ServiceMesh 去解决权限问题
    annoygaga
        7
    annoygaga  
    OP
       355 天前
    @defunct9 目前用的云厂商的托管 k8 ,没上 rancher 的话
    annoygaga
        8
    annoygaga  
    OP
       355 天前
    @vus520 好弄吗?
    annoygaga
        9
    annoygaga  
    OP
       355 天前
    @FabricPath ServiceMesh 没什么经验,这个好维护吗?以及,能达到那个水平吗?
    annoygaga
        10
    annoygaga  
    OP
       355 天前
    @zhoulq7 如果没有 rancher 可以搞吗?
    guokehujin
        11
    guokehujin  
       355 天前
    推荐 kube-ovn cni
    defunct9
        12
    defunct9  
       355 天前
    你没说明白你的需求和现状,你都有 ACK 了,还弄啥 rancher
    R4rvZ6agNVWr56V0
        13
    R4rvZ6agNVWr56V0  
       355 天前
    默认拒绝所有入站流量的网络策略,只允许特定流量的网络策略。然后使用 CNI 配置,限制特定节点 label 可以访问
    annoygaga
        14
    annoygaga  
    OP
       355 天前
    @defunct9 我用的托管,但是希望在 k8s 内部再做 vpc ,目前是一个 vpc 内,有业务需求需要多个网络之间隔离
    annoygaga
        15
    annoygaga  
    OP
       355 天前
    @GeekGao 有平台级别的解决方案么,就这个逻辑的
    defunct9
        16
    defunct9  
       355 天前
    业务需求用 namespace 隔开就可以了。vpc 已经是个大平板广场了,再做 vpc 不行了吧。
    R4rvZ6agNVWr56V0
        17
    R4rvZ6agNVWr56V0  
       355 天前
    @annoygaga CNI 用 calico 就行了啊,这个逻辑多简单。不用额外的平台。
    sampeng
        18
    sampeng  
       354 天前
    没明白你的需求是啥。。

    每个 pod 不同的网络权限?那你需要 istio ?这个需要有人。坑很深,概念那是一套一套的。会了很爽。但是交接和招新人是个很大问题。istio 的网络控制层面会严格控制代理每个 pod 的进和出的流量。

    你都有不同的集群了。不同集群天然就是网络隔离的啊。解决好每个集群所在网络安全不就好了么。
    sampeng
        19
    sampeng  
       354 天前
    我就记得有这么个东西。。
    https://kubernetes.io/docs/concepts/services-networking/network-policies/

    自己维护一个 list 就完事了。
    CCIEliu
        20
    CCIEliu  
       354 天前   1
    cilium 或者 calico 都行,个人推荐 cilium ,可观察性好一点。如果想容易维护那就 calico 。

    其实还是直接做 networkpolicy 好一点,已经在同一个集群了,没必要非要搞个 vpc 类似概念出来。
    就继续按照 k8s 的思路,用 networkpolicy 管理网络就好了。

    ps:如果真的想 vpc ,那就直接在基础设施上新建新的 k8s 集群,彻底隔离。。。故障域也隔离开了。
    annoygaga
        21
    annoygaga  
    OP
       354 天前
    @defunct9 主要是希望隔离性和 vpc 一样,主要是安全层面的需求
    annoygaga
        22
    annoygaga  
    OP
       354 天前
    @sampeng 一个集群,希望里面不同的 service 下(或者 namespace 下吧)的网络不互通,类似 vpc ,主要是安全的需求
    annoygaga
        23
    annoygaga  
    OP
       354 天前
    @CCIEliu 其实是 k8s 内部使用者,搞出两个网络,这么个需求,主要 for 安全
    07212423
        24
    07212423  
       354 天前
    印象中 k8s 的网络从设计上就是一个平面。你的需求更像是安全需求,而不是 vpc 需求。 应该看看网络策略
    annoygaga
        25
    annoygaga  
    OP
       354 天前
    @07212423 是的,本质上安全需求,类似 vpc 的安全需求
    defunct9
        26
    defunct9  
       354 天前
    简单复杂化,每个 worker 节点其实就是一个 vpc 的子网。隔离隔离,cks 的考题就有一个,用 networkpolicy 就完事了,但是,带来的好处远小于带来的麻烦,运维人少的情况下。
    sampeng
        27
    sampeng  
       354 天前
    反正我认为运维在人数少于 5 的情况下。折腾这个事情 ROI 约等于 0.你既然是云,那进来的入口只有负载均衡器,除非你把整个集群的 node 全部暴露在公网。在这个前提下,要什么情况下才会有最恶劣的情况呢?
    你的前端有安全漏洞,穿透到业务处理的 pod ,再从这些 pod 提权到 node 。再从 node 去干别的事。

    他就算进到 pod ,请问他不知道服务端口,业务逻辑情况下,他如何做到知道其他 service 的?所以从这个层面而言,除非你上零信任,做所谓 vpc 和 namespace 隔离都是脱裤子放屁。

    再说到 vpc ,vpc 你划分得越多,你管理成本就越大,最后还是要打通大部分的 vpc 做组网,不然自动化运维就是个笑话。我之前就是一个业务一个 vpc 。想着这很安全吧。但我就 2 个运维。10 多个 vpc ,管理成本大得吓人。自动化各种不痛快。要痛快就要有非常复杂的调度。
    annoygaga
        28
    annoygaga  
    OP
       354 天前
    @defunct9 你这里说的 worker 节点是 node 还是 pod ?
    annoygaga
        29
    annoygaga  
    OP
       354 天前
    @sampeng 是这样的,但业务那边安全需求很明确,主要也是一个 k8s 集群各个业务混用导致的问题
    defunct9
        30
    defunct9  
       354 天前
    node
    annoygaga
        31
    annoygaga  
    OP
       354 天前
    @defunct9 希望是 namespace 维度做这些安全性的东西
    sampeng
        32
    sampeng  
       354 天前
    @annoygaga 那就业务自己做 tls 认证呗。或者谁提出来的谁单独拉个集群完事。。不可能都提出来吧,如果是,那就拆集群。反正成本不是你掏。问就是只有 networkpolicy 可以做到。没资源做不了复杂的
    sampeng
        33
    sampeng  
       354 天前
    业务提出这种事都是不懂装懂的。。。肯定会被我怼回去
    annoygaga
        34
    annoygaga  
    OP
       354 天前
    @sampeng 这和 tls 不一样,业务是电商的,就是需要不同网络和开发环境进行链路,从头拒绝相互调用,不然会出更多问题,这确实会增加复杂度,但是业务册之前出了很多乱七八糟的事情了
    sampeng
        35
    sampeng  
       354 天前
    @annoygaga 开发环境肯定是要和生产环境不同集群的。然后在最外部链路层隔离。生产环境是独立的环境。天塌下来也不会有什么坑
    annoygaga
        36
    annoygaga  
    OP
       353 天前
    @sampeng 有些必要的东西得在一个集群。。。目前在调研一个集群的可能性,最大的问题就是网络希望可以控制
    hexiaodai
        37
    hexiaodai  
       353 天前 via iPhone
    kubeovn 支持 VPC 和 ACL
    annoygaga
        38
    annoygaga  
    OP
       353 天前
    @hexiaodai 赞,我看看,这个好维护吗?
    hexiaodai
        39
    hexiaodai  
       353 天前 via iPhone
    @annoygaga 这个项目在 github 上比较活跃。好维护,配置规则都是 k8s CRD 动态配置。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4178 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 10:15 PVG 18:15 LAX 03:15 JFK 06:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86