Istio虚拟服务和Kubernetes服务有什么区别?

uqjltbpv  于 2022-12-26  发布在  Kubernetes
关注(0)|答案(3)|浏览(199)

据我所知,Istio VirtualService是一种抽象的东西,它试图向实际实现添加一个接口,就像Kubernetes中的服务或领事馆中的类似内容。
当使用Kubernetes作为Istio的基础平台时,Istio VirtualService和Kubernetes Service之间是否存在差异或是否相同?

ujv3wf0j

ujv3wf0j1#

Istio的VirtualServices提供了一些附加功能,如外部流量路由/管理(Pod到外部通信、HTTPS外部通信、路由、URL重写......)。
请查看此文档了解更多详细信息:https://istio.io/docs/reference/config/networking/virtual-service
当您需要“经典”服务来管理入口流量或服务到服务的通信时,这两种服务可能都很有用。

z31licg0

z31licg02#

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的失败请求,foo-retry-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

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

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

kse8i1jr

kse8i1jr3#

虚拟服务:

它定义了一组流量路由规则,根据匹配条件应用于Kubernetes服务或服务子集,这与Kubernetes入口对象类似,它对Istio灵活、强大的流量管理起到了关键作用。

Kubernetes服务:

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

相关问题