我正在尝试向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来运行您的命令,然后死亡。