据我所知,Istio VirtualService是一种抽象的东西,它试图向实际实现添加一个接口,就像Kubernetes中的服务或领事馆中的类似内容。当使用Kubernetes作为Istio的基础平台时,Istio VirtualService和Kubernetes Service之间是否存在差异或是否相同?
VirtualService
Service
ujv3wf0j1#
Istio的VirtualServices提供了一些附加功能,如外部流量路由/管理(Pod到外部通信、HTTPS外部通信、路由、URL重写......)。请查看此文档了解更多详细信息:https://istio.io/docs/reference/config/networking/virtual-service当您需要“经典”服务来管理入口流量或服务到服务的通信时,这两种服务可能都很有用。
z31licg02#
Kubernetes service用于管理Pod的网络连接。它指定Pod是在内部(ClusterIP)、外部(NodePort或LoadBalancer)还是作为其他DNS条目的CNAME(externalName)公开。例如,此foo-service将显示标签为app: foo的pod。发送到端口30007上的节点的任何请求都将转发到端口80上的pod。
service
ClusterIP
NodePort
LoadBalancer
externalName
foo-service
app: foo
30007
80
apiVersion: v1 kind: Service metadata: name: foo-service spec: type: NodePort selector: app: foo ports: - port: 80 targetPort: 80 nodePort: 30007
Istio virtualservice比Kuberenetes service高出一个级别,可以用来对services应用流量路由、故障注入、重试等多种配置。例如,对于foo的失败请求,foo-retry-virtualservice将重试3次,每次超时2秒。
virtualservice
services
foo
foo-retry-virtualservice
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: foo-retry-virtualservice spec: hosts: - foo http: - route: - destination: host: foo retries: attempts: 3 perTryTimeout: 2s
此foo-delay-virtualservice的另一个示例将对foo的0.1%的请求应用0.5s延迟。
foo-delay-virtualservice
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: foo-delay-virtualservice spec: hosts: - foo http: - fault: delay: percentage: value: 0.1 fixedDelay: 5s route: - destination: host: foo
https://kubernetes.io/docs/concepts/services-networking/service/https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/https://istio.io/latest/docs/reference/config/networking/virtual-service/https://istio.io/latest/docs/concepts/traffic-management/#virtual-services
kse8i1jr3#
虚拟服务:
它定义了一组流量路由规则,根据匹配条件应用于Kubernetes服务或服务子集,这与Kubernetes入口对象类似,它对Istio灵活、强大的流量管理起到了关键作用。
Kubernetes服务:
它可以是一组逻辑pod,并定义为pod之上的抽象,提供单个DNS名称或IP。
3条答案
按热度按时间ujv3wf0j1#
Istio的VirtualServices提供了一些附加功能,如外部流量路由/管理(Pod到外部通信、HTTPS外部通信、路由、URL重写......)。
请查看此文档了解更多详细信息:https://istio.io/docs/reference/config/networking/virtual-service
当您需要“经典”服务来管理入口流量或服务到服务的通信时,这两种服务可能都很有用。
z31licg02#
Kubernetes服务
Kubernetes
service
用于管理Pod的网络连接。它指定Pod是在内部(ClusterIP
)、外部(NodePort
或LoadBalancer
)还是作为其他DNS条目的CNAME(externalName
)公开。例如,此
foo-service
将显示标签为app: foo
的pod。发送到端口30007
上的节点的任何请求都将转发到端口80
上的pod。Istio虚拟服务
Istio
virtualservice
比Kuberenetesservice
高出一个级别,可以用来对services
应用流量路由、故障注入、重试等多种配置。例如,对于
foo
的失败请求,foo-retry-virtualservice
将重试3次,每次超时2秒。此
foo-delay-virtualservice
的另一个示例将对foo
的0.1%的请求应用0.5s延迟。参考
https://kubernetes.io/docs/concepts/services-networking/service/https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/https://istio.io/latest/docs/reference/config/networking/virtual-service/https://istio.io/latest/docs/concepts/traffic-management/#virtual-services
kse8i1jr3#
虚拟服务:
它定义了一组流量路由规则,根据匹配条件应用于Kubernetes服务或服务子集,这与Kubernetes入口对象类似,它对Istio灵活、强大的流量管理起到了关键作用。
Kubernetes服务:
它可以是一组逻辑pod,并定义为pod之上的抽象,提供单个DNS名称或IP。