kubernetes - 从互联网浏览 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 服务的必要元素的博客或教程/提示/建议吗?
先感谢您!
解决方案
在启用 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
)。
查看文档
推荐阅读
- python - Python 模块错误:ModuleNotFoundError:没有名为“google.analytics”的模块
- c# - 如果出现严重错误,则终止 .net-core WebApp
- azure-active-directory - 如何监控 Active Directory 应用程序注册机密过期?
- azure-data-factory - 从 ADF 调用驻留在 Kubernetes 中的 API
- node.js - 在服务器中发送请求后如何检查状态?
- php - 使用 PHP LibreOffice 和 ncjoes/office-converter 库转换文件
- mysql - 检测第一个查询是否在sql中完成然后运行第二个
- java - Spring boot api通过上传excel表计算批量学生cgpa
- python - Selenium 中的刮擦表和长单行打印而不是列和行
- php - 高级自定义字段插件用户下拉菜单不起作用