我正在运行2个pod和一个带有Type:NodePort的服务,以便在pod之间对请求进行负载均衡 . 我想知道何时向服务发送请求,请求转发到哪个pod . 有没有办法找到这个,因为查看响应,看起来所有请求都由同一个pod处理 .
很可能是因为您的上下文和缺少命名空间,您无法看到日志 .
尝试使用 kubectl get pods -o wide --all-namespaces | grep <pod> 获取pod所在的命名空间和节点IP地址的信息 .
kubectl get pods -o wide --all-namespaces | grep <pod>
然后输入并进入下面的命令,以获得日志的最后100行的运行尾部 kubectl --namespace <namespace> logs --tail 100 -f <pod>
kubectl --namespace <namespace> logs --tail 100 -f <pod>
还有远程机会,该吊舱与服务无关 . 要检查运行 kubectl describe services --namespace <namespace> <service> 并在 Selector: 部分中查找应用程序名称
kubectl describe services --namespace <namespace> <service>
Selector:
您还可以执行容器,查看端口是否可访问或绑定到容器本身 . 如果它没有收听或回答,很可能是因为该服务与命名空间中的应用程序无关 .
默认情况下,kubernetes Service 将使用WRR进行负载 balancer . 创建服务时,将在节点中生成 iptables 规则 .
Service
iptables
确保,ssh进入节点并运行 iptables-save|less . 搜索服务的名称 . 在下面的示例中,Service microbot load使用3个副本 balancer microbot 部署 . 由于您只有2个pod,因此您的案例中应该有2个条目 .
iptables-save|less
microbot
-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与服务无关 .
您可以查看应用程序日志文件(如果您使用的话) . 如果您在stdout中打印任何内容,请使用 kubectl logs <pod> 查看该消息 .
kubectl logs <pod>
对于测试,您可以在响应中包含pod主机名 .
3 回答
很可能是因为您的上下文和缺少命名空间,您无法看到日志 .
尝试使用
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:
部分中查找应用程序名称您还可以执行容器,查看端口是否可访问或绑定到容器本身 . 如果它没有收听或回答,很可能是因为该服务与命名空间中的应用程序无关 .
默认情况下,kubernetes
Service
将使用WRR进行负载 balancer . 创建服务时,将在节点中生成iptables
规则 .确保,ssh进入节点并运行
iptables-save|less
. 搜索服务的名称 . 在下面的示例中,Servicemicrobot
load使用3个副本 balancermicrobot
部署 . 由于您只有2个pod,因此您的案例中应该有2个条目 .如果
iptables
输出可能没有正确配置您的服务't look like the above, it' . 就像Heidi所说的那样,pod与服务无关 .您可以查看应用程序日志文件(如果您使用的话) . 如果您在stdout中打印任何内容,请使用
kubectl logs <pod>
查看该消息 .对于测试,您可以在响应中包含pod主机名 .