我正在使用 docker 桌面版本,并且有一个单节点 Kubernetes 集群。 我有一个容器化的 web api,由 pod 表示。
我想给 Pod 一个除本地主机之外的 IP 地址。
我创建了一个服务来公开我的 pod 并使用了一个外部 IP,这是 yaml 文件:
apiVersion: v1
kind: Service
metadata:
name: pred-entrypoint
namespace: default
spec:
type: LoadBalancer
selector:
app: predictim
ports:
- port: 1080
targetPort: 1080
nodePort: 30001
externalIPs:
- 80.11.12.10
当我启动一项服务时,描述我得到的是外部 IP:localhost, 80.11.12.10
当我使用 PowerShell 测试 pod 时:
Invoke-RestMethod -Method POST -Uri http://localhost:1080/predict
--> 效果很好Invoke-RestMethod -Method POST -Uri http://80.11.12.10:1080/predict
--> 错误地址错误我不知道如何测试分配的外部 IP。
我肯定遗漏了一些东西,请您帮我理解一下。 在此先感谢您。
答案 0 :(得分:0)
最简单的实现方法是使用hostPort
。这将基本上模仿 docker run 命令上的 -p 1080:1080
选项。您也应该能够使用您的公共 IP,因为它只是一个节点。这必须在 pod 模板中完成。
ports:
- containerPort: 1080
hostPort: 1080
更优雅的方式是使用 MetalLB。安装 MetalLB 后,即使您不在云端,您也可以将服务类型设为 LoadBalancer。