Sidecar 容器
·
1. 什么是 Sidecar 容器
Sidecar 是 Kubernetes 里一种常见的设计模式。它和主容器(这里是 httpd)共享同一个 Pod。它们可以共享网络、存储等资源,通常用来为主容器提供辅助功能,比如日志收集、配置注入、流量代理等。
在这个例子里,busybox 就是典型的 Sidecar 容器。
2. 配置逐段解析
🎯 整体结构
kind: Pod
metadata:
name: sidecarpod
spec:
containers:
- name: httpd # 主容器(Web服务)
...
- name: busybox # Sidecar容器(内容注入)
...
volumes: # 共享存储卷
- name: sidecarvolume
emptyDir: {}
🚀 主容器 httpd
- 镜像:
httpd(Apache HTTP Server),用来提供 Web 服务。 - 挂载卷:把
sidecarvolume挂载到/usr/local/apache2/htdocs/,这是 Apache 默认的网页根目录。 - 作用:负责对外提供 HTTP 访问服务,展示网页内容。
🛠️ Sidecar 容器 busybox
- 镜像:
busybox(一个轻量级的 Linux 工具集)。 - 启动命令:
这个命令会在共享目录里创建一个command: ['sh', '-c', 'echo "Hello Sidecar!" > /usr/local/apache2/htdocs/index.html && sleep 3600']index.html文件,内容是Hello Sidecar!,然后让容器休眠 1 小时,保持运行状态。 - 挂载卷:同样挂载
sidecarvolume到/usr/local/apache2/htdocs/,和主容器共享同一个目录。 - 作用:通过共享存储,动态为主容器注入网页内容,而无需修改主容器本身。
📦 共享存储 sidecarvolume
- 类型是
emptyDir,这是一个临时目录,Pod 启动时创建,Pod 删除时销毁。 - 两个容器通过它实现了文件共享,Sidecar 生成的网页文件可以被主容器直接读取并对外提供服务。
3. 工作流程
- Pod 启动时,会创建
emptyDir类型的sidecarvolume。 busybox容器启动,执行命令生成index.html并写入共享目录,然后休眠。httpd容器启动,从共享目录读取index.html,并通过 HTTP 端口对外提供访问。- 当你访问
httpd服务时,就能看到Hello Sidecar!这个内容。
4. 设计优势
- 解耦:主容器专注于核心的 Web 服务,Sidecar 负责内容注入,职责清晰。
- 复用:Sidecar 可以被多个 Pod 复用,无需在每个主容器里重复实现相同功能。
- 共享资源:通过
emptyDir实现文件共享,避免了网络传输,性能更高。
更多推荐
所有评论(0)