对Kubernetes集群类型服务的Curl请求



我正在尝试向Kubernetes ClusterType服务发送一个curl请求。有什么方法可以执行curl对服务的请求吗?

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

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

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

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

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

有了上面的命令,curl就可以正常工作了。您可以使用服务名称而不是群集IP地址。

像这样使用旋度需要CCD_ 1。

--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

有关港口转运的更多信息,请访问官方文档页面。

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

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

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

最新更新