【问题标题】:browsing Istio/k8s services from internet从互联网浏览 Istio/k8s 服务
【发布时间】:2021-12-01 11:30:59
【问题描述】:

我已经开始阅读 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 服务的必要元素的博客或教程/提示/建议吗?

提前谢谢你!

【问题讨论】:

  • 您到底尝试了什么?你用的是哪个版本的 Kubernetes?
  • 我已经部署了示例/bookinfo 服务并遵循书中的示例。对于其中一些人来说,外部 IP 似乎是一个强制性条件,我正在寻找一些替代方案。我在以下版本中添加:i)kubectl 版本客户端版本::“v1.22.2”,GoVersion:“go1.16.7”,编译器:“gc”,平台:“linux/amd64”} 服务器版本:“v1.21.1 ", , Platform:"linux/amd64"} ii) kind version kind v0.11.1 go1.16.4 linux/amd64 iii)istioctl version client version: 1.11.2 control plane version: 1.11.2 data plane version: 1.11.2 ( 8 个代理)

标签: kubernetes istio


【解决方案1】:

在启用 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 将从 &lt;pending&gt; 切换到实际 ip,即负载均衡器的公共 ip。您可以通过访问该 ip 来访问您的集群。

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

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

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

现在只需打开您的浏览器并使用您的工作人员的一个 IP 访问集群,方法是访问 &lt;NODE_IP&gt;:&lt;PORT&gt;(其中 PORT 是上面的那个)。

docs

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2011-06-05
    相关资源
    最近更新 更多