Kubernetes引入的设计模式,指的是在同一Pod中,除了承载主要业务逻辑的容器外,还运行一个称为sidecar的辅助容器,提供一些通用功能支持。
Sidecar模式
Sidecar模式我感觉完全可以概括下面我说的所有模式,
比如使用Sidebar容器处理日志,可以让应用不用关心日志发送到哪里,仅输出到stdout就可以。容器的输出会被同一Pod中的SideCar辅助容器截取,并发送到日志聚合平台如(ElasticSearch)。
这使得运行在Kubernetes中的微服务可以实现分布式链路跟踪(Distribute Tracing)等功能。
其实另外两种模式Ambassador pattern,Adapter Pattern都差不多。也是在同一个Pod里运行一个辅助容器。
Ambassador模式
这个辅助容器用于代理网络流量,比如读写分离,分库代理。主要容器可以使用localhost来访问数据库,AM辅助容器截取请求,将读请求分发到从节点,而将写请求发送到主节点。
总结
其实辅助容器可以做很多事情,只要主要容器不想做的事情,可以统统扔到辅助容器里去实现。如请求报文转换(Adapter Pattern),监控统计等。