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

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

  •  
  •   annoygaga · 24 天前 · 1731 次点击

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

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

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

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

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

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

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

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

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

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

    再说到 vpc ,vpc 你划分得越多,你管理成本就越大,最后还是要打通大部分的 vpc 做组网,不然自动化运维就是个笑话。我之前就是一个业务一个 vpc 。想着这很安全吧。但我就 2 个运维。10 多个 vpc ,管理成本大得吓人。自动化各种不痛快。要痛快就要有非常复杂的调度。
    annoygaga
        28
    annoygaga  
    OP
       23 天前
    @defunct9 你这里说的 worker 节点是 node 还是 pod ?
    annoygaga
        29
    annoygaga  
    OP
       23 天前
    @sampeng 是这样的,但业务那边安全需求很明确,主要也是一个 k8s 集群各个业务混用导致的问题
    defunct9
        30
    defunct9  
       23 天前
    node
    annoygaga
        31
    annoygaga  
    OP
       23 天前
    @defunct9 希望是 namespace 维度做这些安全性的东西
    sampeng
        32
    sampeng  
       23 天前
    @annoygaga 那就业务自己做 tls 认证呗。或者谁提出来的谁单独拉个集群完事。。不可能都提出来吧,如果是,那就拆集群。反正成本不是你掏。问就是只有 networkpolicy 可以做到。没资源做不了复杂的
    sampeng
        33
    sampeng  
       23 天前
    业务提出这种事都是不懂装懂的。。。肯定会被我怼回去
    annoygaga
        34
    annoygaga  
    OP
       23 天前
    @sampeng 这和 tls 不一样,业务是电商的,就是需要不同网络和开发环境进行链路,从头拒绝相互调用,不然会出更多问题,这确实会增加复杂度,但是业务册之前出了很多乱七八糟的事情了
    sampeng
        35
    sampeng  
       23 天前
    @annoygaga 开发环境肯定是要和生产环境不同集群的。然后在最外部链路层隔离。生产环境是独立的环境。天塌下来也不会有什么坑
    annoygaga
        36
    annoygaga  
    OP
       23 天前
    @sampeng 有些必要的东西得在一个集群。。。目前在调研一个集群的可能性,最大的问题就是网络希望可以控制
    hexiaodai
        37
    hexiaodai  
       23 天前 via iPhone
    kubeovn 支持 VPC 和 ACL
    annoygaga
        38
    annoygaga  
    OP
       23 天前
    @hexiaodai 赞,我看看,这个好维护吗?
    hexiaodai
        39
    hexiaodai  
       23 天前 via iPhone
    @annoygaga 这个项目在 github 上比较活跃。好维护,配置规则都是 k8s CRD 动态配置。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1306 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:26 · PVG 01:26 · LAX 09:26 · JFK 12:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.