Kubectl等待服务获取外部IP

use*_*009 6 kubernetes kubectl

我正在尝试使用 kubectl 等待服务获取分配的外部 IP。我一直在尝试使用下面的内容来开始

kubectl wait --for='jsonpath={.spec.externalTrafficPolicy==Cluster}' --timeout=30s --namespace cloud-endpoints svc/esp-echo
Run Code Online (Sandbox Code Playgroud)

但我不断收到以下错误消息

error: unrecognized condition: "jsonpath={.spec.externalTrafficPolicy==Cluster}"
Run Code Online (Sandbox Code Playgroud)

Kri*_*sia 8

不可能任意传递jsonpath,并且已经存在对该功能的请求

但是,您可以使用 bash 脚本进行一些睡眠,并使用其他kubectl命令监视服务:

kubectl get --namespace cloud-endpoints svc/esp-echo --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}"
Run Code Online (Sandbox Code Playgroud)

例如,上述命令将返回 LoadBalancer 服务的外部 IP。

您可以使用上面的内容编写一个简单的 bash 文件,如下所示:

#!/bin/bash
ip=""
while [ -z $ip ]; do
  echo "Waiting for external IP"
  ip=$(kubectl get svc $1 --namespace cloud-endpoints --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}")
  [ -z "$ip" ] && sleep 10
done
echo 'Found external IP: '$ip
Run Code Online (Sandbox Code Playgroud)