我混淆了多容器Pod设计模式。
(跨斗、适配器、大使)
我的理解是:
边车:container + container(共享相同资源并执行其他功能)
适配器:容器+适配器(用于检查其他容器的状态。* 例如,监视 *)
**大使:容器+代理(到外部网络)
但是,根据Istio的说法-安装侧车,他们引入了代理作为侧车模式.
适配器是容器,代理也是容器。
那么,我的问题是侧车模式和适配器&大使模式之间有什么区别?
边车模式概念是否包含适配器和大使模式?
我混淆了多容器Pod设计模式。
(跨斗、适配器、大使)
我的理解是:
边车:container + container(共享相同资源并执行其他功能)
适配器:容器+适配器(用于检查其他容器的状态。* 例如,监视 *)
**大使:容器+代理(到外部网络)
但是,根据Istio的说法-安装侧车,他们引入了代理作为侧车模式.
适配器是容器,代理也是容器。
那么,我的问题是侧车模式和适配器&大使模式之间有什么区别?
边车模式概念是否包含适配器和大使模式?
3条答案
按热度按时间tvz2xvvm1#
首先,你是对的,术语sidecarcontainer现在已经变成了描述pod中 * 一个额外容器 * 的词。Originally(?)它是一个特定的多容器设计模式。
多容器设计模式
边车模式
Pod中的额外容器,用于增强或扩展主容器的功能。
大使图案
将网络连接代理到主容器的容器。
适配器模式
转换主容器输出的容器。
这是从2015年的原始文章:Patterns for Composite Containers
摘要
您的备注
但是,根据Istio的说法-安装侧车,他们引入了代理作为侧车模式.
在上面的模式中,Ambassador 和 Adapter 实际上都必须代理网络连接,但目的不同。对于Istio,这是为了终止mTLS连接、收集指标等,以增强您的主容器。因此,它实际上是一个边车模式,但令人困惑的是,正如您正确指出的那样,所有模式 * 代理连接 * -但用途不同。
cwxwcias2#
Sidecar是一个附加容器,它扩展了主容器的功能。到处都给出了一个例子,即您希望将日志发送到某个外部系统。在不更改业务逻辑(主容器)的情况下,您可以将日志代理部署为Sidecar容器。
Ambassador是一个容器,它是系统其他部分的代理。一个很好的例子是,您部署了具有Kubernetes API凭据的Ambassador容器,因此您不必从客户端使用身份验证。另一个很好的例子是使用Ambassador as proxy to the Redis caching cluster。
现在,令人困惑的是,这两种模式并不局限于Kubernetes。但是,Kubernetes中的Ambassador实现通常使用Sidecar。换句话说,Ambassador通常实现为一个边车容器(如here所述)。
Istio envoy绝对是作为一个边车容器来实现的。我从来没有见过它被描述为大使,可能是因为它不仅仅是将请求转发到系统的其他部分。
这两篇文章很好地解释了Sidecar Ambassador和Adapter模式:
6jygbczu3#
sidecar container的想法是添加一些主容器中没有的功能。添加一个容器来处理一个功能(如日志记录)解决了这个问题,同时保持了解耦和可伸缩性,而不是增加代码(在其他部署中可能不需要)。Prometheus监控和Fluentd日志记录利用sidecar container来收集数据。
适配器容器的基本用途是修改入口或出口上的数据,以满足某些其他需要。也许,现有的企业范围的监视工具具有特定的数据格式需要。适配器将是标准化监视工具要接收的主容器的输出的有效方法。而不必修改监视器或容器化的应用程序。适配器容器将多个应用程序转换为单个视图。
Ambassador containers允许访问外部世界,而不必在入口控制器中实现服务或另一个入口:代理本地连接、反向代理、限制HTTP请求、从主容器重新路由到外部世界。