k8s 有 12 个节点
现在有个需求,是希望节点请求通过指定的节点(比如通过 node2, 3) 出去,而不是直接通过宿主机访问网络.
不知道 k8s 有什么组建可以做这个事情
1
idblife 2023-08-01 11:52:52 +08:00
|
2
Evovil 2023-08-01 13:01:38 +08:00 via iPhone
直接访问 node2 3 ,其他的 node 不对外暴露不就行了吗? svc 会自己路由到其他 node 。
|
4
rrfeng 2023-08-01 13:25:16 +08:00 via Android
三层方案:路由+nat
四层方案:正向代理 |
5
nulIptr 2023-08-01 14:04:07 +08:00
感觉你这个需求跟 K8S 没关系。我猜是某些 pod 需要特殊的网络环境,如果是这样的话一般是 pod 里面搞一下 sidecar 代理就行了,即使是 node 全局代理的话也要配 pod 的亲和性,没必要
|
6
seers 2023-08-01 14:09:19 +08:00 via Android
k8s network police
|
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/ |
8
mooyo 2023-08-01 14:55:12 +08:00
istio egress?
|
9
chenPiMeiHaoChi 2023-08-01 15:05:33 +08:00
出方向?把 pod 用标签绑定到 node 就行了吧?
|
10
joesonw 2023-08-01 16:15:10 +08:00 via iPhone
你这是 SNAT ,在 node 上用 iptables 做转发。或者看你用的什么网络组件,calico 好像有这个功能。
|
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 |
12
ccde8259 2023-08-02 10:25:49 +08:00 via iPhone
istio egress
|
13
sujin190 2023-08-03 13:52:23 +08:00
如果只是某中 pod 简单用下,倒是弄个 pod 配置里添加下 hosts 把需要出口的域名指向需要出口的地址,然后在需要出口的地址挂个端口转发程序 pod 就好了,如果有出口 node 端口占用的问题,那么还可以把 hosts 指向本机然后在当前 pod 再配置个容器再端口转发一次,这样出口 node 节点就可以使用其它端口了
当然如果大部分 pod 和大部分流量都需要转发那还是 route+nat 或是 istio egress 比较好 |