首页 文章

如何找到处理请求的Kubernetes pod

提问于
浏览
0

我正在运行2个pod和一个带有Type:NodePort的服务,以便在pod之间对请求进行负载均衡 . 我想知道何时向服务发送请求,请求转发到哪个pod . 有没有办法找到这个,因为查看响应,看起来所有请求都由同一个pod处理 .

3 回答

  • 0

    很可能是因为您的上下文和缺少命名空间,您无法看到日志 .

    尝试使用 kubectl get pods -o wide --all-namespaces | grep <pod> 获取pod所在的命名空间和节点IP地址的信息 .

    然后输入并进入下面的命令,以获得日志的最后100行的运行尾部 kubectl --namespace <namespace> logs --tail 100 -f <pod>

    还有远程机会,该吊舱与服务无关 . 要检查运行 kubectl describe services --namespace <namespace> <service> 并在 Selector: 部分中查找应用程序名称

    您还可以执行容器,查看端口是否可访问或绑定到容器本身 . 如果它没有收听或回答,很可能是因为该服务与命名空间中的应用程序无关 .

  • 2

    默认情况下,kubernetes Service 将使用WRR进行负载 balancer . 创建服务时,将在节点中生成 iptables 规则 .

    确保,ssh进入节点并运行 iptables-save|less . 搜索服务的名称 . 在下面的示例中,Service microbot load使用3个副本 balancer microbot 部署 . 由于您只有2个pod,因此您的案例中应该有2个条目 .

    -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 输出可能没有正确配置您的服务't look like the above, it' . 就像Heidi所说的那样,pod与服务无关 .

  • 0
    • 您可以查看应用程序日志文件(如果您使用的话) . 如果您在stdout中打印任何内容,请使用 kubectl logs <pod> 查看该消息 .

    • 对于测试,您可以在响应中包含pod主机名 .

相关问题