istio 入口网关的外部 IP 保持待处理状态

zzg*_*zzg 7 kubernetes istio

我将 istio 部署到 k8s,一开始运行良好,但一天后,我无法通过 ingress gateway 访问该应用程序。然后检查istio svc状态。它显示 istio 入口网关的外部 IP 正在等待处理。

我检查了服务的日志和事件,但什么也没有。问题最可能的原因是什么?

外部 IP 保持待定状态:

外部 IP 保持待定状态

Pio*_*lec 4

这很可能是由于使用的平台未向 istio 入口网关提供外部负载均衡器而导致的。

\n

根据istio文档:

\n
\n

如果EXTERNAL-IP设置了该值,则您的环境具有可用于入口网关的外部负载均衡器。如果该EXTERNAL-IP值为<none>(或永久<pending>),则您的环境不会为入口网关提供外部负载均衡器。此时,您可以使用 service\xe2\x80\x99s节点端口访问网关。

\n
\n
\n

如果您确定您的环境具有外部负载均衡器,请按照以下说明进行操作。

\n

设置入口IP和端口:

\n
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.status.loadBalancer.ingress[0].ip}\')\nexport INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.spec.ports[?(@.name=="http2")].port}\')\nexport SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.spec.ports[?(@.name=="https")].port}\')\nexport TCP_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.spec.ports[?(@.name=="tcp")].port}\')\n
Run Code Online (Sandbox Code Playgroud)\n

在某些环境中,负载均衡器可能会使用主机名而不是 IP 地址来公开。在这种情况下,ingress gateway\xe2\x80\x99s EXTERNAL-IP 值将不是 IP 地址,而是主机名,并且上述命令将无法设置环境 INGRESS_HOST 变量。使用以下命令更正该 INGRESS_HOST 值:

\n
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.status.loadBalancer.ingress[0].hostname}\')\n
Run Code Online (Sandbox Code Playgroud)\n