*交叉发布自 k3d GitHub 讨论:https ://github.com/rancher/k3d/discussions/690
我试图通过两个端口公开两个服务。作为替代方案,我也很想知道如何在同一个端口上公开它们并使用不同的路由。我尝试了几篇文章和很多配置。让我知道k3d + k3s / kubernetes + traefik(+ klipper?)的网络哪里出了问题......
我发布了一个例子: https ://github.com/ericis/k3d-networking
目标:
- 通过端口 8080 到达主机上的“app-1”
- 通过端口 8091 到达主机上的“app-2”
脚步
*参见:repo 中的文件
配置
k3d
集群并将应用程序端口公开给负载均衡器ports: # map localhost to loadbalancer - port: 8080:80 nodeFilters: - loadbalancer # map localhost to loadbalancer - port: 8091:80 nodeFilters: - loadbalancer
在 Kubernetes 中使用“deployment.yaml”部署应用并公开容器端口
ports: - containerPort: 80
在 Kubernetes 中公开服务。在这里,我尝试了两种方法。
使用命令行
$ kubectl create service clusterip app-1 --tcp=8080:80 $ kubectl create service clusterip app-2 --tcp=8091:80
使用“service.yaml”
spec: ports: - protocol: TCP # expose internally port: 8080 # map to app targetPort: 80 selector: run: app-1
使用“ingress.yaml”在 kubernetes 之外公开服务
backend: service: name: app-1 port: # expose from kubernetes number: 8080