在 Kubernetes 单节点集群上测试 Pod 的外部 IP

时间:2021-06-29 20:59:45

标签: docker kubernetes webapi

我正在使用 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。

我肯定遗漏了一些东西,请您帮我理解一下。 在此先感谢您。

1 个答案:

答案 0 :(得分:0)

最简单的实现方法是使用hostPort。这将基本上模仿 docker run 命令上的 -p 1080:1080 选项。您也应该能够使用您的公共 IP,因为它只是一个节点。这必须在 pod 模板中完成。

ports:
- containerPort: 1080
  hostPort: 1080

更优雅的方式是使用 MetalLB。安装 MetalLB 后,即使您不在云端,您也可以将服务类型设为 LoadBalancer。