我有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)。这并不适合性能或负载测试,您需要从集群内部启动这些测试,或者使用NodePort
或LoadBalancer
服务使服务可以从外部访问。
Endpoints
中的ip是单独的Pod ip,在创建新Pod和替换旧Pod时可能会发生变化。ClusterIP
是稳定的IP,除非您删除服务并重新创建它,否则不会改变。所以建议使用clusterIP.