我使用Docker Desktop for Mac启动了一个kubernetes群集,然后在群集上安装了Istio,并按照将应用程序对外部流量开放中的步骤创建了Istio入口网关。
(base) ~/istio/istio-1.16.1 $ kubectl get svc -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default details ClusterIP 10.105.143.37 <none> 9080/TCP 5h5m
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6h16m
default productpage ClusterIP 10.106.2.22 <none> 9080/TCP 5h5m
default ratings ClusterIP 10.111.217.64 <none> 9080/TCP 5h5m
default reviews ClusterIP 10.104.251.134 <none> 9080/TCP 5h5m
istio-system istio-egressgateway ClusterIP 10.99.102.205 <none> 80/TCP,443/TCP 6h15m
istio-system istio-ingressgateway LoadBalancer 10.108.135.209 localhost 15021:32723/TCP,80:32335/TCP,443:32040/TCP,31400:30864/TCP,15443:31429/TCP 6h15m
istio-system istiod ClusterIP 10.101.35.195 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 6h15m
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 6h16m
根据Istio文档,对于Docker Desktop,入口网关主机设置为127.0.0.1。
$ export INGRESS_HOST=127.0.0.1
此时,我无法从Mac访问127.0.0.1:80/productpage,也无法访问127.0.0.1:32335/productpage,但根据istio文档,我应该可以访问该页面。
我知道Docker for Desktop for Mac将设置一个linuxkit虚拟机并在此虚拟机上部署kubernetes。此虚拟机有一个内部ip 192.168.65.4,但我无法从Mac主机访问它。因此,上述kubectl get svc命令中的localhost实际上应该指的是linuxkit虚拟机,而不是Mac主机。那么,如何从Mac主机访问linuxkit虚拟机上的nodeport 32335呢?
1条答案
按热度按时间hzbexzde1#
您需要使用端口转发从Mac访问Istio入口网关。首先,找到Istio入口网关正在侦听的端口。
获得端口号后,运行以下命令将其转发到本地计算机: