我在k8s上部署了一个istio,一开始它工作得很好,但是过了一天后,我无法通过入口网关访问应用程序。然后检查了istio svc状态。它显示istio入口网关的外部IP处于待定状态。
我检查了服务的日志和事件,但没有发现任何问题。最可能引起这个问题的原因是什么?
外部IP保持待定状态:
我检查了服务的日志和事件,但没有发现任何问题。最可能引起这个问题的原因是什么?
外部IP保持待定状态:
EXTERNAL-IP
值,则您的环境具有可用于入口网关的外部负载均衡器。如果EXTERNAL-IP
值为<none>
(或永久为<pending>
),则您的环境不为入口网关提供外部负载均衡器。在这种情况下,您可以使用服务的节点端口访问网关。
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
export TCP_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="tcp")].port}')
EXTERNAL-IP
值将不是 IP 地址,而是主机名,上述命令将无法设置 INGRESS_HOST
环境变量。请使用以下命令来更正 INGRESS_HOST
的值:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
移除 traefik
服务解决了我在本地 k3d(开发环境)上的问题。
kubectl get svc -n kube-system
kubectl -n kube-sytem delete svc traefik
我不是专家!这可能会产生一些副作用或引起其他问题。
KIND
,则需要首先在其上安装{{link1:MetalLB
}}。然后,如果istio-ingressgateway
是LoadBalancer
类型,则会分配外部IP。希望这可以帮助到您。