首页 > 解决方案 > 从互联网浏览 Istio/k8s 服务

问题描述

我已经开始阅读 Istio-in-action(Manning 撰写)和 Mastering-service-mesh(Packt 撰写),并且有一些示例我无法“看到”正确的输出。我在装有 Ubuntu 20.04 的笔记本电脑上工作,我将 [kind] 用于我的本地 k8s 集群,我可以在其中创建 3 个或更多工作节点。

当我部署一些 Istio 资源(例如虚拟服务)时,我想从我的 Ubuntu 浏览器或不同的客户端(不同的笔记本电脑或手机)浏览服务网格,但它在我的“基础设施”中遗漏了一些东西——是吗外部负载均衡器还是一些本地 Ubuntu 配置?是否必须与公共云提供商合作 - GCP/AWS/Azure;如果是,哪一个最简单?我尝试过kubectl port-forward但没有成功。

即使没有 ExternalIP,其他资源也可以(例如 istioctl dashboard kiali/jaeger/prometheus)。

你能帮我找到关于从互联网上浏览 k8s/Istio 服务的必要元素的博客或教程/提示/建议吗?

先感谢您!

标签: kubernetesistio

解决方案


在启用 istio-ingressgateway 的情况下安装 istio 时,会在istio-system命名空间中创建具有该名称的服务。

❯ kubectl get svc -n istio-system
NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)
istio-ingressgateway   LoadBalancer   100.71.98.21     <pending>     80:32564:80/TCP,...

将 istio 部署到公共云提供商时,将为您创建一个负载均衡器(如 AWS ELB)。设置完成后,EXTERNAL-IP将切换<pending>到实际 ip,即负载均衡器的公共 ip。您可以通过访问该 ip 来访问您的集群。

在您的本地设置中,您没有这种奢侈。但是服务仍然被创建。在PORT(S)列中,您可以看到一堆端口。那实际上是一个端口映射。因此,您的节点机器的端口被映射到该服务。

您可以使用它来将端口映射到 http(端口 80):对我来说,它将是32564. 或者你可以运行这个:

kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}'

现在只需打开您的浏览器并使用您的工作人员的一个 ip 通过访问来访问集群<NODE_IP>:<PORT>(上面的那个在哪里PORT)。

查看文档


推荐阅读