我使用的是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。
我确实错过了什么,你能帮我理解一下吗。事先非常感谢。
最简单的实现方法是使用hostPort
。这将基本上模仿docker run命令上的-p 1080:1080
选项。您也应该能够使用您的公共IP,因为它只是一个节点。这必须在pod模板中完成。
ports:
- containerPort: 1080
hostPort: 1080
更优雅的方法是使用MetalLB。安装MetalLB后,即使您不在云上,也可以使您的服务类型为LoadBalancer。