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

k8s 如何通过制定节点转发网络请求?

  •  
  •   kuibobo · 2023-08-01 11:17:46 +08:00 · 1588 次点击
    这是一个创建于 515 天前的主题,其中的信息可能已经有所发展或是发生改变。

    k8s 有 12 个节点

    现在有个需求,是希望节点请求通过指定的节点(比如通过 node2, 3) 出去,而不是直接通过宿主机访问网络.

    不知道 k8s 有什么组建可以做这个事情

    13 条回复    2023-08-03 13:52:23 +08:00
    idblife
        1
    idblife  
       2023-08-01 11:52:52 +08:00
    https://tailscale.com/kb/1185/kubernetes/

    不负责任推荐看看,我自己没细看。。。
    Evovil
        2
    Evovil  
       2023-08-01 13:01:38 +08:00 via iPhone
    直接访问 node2 3 ,其他的 node 不对外暴露不就行了吗? svc 会自己路由到其他 node 。
    Evovil
        3
    Evovil  
       2023-08-01 13:04:17 +08:00 via iPhone
    @Evovil 看错题目了 ,你说的是 k8s-egress ?
    rrfeng
        4
    rrfeng  
       2023-08-01 13:25:16 +08:00 via Android
    三层方案:路由+nat
    四层方案:正向代理
    nulIptr
        5
    nulIptr  
       2023-08-01 14:04:07 +08:00
    感觉你这个需求跟 K8S 没关系。我猜是某些 pod 需要特殊的网络环境,如果是这样的话一般是 pod 里面搞一下 sidecar 代理就行了,即使是 node 全局代理的话也要配 pod 的亲和性,没必要
    seers
        6
    seers  
       2023-08-01 14:09:19 +08:00 via Android
    k8s network police
    AmaQuinton
        7
    AmaQuinton  
       2023-08-01 14:31:36 +08:00
    1 ,使用 nodeName 将 pod 设置在指定节点;
    2 ,在节点上使用 label 标记后,使用 nodeSelector 访问
    参考: https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/
    mooyo
        8
    mooyo  
       2023-08-01 14:55:12 +08:00
    istio egress?
    chenPiMeiHaoChi
        9
    chenPiMeiHaoChi  
       2023-08-01 15:05:33 +08:00
    出方向?把 pod 用标签绑定到 node 就行了吧?
    joesonw
        10
    joesonw  
       2023-08-01 16:15:10 +08:00 via iPhone
    你这是 SNAT ,在 node 上用 iptables 做转发。或者看你用的什么网络组件,calico 好像有这个功能。
    wbuntu
        11
    wbuntu  
       2023-08-02 02:16:43 +08:00
    这个需要 CNI 插件支持才行,需要在集群内再做一次路由转发,可以参考下 kueb-ovn 和 openshift 有类似的方案

    在线文档:
    https://kubeovn.github.io/docs/v1.11.x/guide/eip-snat/
    https://docs.openshift.com/container-platform/4.12/networking/openshift_sdn/assigning-egress-ips.html
    ccde8259
        12
    ccde8259  
       2023-08-02 10:25:49 +08:00 via iPhone
    istio egress
    sujin190
        13
    sujin190  
       2023-08-03 13:52:23 +08:00
    如果只是某中 pod 简单用下,倒是弄个 pod 配置里添加下 hosts 把需要出口的域名指向需要出口的地址,然后在需要出口的地址挂个端口转发程序 pod 就好了,如果有出口 node 端口占用的问题,那么还可以把 hosts 指向本机然后在当前 pod 再配置个容器再端口转发一次,这样出口 node 节点就可以使用其它端口了

    当然如果大部分 pod 和大部分流量都需要转发那还是 route+nat 或是 istio egress 比较好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1937 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:56 · PVG 08:56 · LAX 16:56 · JFK 19:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.