Istio的通信边车控制平面

问题描述 投票:1回答:1

我目前正在研究1.6版的服务网格Istio。数据平面(Envoy代理)由受控平面配置。特别是Pilot(istiod的一部分)负责将路由规则和配置传播给特使。我想知道通讯方式如何?

  1. 是单个gRPC流,它在​​sidecar容器第一次启动时打开,并在sidecar整个生命周期中保持打开状态。如果网格更改,则飞行员使用此流通过xDS api通知特使有关更改的信息?那么更新是基于推送策略的吗?或者Sidecar是否在定义的间隔内拉出新配置?
  2. [istio代理(来自飞行员和城堡代理)在侧车集装箱中的作用是什么(尤其是前飞行员,我知道城堡代理属于CSR流程)?它是否为新配置拉入,是否仅引导使节,但是为什么它总是一直在运行,...?

提前感谢!

istio
1个回答
0
投票
  1. istio使节如何工作的最好解释是从使节文档中获得。实际上,它比看起来复杂得多:

初始化

Envoy启动时如何进行自我初始化很复杂。本节从高层次上解释了该过程的工作方式。在所有侦听器开始侦听和接受新的连接之前,以下所有这些情况都会发生。

  • 在启动过程中,cluster manager经历了多阶段初始化,在此阶段,它首先初始化静态/ DNS群集,然后初始化预定义的EDS群集。然后,如果适用,它将初始化CDS,等待对bounded period of time的一个响应(或失败),并对CDS提供的集群执行相同的主/次初始化。

  • 如果集群使用active health checking,则Envoy还会进行一次活动的健康状况检查。

  • 集群管理器初始化完成后,RDSLDS初始化(如果适用)。对于LDS / RDS请求,服务器至少等待bounded period of time响应(或失败)。之后,它开始接受连接。

  • 如果LDS本身返回需要RDS响应的侦听器,则Envoy进一步等待bounded period of time,直到收到RDS响应(或失败)为止。请注意,此过程将在以后通过LDS进行的每个将来的侦听器添加上进行,称为listener warming

  • 在完成所有前面的步骤之后,侦听器开始接受新的连接。该流程可确保在热重启期间,新进程完全有能力在耗尽旧进程之前接受并处理新连接。

  • 初始化的主要设计原则是,始终确保Envoy在initial_fetch_timeout内进行初始化,并尽最大努力根据管理服务器的可用性在该范围内获取完整的xDS配置集。

关于更新特使配置:

运行时配置

Envoy支持“运行时”配置(也称为“功能标志”和“决策器”)。可以更改配置设置,这将影响操作,而无需重新启动Envoy或更改主要配置。当前支持的实现使用文件系统文件树。 Envoy在已配置的目录中监视符号链接交换,并在发生这种情况时重新加载树。这种类型的系统通常部署在大型分布式系统中。其他实现将不难实现。支持的运行时配置设置在操作指南的相关部分中进行了说明。 Envoy将使用默认的运行时值和“空”提供程序正常运行,因此不需要这样的系统即可运行Envoy。

运行时configuration

可以在here中找到有关特使代理工作方式的更多信息。


  1. 根据istio documentation
  2. 合并的好处:引入istiod

已经确定微服务的许多常见好处并不适用于Istio控制平面,我们决定将它们统一为一个二进制文件:istiod(“ d”代表daemon)。] >

让我们看看新包装的好处:

  • [安装变得更容易。

    所需的Kubernetes部署和相关配置更少,因此Istio的配置选项和标志集大大减少了。在最简单的情况下,您可以通过启动一个Pod来启动启用了所有功能的Istio控制平面。] >>
  • [配置变得更加容易。 Istio今天拥有的许多配置选项都是编排控制平面组件的方法,因此不再需要。您也不再需要更改整个群集的PodSecurityPolicy来部署Istio。

  • [使用VM变得更加容易。要将工作负载添加到网格中,现在只需要安装一个代理和生成的证书即可。该代理仅连接回单个服务。

  • [维护变得更加容易。安装,升级和删除Istio不再需要复杂的版本依赖性和启动顺序。例如:要升级,您只需要在现有控制平面旁边启动一个新的isidod版本,对其进行微调,然后将所有流量移至该平面即可。

  • 可伸缩性变得更容易。现在只有一个要伸缩的组件。

  • [调试变得更容易。更少的组件意味着更少的跨组件环境调试。

  • 启动时间减少。组件不再需要彼此等待以定义的顺序启动。

  • 资源使用率下降,响应性上升。组件之间的通信得到保证,并且不受gRPC大小限制。可以安全地共享缓存,从而减少了资源占用。

  • istiod将Pilot,Galley,Citadel和Sidecar喷油器先前执行的功能统一为一个二进制文件。

    单独的组件istio-agent通过将配置和秘密安全地传递给Envoy代理来帮助每个小车连接到网格。严格来说,尽管代理仍然是控制平面的一部分,但它是按单点运行的。通过将以前作为DaemonSet运行的每个节点功能滚动到每个Pod代理中,我们进一步简化了操作。

希望有帮助。

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