为什么 Pod 必须是原子调度?
在两个容器紧密协作的场景中,避免调度失败问题。
Pod 解决了里面多个容器之间高效共享某些资源和数据,共享网络、共享存储。
容器设计模式?
通过在 Pod 里定义专门容器,来执行主业务容器需要的辅助工作。
优势是将辅助功能同主业务容器解耦,实现独立发布和能力重用。
比如:
原来需要 SSH 进服务器执行的脚本。
日志收集。
Debug 应用。
应用监控。
具体 Sidecar 案例:应用与日志收集
业务容器将日志写在 Volume 里。
日志容器共享该 Volume 从而将日志转发到远程存储中。Fluentd 等。
具体 Sidecar 案例:代理容器
代理容器对业务容器屏蔽被代理的服务器集群,简化业务代码的实现逻辑。
* 容器之间通过 localhost 直接通向。
* 代理容器的代码可以被其它业务组重用。
具体 Sidecar 案例:适配器容器
适配器容器将业务容器暴露出来的接口转换为另一种格式。
* 业务容器暴露监控接口 /metrics。
* 适配器容器将其转换为 /health 已适配新的监控系统。
Refer:[K8s] Kubernetes核心基础概念 Node, Pod, ReplicaSet, Deployment, Service, Ingress, ConfigMap