如何暴露在 Kubernetes 中运行的服务

Posted

技术标签:

【中文标题】如何暴露在 Kubernetes 中运行的服务【英文标题】:How to expose services running in Kubernetes 【发布时间】:2020-08-11 22:06:18 【问题描述】:

我在Ubuntu 上安装了Charmed-Kubernetes。然后是istio 及其bookinfo 应用程序。

kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='.items[0].metadata.name') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"

返回,简单的书店应用

kubectl get gateway -> bookinfo-gateway 32s

kubectl get svc istio-ingressgateway -n istio-system

显示外部 IP 地址,但当我尝试使用 curl 访问时,它什么也没给我。

我也尝试按照here 的描述访问kubernetes-dashboard,它也失败了。

基本上,我如何从另一台 PC 访问这些 UI?我已经安装了MetalLB,但仍然没有运气。

参考: No endpoint with dashboard

Kube-dashboard serviceunavailable

Cant access K8 Dashboard

流量通过网络代理,会不会有问题?

我是 Kubernetes 的新手。

【问题讨论】:

您是否像here 中提到的那样配置了metallb configmap?您是否尝试过使用 here 中提到的 kubectl 代理进入仪表板? @jt97 是的,使用了metallb Layer 2 configuration 并且在尝试kubectl proxy 时正在运行curl。我已经更新了问题,流量通过防火墙。这会是个问题吗? 你的instastructure是什么?这是一些带有 ubuntu 的虚拟机?如果 metalLB 配置正确,那么我认为防火墙/代理可能是这里的问题。另外关于仪表板检查这个link。 @jt97 Ubuntu 在虚拟机上运行。 好吧,如果您是新手,那么我建议您执行这 14 个简单的步骤 - jhooq.com/… 我最初也很挣扎,但后来我准备了这些指南以简化安装过程 【参考方案1】:

这是 Charmed-Kubernetes 的一个问题。我们需要将所有服务安装为juju,然后也使用juju 进行部署。

这里nginx的样本确实在系统中运行,但是MetalLB无法访问它,因为juju配置隐藏了它。

【讨论】:

以上是关于如何暴露在 Kubernetes 中运行的服务的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes如何管理暴露服务

Kubernetes如何管理暴露服务

使用 nginx 反向代理在 Kubernetes 中公开服务

Kubernetes之kuberconfig--普通用户授权kubernetes集群

在kubernetes上将host作为localhost暴露给节点js app

kubernetes 暴露服务端口的几种方式