kubernetes istio入口网关的外部IP保持挂起

jjjwad0x  于 2023-03-07  发布在  Kubernetes
关注(0)|答案(3)|浏览(210)

我在k8s上部署了一个istio,刚开始运行的很好,但是一天之后,我就不能通过入口网关访问应用了,然后我检查了一下istio svc的状态,它显示istio入口网关的外部ip是挂起的。
我检查了服务的日志和事件,但什么都没有。问题最可能的原因是什么?
外部IP保持未决:

vx6bjr1n

vx6bjr1n1#

这很可能是由于使用的平台没有为istio入口网关提供外部负载平衡器造成的。
根据istio文件:
如果设置了EXTERNAL-IP值,则您的环境具有可用于入口网关的外部负载平衡器。如果EXTERNAL-IP值为<none>(或永久为<pending>),则您的环境不为入口网关提供外部负载平衡器。在这种情况下,您可以使用服务的节点端口访问网关。
如果您已确定您的环境具有外部负载平衡器,请按照以下说明操作。
设置入口IP和端口:

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}')

在某些环境中,负载平衡器可能使用主机名而不是IP地址来公开。在这种情况下,入口网关的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}')
bbmckpt7

bbmckpt72#

删除traefik服务解决了我在本地主机(开发环境)上的k3 d上的问题。

kubectl get svc -n kube-system

kubectl -n kube-sytem delete svc traefik

我不是Maven!这可能会有一些副作用或导致其他问题。

xnifntxz

xnifntxz3#

如果你使用的是KIND,那么你需要先在它上面安装MetalLB。然后,如果你的istio-ingressgatewayLoadBalancer类型,它将获得一个外部IP分配。希望这能有所帮助。

相关问题