Istio VirtualService 和 Kubernetes Service 有什么区别?

问题描述 投票:0回答:3

据我了解,Istio

VirtualService
是一种抽象的东西,它试图在实际实现中添加一个接口,就像Kubernetes中的服务或Consul中类似的东西。

当使用 Kubernetes 作为 Istio 的底层平台时,Istio

VirtualService
和 Kubernetes
Service
有区别还是一样?

kubernetes istio
3个回答
18
投票

Kubernetes 服务

Kubernetes

service
管理 Pod 的网络。它指定您的 Pod 是在内部公开 (
ClusterIP
)、在外部公开(
NodePort
LoadBalancer
)还是作为其他 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-service
    retries:
      attempts: 3
      perTryTimeout: 2s

另一个例子

foo-delay-virtualservice
将对 0.1% 的请求应用 0.5 秒的延迟。
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


14
投票

查看此文档以了解更多详细信息:

https://istio.io/docs/reference/config/networking/virtual-service

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


6
投票
虚拟服务:

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

Kubernetes 服务:

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

© www.soinside.com 2019 - 2024. All rights reserved.