Kubernetes ServiceEntry与服务和端点
当我可以简单地创建Kubernetes ServiceEntry与服务和端点,kubernetes,istio,Kubernetes,Istio,当我可以简单地创建服务(如果此服务是一组外部IP,则定义端点而不是选择器)时,使用服务条目的主要好处是什么。在这种情况下,我不能依赖服务?我想说的是中提到的关键好处,您可以配置流量路由、定义重试、超时、故障注入等 服务条目描述服务的属性(DNS名称、VIP、端口、协议、端点)。这些服务可能位于mesh外部(例如web API)或不属于平台服务注册中心的mesh内部服务(例如,一组虚拟机与Kubernetes中的服务对话) 您可以使用向Istio内部维护的服务注册表添加条目。添加服务条目后,特使
服务
(如果此服务是一组外部IP,则定义端点
而不是选择器
)时,使用服务条目
的主要好处是什么。在这种情况下,我不能依赖服务
?我想说的是中提到的关键好处,您可以配置流量路由、定义重试、超时、故障注入等
服务条目描述服务的属性(DNS名称、VIP、端口、协议、端点)。这些服务可能位于mesh外部(例如web API)或不属于平台服务注册中心的mesh内部服务(例如,一组虚拟机与Kubernetes中的服务对话)
您可以使用向Istio内部维护的服务注册表添加条目。添加服务条目后,特使代理可以向服务发送流量,就像它是网格中的服务一样。配置服务条目允许您管理网格外运行的服务的流量,包括以下任务:
- 为外部目的地(如API)重定向和转发流量 从web消费,或从旧版服务的流量 基础设施。
- 为外部服务定义和策略 目的地。
- 通过运行虚拟机(VM)中的mesh服务
- 从逻辑上将不同群集的服务添加到网格,以 在Kubernetes上配置服务器。
只要我与Istio一起工作,我意识到Service+Endpoints的ServiceEntry的最大好处是,我可以在ServceEntry中指定
端点上的标签
,并在其上构建子集。是用于定义Istio中具有一组端点的服务的API对象。ServiceEntry可以描述跨多个集群部署的服务(例如,第三方web API)或不属于平台服务注册中心的mesh内部服务(例如,与Kubernetes中的服务对话的一组VM)
ServiceEntry端点可以是IP地址或DNS名称。每个端点都可以用网络、位置和权重单独标记和标记,并允许ServiceEntry描述各种网络拓扑
特别是与K8s服务相比,您没有Istio功能(重试、超时、故障注入策略等)来正确控制未在mesh中注册的目的地的流量
Istio与Kubernetes的集成使用K8s SDK监视API服务器的服务创建和服务端点更新事件。通过使用此数据,Istio创建ServiceEntry对象(),此ServiceEntry用于更新Istio内部模型并生成数据平面(特使)的更新配置,具体来说,ServiceEntry创建并填充其端点
相关摘录自:
要填充自己的服务注册表,Istio将连接到服务
发现系统。例如,如果您已在
Kubernetes群集,然后Istio自动检测服务和
该集群中的端点。
Istio维护一个内部服务注册表,其中包含
服务及其对应的服务端点在
服务网Istio使用服务注册表生成
配置
Istio不提供服务发现,尽管大多数服务都是
通过反映
发现了基础平台的服务(Kubernetes,领事,
普通DNS)。还可以使用
服务条目配置
什么<代码>服务入口
=服务
+端点
?这完全没有道理。@suren,我的问题是关于为什么ServiceEntry!=服务+端点,因为这是我无法理解的,因为这是两个完全不同的对象。您可以使用ServiceEntry
指定可以从mesh与哪些外部端点通话,而Service
是用于内部流量的iptable规则。不可比较。@suren,但对于服务+终结点,我也可以指定外部终结点。。。从meshhttpbin与这样的服务对话是没有问题的,因为它是一个内部服务<代码>服务条目
用于外部端点。尝试创建任何容器(比如debian),并执行apt get update
。除非您创建一个ServiceEntry
并打开*.debian.org
,否则它将失败。
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: svc-entry
spec:
hosts:
- ext-svc.example.com
ports:
- number: 443
name: https
protocol: HTTPS
location: MESH_EXTERNAL
resolution: DNS
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ext-res-dr
spec:
host: ext-svc.example.com
trafficPolicy:
tls:
mode: MUTUAL
clientCertificate: /etc/certs/myclientcert.pem
privateKey: /etc/certs/client_private_key.pem
caCertificates: /etc/certs/rootcacerts.pem