我在https://localhost:5001/something
的笔记本电脑上本地运行了一个REST API。我希望通过K8s DNS名称在Kubernetes集群内部可以访问它。例如,在Pod中运行的应用程序可以使用some-service
,而不需要整个Url。
此外,由于localhost
是相对于主机的,我如何让Service
或ExternalName
在主机上到达localhost
,而不是在K8s集群内?
我尝试了docker.host.internal
(如这里所建议的(,但没有成功。K8s文档中的内容表明,它不可能是环回:
端点IP不得为:环回(对于IPv4为127.0.0.0/8,对于IPv6为:1/128(或链接本地(对于IPv4,为169.254.0.0/16和224.0.0.0/24,对于IPv6,为fe80::/64(。
我正在运行:
- 主机:Ubuntu 20.04
- K8s:k3d
-
Web API:(Linux上的.Net Core 3.1,由
dotnet new webapi MyAPI
创建(
Telepresence是一个为使用k8s集群快速本地测试应用程序而创建的工具。它允许您在本地运行单个服务,同时将其连接到远程Kubernetes集群。
它用双向网络代理代替了在Kubernetes集群中运行的普通pod。这个pod将Kubernetes环境中的数据(例如,TCP连接、环境变量、卷(代理到本地进程。本地进程的网络被透明地覆盖,以便DNS调用和TCP连接通过代理路由到远程Kubernetes集群。
另一种方法是创建由ssh server running in a pod
支持的服务,并使用反向隧道打开与本地计算机的反向连接。