【问题标题】:Curl request to a Kubernetes cluster type service对 Kubernetes 集群类型服务的 curl 请求
【发布时间】:2022-02-09 04:46:03
【问题描述】:

我正在尝试向 Kubernetes ClusterType 服务发送 curl 请求。有没有办法执行 curl 请求来服务?

我正在使用蓝/绿部署部署应用程序。所以这里需要验证蓝色版本是否正常工作。所以决定向蓝色版本发送 curl 请求。当我获得 200 状态时,我会将所有流量路由到此版本。

但现在正面临向应用程序的新版本(蓝色版本)发送 curl 请求。

【问题讨论】:

  • 你得到什么错误?
  • @Lei Yang,我不知道向集群类型服务发送 curl 请求。我可以将 curl 请求发送到服务
  • 从 curl 的角度来看,节点类型和集群类型的服务没有区别。

标签: kubernetes blue-green-deployment


【解决方案1】:

ClusterIP 使服务只能从集群内访问。这是默认的服务类型。您可以阅读有关服务的更多信息here

由于第一个答案中的命令不起作用,我发布了有效的解决方案:

kubectl run tmp-name --rm --image nginx -i --restart=Never -- /bin/bash -c 'curl -s clusterip:port'

使用上述命令 curl 工作正常。您可以使用服务名称代替集群 IP 地址。

像这样使用 curl 需要--restart=Never

--rm 确保在 shell 退出时删除 Pod。

编辑:

但是如果你想从你运行 kubectl 的主机访问你的 ClusterIp 服务,你可以使用端口转发。

kubectl port-forward service/yourClusterIpServiceName 28015:yourClusterIpPort

你会得到这样的输出:

Forwarding from 127.0.0.1:28015 -> yourClusterIpPort
Forwarding from [::1]:28015 -> yourClusterIpPort

之后,您将能够使用以下命令访问您的 ClusterIP 服务:

curl localhost:28015

有关端口转发的更多信息,请访问the official documentation page

【讨论】:

    【解决方案2】:

    您不能向 ClusterType Service 发送 curl 请求,除非您在集群内,否则您可以运行一个 pod 来执行此操作,例如

    kubectl run --rm --image nginx -i -- curl 'http://clusterip/'
    

    这将运行一个临时 pod 来运行你的命令,然后死掉。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    相关资源
    最近更新 更多