在kubernetes集群上运行API测试的正确IP



我有kubernetes集群,pod类型为集群IP。ip:10.102.222.181或端点:10.244.0.157:80,10.244.5.243:80

例如:

Type:              ClusterIP
IP Families:       <none>
IP:                10.102.222.181
IPs:               <none>
Port:              http  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.0.157:80,10.244.5.243:80
Session Affinity:  None
Events:            <none>

如果您的测试运行器在集群内运行,则使用服务的name:作为主机名。不要直接使用这些IP地址。Kubernetes提供了一个DNS服务,将服务的名称转换为它的地址(从kubectl describe service输出的IP:),服务本身只是将网络流量转发到Endpoints:(单个pod地址)。

如果测试运行器在集群之外,那么这些DNS名称或IP地址都无法访问。对于基本的集成测试,使用kubectl port-forward service/its-name 12345:80应该就足够了,然后可以使用http://localhost:12345访问服务(实际上是一个固定的单个pod)。这并不适合性能或负载测试,您需要从集群内部启动这些测试,或者使用NodePortLoadBalancer服务使服务可以从外部访问。

Endpoints中的ip是单独的Pod ip,在创建新Pod和替换旧Pod时可能会发生变化。ClusterIP是稳定的IP,除非您删除服务并重新创建它,否则不会改变。所以建议使用clusterIP.

相关内容

  • 没有找到相关文章

最新更新