Istio VirtualService和Kubernetes服务之间的区别是什么?

Istio VirtualService和Kubernetes服务之间的区别是什么?,kubernetes,istio,Kubernetes,Istio,据我所知,Istio VirtualService是一种抽象的东西,它试图在实际实现中添加一个接口,如Kubernetes中的服务或Concur中的类似内容 我的问题是: 当使用Kubernetes作为Istio的底层平台时,Istio VirtualService和Kubernetes服务之间有什么区别吗?或者它们是相同的?与每个Istio的扩展一样,Istio的VirtualService提供了一些附加功能,如外部流量路由/管理(Pod到外部通信、HTTPS外部通信、路由、url重写…) 有

据我所知,Istio VirtualService是一种抽象的东西,它试图在实际实现中添加一个接口,如Kubernetes中的服务或Concur中的类似内容

我的问题是:


当使用Kubernetes作为Istio的底层平台时,Istio VirtualService和Kubernetes服务之间有什么区别吗?或者它们是相同的?

与每个Istio的扩展一样,Istio的VirtualService提供了一些附加功能,如外部流量路由/管理(Pod到外部通信、HTTPS外部通信、路由、url重写…)

有关详细信息,请查看此文档:

它们都很有用,因为您需要“经典”服务来管理入口流量或服务对服务通信


史蒂夫。

虚拟服务:

它定义了一组基于匹配条件应用于kubernetes服务或服务子集的流量路由规则。这类似于kubernetes Ingress对象。它对Istio灵活、强大的交通管理起着关键作用

Kubernetes服务:

它可以是一组逻辑的POD,定义为POD之上的抽象,提供单个DNS名称或IP。

Kubernetes服务 Kubernetes
服务
管理吊舱的网络。它指定您的POD是在内部(
ClusterIP
),外部(
NodePort
LoadBalancer
)公开,还是作为其他DNS条目的CNAME公开(
externalName

例如,此
foo服务将公开带有标签
app:foo
的pod。发送到端口
30007
上的节点的任何请求都将转发到端口
80
上的pod

apiVersion: v1
kind: Service
metadata:
  name: foo-service
spec:
  type: NodePort
  selector:
    app: foo
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30007
Istio虚拟服务 Istio
virtualservice
比Kuberenetes
服务高一级。它可用于将流量路由、故障注入、重试和许多其他配置应用于
服务

例如,对于发送到
foo
的失败请求,此
foo重试virtualservice
将重试3次,每次超时2秒

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
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
foo delay virtualservice
的另一个示例将对发送到
foo
的0.1%的请求应用0.5s延迟

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

那么,当使用kubernetes时,虚拟服务是否使用k8s服务来路由流量?两者如何合作?链接断开正确的链接是查看我对类似问题的回答: