我正在运行2个Pod和带有Type:NodePort的服务,以平衡Pod之间的请求。我想知道何时将请求发送到服务,将请求转发到哪个 pods 。有没有办法找到它,因为看着响应,看起来所有请求都由同一个Pod处理。
最佳答案
kubernetes Service
将默认使用WRR进行负载平衡。创建服务时,将在节点中生成iptables
规则。
可以肯定的是,ssh进入节点并运行iptables-save|less
。搜索服务的名称。在以下示例中,服务microbot
负载均衡了microbot
部署与3个副本。您的案例中应该有2个条目,因为您只有2个 pods 。
-A KUBE-SVC-LX5ZXALLN4UQ7ZFL -m comment --comment "default/microbot:" -m statistic --mode random --probability 0.33332999982 -j KUBE-SEP-OZCDYTQTC3KQGJK5
-A KUBE-SVC-LX5ZXALLN4UQ7ZFL -m comment --comment "default/microbot:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-SKIRAXBCCQB5R4MV
-A KUBE-SVC-LX5ZXALLN4UQ7ZFL -m comment --comment "default/microbot:" -j KUBE-SEP-SPMPNZCOIJIRSNNQ
如果
iptables
输出看起来不像上面那样,则可能是您的服务配置不正确。就像Heidi所说的那样,pod与服务无关。关于docker - 如何找到正在处理请求的Kubernetes Pod,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44550109/