1.题目概述
- 添加一个sidecar容器(使用busybox镜像)到已有的pod 11-factor-app中
- 确保sidecar容器能够输出/var/log/11-factor-app.log的信息
使用volume挂载/var/log目录,确保sidecar能访问11-factor-app.log文件
2.解析
通过kubectl get pod -o yaml的方法将pod备份,删除旧pod 11-factor-app
- copy一份新的yaml文件,添加一个名为sidecar的容器
- 新建emptyDir的卷,确保两个容器都挂载了/var/log目录
- 新建含有sidecar的pod,并通过kubectl logs验证
3.参考答案
3.1.备份pod
kubectl get po 11-factor-app -o yaml > pod.yaml
3.2.修改yaml
apiVersion: v1
kind: Pod
metadata:
name: 11-factor-app
spec:
containers:
- name: 11-factor-app
image: busybox
args:
- /bin/sh
- -c
- >
i=0;
while true;
do
echo "$i: $(date)" >> /var/log/11-factor-app.log;
i=$((i+1));
sleep 1;
done
volumeMounts:
- name: varlog
mountPath: /var/log
- name: sidecar
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/11-factor-app.log']
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
emptyDir: {}
3.3.创建pod
https://kubernetes.io/docs/concepts/cluster-administration/logging/kubectl apply -f pod.yaml