使用kubectl或kubernetes api获取服务的外部ip

Cma*_*mag 2 google-cloud-platform kubernetes kubectl

伙计们,有没有比解析kubectl输出的输出更简单的方法来获取Kubernetes中服务的外部IP地址?

kubectl get services/foo --namespace=foo -o json

谢谢!

Ian*_*wis 6

使用kubectl是获取服务的入口IP地址的最简单方法。如果您只想获取IP地址,则可以将大部分解析作为kubectl命令本身的一部分进行。

kubectl get svc foo -n foo \
    -o jsonpath="{.status.loadBalancer.ingress[*].ip}"
Run Code Online (Sandbox Code Playgroud)

这可能不适用于您,但是某些云负载平衡器(例如AWS ELB)为您提供了主机名而不是IP地址,因此您需要查找该主机名。

kubectl get svc foo -n foo \
    -o jsonpath="{.status.loadBalancer.ingress[*].hostname}"
Run Code Online (Sandbox Code Playgroud)

如果愿意,可以通过使用jsonpath联合运算符来实现两者。

kubectl get svc foo -n foo \
    -o jsonpath="{.status.loadBalancer.ingress[*]['ip', 'hostname']}"
Run Code Online (Sandbox Code Playgroud)

如果您希望获得人类可读的输出,则可以使用custom-columns输出格式。

kubectl get svc foo -n foo \
    -o custom-columns="NAME:.metadata.name,IP ADDRESS:.status.loadBalancer.ingress[*].ip"
Run Code Online (Sandbox Code Playgroud)