Istio VirtualService和Kubernetes Service有什么区别?

时间:2018-12-12 12:38:55

标签: kubernetes istio

据我了解,Istio VirtualService是一种抽象的东西,它试图向实际实现中添加接口,例如Kubernetes中的服务或Consul中的类似内容。

我的问题是:

当使用Kubernetes作为Istio的基础平台时,Istio VirtualService和Kubernetes Service之间有什么区别吗?还是一样?

3 个答案:

答案 0 :(得分:3)

作为每个Istio的扩展,Istio的VirtualServices提供了一些附加功能,例如外部流量路由/管理(到外部通信的Pod,HTTPS外部通信,路由,URL重写...)。

有关此文档的更多信息,请参阅:https://istio.io/docs/reference/config/istio.networking.v1alpha3/#VirtualService

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

史蒂夫。

答案 1 :(得分:3)

虚拟服务:

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

Kubernetes服务:

它可以是Pod的逻辑集合,并且可以定义为Pod顶部的抽象,它提供单个DNS名称或IP。

答案 2 :(得分:3)

Kubernetes 服务

Kubernetes service 管理 Pod 的网络。它指定您的 Pod 是在内部公开 (ClusterIP)、外部公开(NodePortLoadBalancer)还是作为其他 DNS 条目的 CNAME (externalName)。

例如,此 foo-service 将公开带有标签 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 service 高一级。它可用于将流量路由、故障注入、重试和许多其他配置应用于 services

例如,对于 foo-retry-virtualservice 的失败请求,此 foo 将重试 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

foo-delay-virtualservice 的另一个示例将对 foo 的 0.1% 的请求应用 0.5 秒的延迟。

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