如何公开我的部署端口?

时间:2021-05-03 23:54:01

标签: kubernetes

我有一个 k8s 部署,其中包含一个运行 jar 的 docker 映像,该 jar 应该公开一个 HTTP 3000 端口和一个 WebSocket 8982 端口。

当我在本地运行独立 jar 时,我可以使用 curl 和 WebSocket 客户端与这些端口进行通信。 我使用 kubectl proxy 创建了一个代理,然后转到以下地址:

http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/

但是,此请求返回:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
    
  },
  "status": "Failure",
  "message": "error trying to reach service: dial tcp 10.244.0.5:80: connect: connection refused",
  "code": 500
}

如何访问运行部署的 pod 中的这两个端口?

1 个答案:

答案 0 :(得分:2)

您可以使用命令 kubectl port-forward

它会以同样的方式工作并在本地和集群之间创建一个代理隧道

例如,如果您的服务名称是 test-service

kubectl port-forward svc/test-service 8080:3000

这将创建本地到集群的隧道,其中本地端口为 8080,服务端口为 3000,服务将流量路由到容器或 Pod。 >

阅读更多信息:https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/

kubectl proxy 用于管理或连接 Kubernetes API 服务器并使用管理 API。

如果你没有这个服务,你可以直接将流量从本地代理到POD

本地监听8888端口,转发到pod中的3000

kubectl port-forward pod/<POD NAME> 8888:3000