假设我在Kubernetes集群中部署了pod,并且已经通过NodePort服务公开了它们。是否有一种方法可以在一个命令中获取结荚外部端点?
例如:
kubectl <cmd>
Response : <IP_OF_NODE_HOSTING_THE_POD>:30120 ( 30120 being the nodeport external port )
发布于 2021-12-31 17:49:28
该需求是一个复杂的需求,需要查询来列出对象。我要用假设来解释。此外,如果需要内部地址,则可以使用端点对象(Ep),因为目标解析是在端点级别完成的。
假设:1 Pod,1 NodePort服务(32320->80),两者均有nginx名称
下面的命令将按照所述的假设工作,我希望这将为您的需求提供一个最佳的方法。
注:基于上述假设,此答案是有效的。但是,对于更广泛的解决方案,我建议在这类复杂查询中使用-o jsonpath='{range..
。现在,下面的命令将起作用。
命令:
kubectl get pods,ep,svc nginx -o jsonpath=' External:http://{..status.hostIP}{":"}{..nodePort}{"\n Internal:http://"}{..subsets..ip}{":"}{..spec.ports..port}{"\n"}'
输出:
External:http://192.168.5.21:32320
Internal:http://10.44.0.21:80
发布于 2021-12-31 15:04:39
如果节点端口服务是已知的,那么类似于kubectl get svc <svc_name> -o=jsonpath='{.spec.clusterIP}:{.spec.ports[0].nodePort}
的东西应该可以工作。
https://stackoverflow.com/questions/70543232
复制相似问题