google-kubernetes-engine - 在哪里可以找到 ILB 上的节点端口信息,该信息将流量发送到使用节点端口公开的 GKE 服务
问题描述
我在 GKE 中创建了一个使用内部负载均衡器公开的服务。ILB 的健康检查端口是 10256,它是 kube-proxy。ILB 上的端口是我的 kubernetes 服务端口的端口。(不是目标端口)。但是,在 ILB 上没有这样的信息表明流量正在到达暴露服务的 NodePort。这在内部如何工作?
解决方案
答案是“你没有”。使用 Google ILB 时,流量不会转发到 NodePort。来自谷歌计算引擎文档:
内部 TCP/UDP 负载平衡器不是代理;它们将流量传递到接收流量的同一端口上的后端
有趣的是,您甚至不需要 Google 负载均衡器的节点端口。来自Kubernetes 文档
...并非所有云提供商都严格要求(例如,Google Compute Engine 不需要分配 NodePort 来使 LoadBalancer 工作,但 AWS 需要)但当前的 API 需要它
因此,要回答您关于它如何工作的问题,它是通过匹配服务的外部 IP 地址在 IP 表中完成的。您可以使用 iptables-save 跟踪从服务 ip 地址到 pod ip 地址和端口的链(Google Container Optimized OS 没有 iptables-save,ubuntu 有)
$ sudo iptables-save | grep 35.221.57.238
-A KUBE-SERVICES -d 35.221.57.238/32 -p tcp -m comment --comment "kuard/kuard: loadbalancer IP" -m tcp --dport 8081 -j KUBE-FW-VUXQQGPA6IZX7OIE
$ sudo iptables-save | grep KUBE-FW-VUXQQGPA6IZX7OIE
:KUBE-FW-VUXQQGPA6IZX7OIE - [0:0]
-A KUBE-FW-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard: loadbalancer IP" -j KUBE-MARK-MASQ
-A KUBE-FW-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard: loadbalancer IP" -j KUBE-SVC-VUXQQGPA6IZX7OIE
-A KUBE-FW-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard: loadbalancer IP" -j KUBE-MARK-DROP
-A KUBE-SERVICES -d 35.221.57.238/32 -p tcp -m comment --comment "kuard/kuard: loadbalancer IP" -m tcp --dport 8081
$ sudo iptables-save | grep KUBE-SVC-VUXQQGPA6IZX7OIE
:KUBE-SVC-VUXQQGPA6IZX7OIE - [0:0]
-A KUBE-FW-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard: loadbalancer IP" -j KUBE-SVC-VUXQQGPA6IZX7OIE
-A KUBE-NODEPORTS -p tcp -m comment --comment "kuard/kuard:" -m tcp --dport 31297 -j KUBE-SVC-VUXQQGPA6IZX7OIE
-A KUBE-SERVICES -d 10.31.251.41/32 -p tcp -m comment --comment "kuard/kuard: cluster IP" -m tcp --dport 8081 -j KUBE-SVC-VUXQQGPA6IZX7OIE
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.10000000009 -j KUBE-SEP-7UUYG24J2OBFZYRF
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.11110999994 -j KUBE-SEP-6ANDSGXDBEGTAG23
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.12500000000 -j KUBE-SEP-25IXXMCCF3XEBS6O
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.14286000002 -j KUBE-SEP-NHB6VFRNINLBDDVN
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.16667000018 -j KUBE-SEP-CORNB7YN4D5QTBEL
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.20000000019 -j KUBE-SEP-TVLRYFRKJELCUDJW
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.25000000000 -j KUBE-SEP-GZREDYSZ5AHV77PW
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.33332999982 -j KUBE-SEP-QJSD2YXPKN3UWYMO
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-GOWSUJ5VHTYBPFCG
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -j KUBE-SEP-HFAJBHAOVDISHRVT
$ sudo iptables-save | grep KUBE-SEP-7UUYG24J2OBFZYRF
:KUBE-SEP-7UUYG24J2OBFZYRF - [0:0]
-A KUBE-SEP-7UUYG24J2OBFZYRF -s 10.28.25.11/32 -m comment --comment "kuard/kuard:" -j KUBE-MARK-MASQ
-A KUBE-SEP-7UUYG24J2OBFZYRF -p tcp -m comment --comment "kuard/kuard:" -m tcp -j DNAT --to-destination 10.28.25.11 :8080
-A KUBE-SVC-VUXQQGPA6IZX7OIE -m comment --comment "kuard/kuard:" -m statistic --mode random --probability 0.10000000009 -j KUBE-SEP-7UUYG24J2OBFZYRF
推荐阅读
- go - Go中没有方法的结构的多态性
- sql - 使用 COPY FROM 从 CSV 导入数据时转换列
- node.js - 重复的mongodb对象参数但只显示一个?最后一位数字四舍五入?
- pandas - 非数字数据框 pandas 的数据透视表
- facebook - 如何在 FB Graph API v6.0 上拉黑帖子?
- java - Eclipse Milo:如何获取方法参数的 DataType?
- reactjs - 单击按钮将数据推送到材料表
- python - 有没有办法在解包时将 splat-assign 分配为元组而不是列表?
- java - 在向量中插入一个元素会改变所有其他元素
- r - C 统计量和 AUC 不一致