如何暴露在 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 是的,使用了metallbLayer 2 configuration
并且在尝试kubectl proxy
时正在运行curl
。我已经更新了问题,流量通过防火墙。这会是个问题吗?
你的instastructure是什么?这是一些带有 ubuntu 的虚拟机?如果 metalLB 配置正确,那么我认为防火墙/代理可能是这里的问题。另外关于仪表板检查这个link。
@jt97 Ubuntu 在虚拟机上运行。
好吧,如果您是新手,那么我建议您执行这 14 个简单的步骤 - jhooq.com/… 我最初也很挣扎,但后来我准备了这些指南以简化安装过程
【参考方案1】:
这是 Charmed-Kubernetes 的一个问题。我们需要将所有服务安装为juju
,然后也使用juju
进行部署。
这里nginx
的样本确实在系统中运行,但是MetalLB无法访问它,因为juju
配置隐藏了它。
【讨论】:
以上是关于如何暴露在 Kubernetes 中运行的服务的主要内容,如果未能解决你的问题,请参考以下文章
使用 nginx 反向代理在 Kubernetes 中公开服务
Kubernetes之kuberconfig--普通用户授权kubernetes集群