与将每个容器放入其自己的 Pod 中相比,Multi-container Pods 的优势在于它们可以紧密地协同工作,并共享一些关键资源。
假设你有一个应用需要将日志写入到一个文件,并希望另一个容器将这些日志同步到外部存储。
apiVersion: v1
kind: Pod
metadata:
name: app-with-logging-sidecar
spec:
containers:
- name: main-app
image: main-app-image:v1
volumeMounts:
- name: log-volume
mountPath: /app/logs
- name: log-sidecar
image: log-shipping-image:v1
volumeMounts:
- name: log-volume
mountPath: /var/logs
volumes:
- name: log-volume
emptyDir: {}
在这个例子中,main-app
将日志写入到 /app/logs
,这些日志可以由 log-sidecar
容器访问,并可能同步到像 Elasticsearch 这样的日志存储中。
假设你有一个应用产生数据,但需要另一个容器来处理或转换这些数据,使其适合另一个应用使用。
apiVersion: v1
kind: Pod
metadata:
name: app-with-data-adapter
spec:
containers:
- name: data-producer
image: data-producer-image:v1
volumeMounts:
- name: data-volume
mountPath: /app/data
- name: data-adapter
image: data-adapter-image:v1
volumeMounts:
- name: data-volume
mountPath: /var/data
volumes:
- name: data-volume
emptyDir: {}
在这里,data-producer
将原始数据写入 /app/data
,data-adapter
会读取这些数据,处理它们,并将处理后的数据写回相同的路径。
这些案例展示了如何使用 Multi-container Pods 来构建协同工作的容器,它们可以共享资源并共同完成任务。