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: v1kind: Podmetadata:name: 11-factor-appspec:containers:- name: 11-factor-appimage: busyboxargs:- /bin/sh- -c- >i=0;while true;doecho "$i: $(date)" >> /var/log/11-factor-app.log;i=$((i+1));sleep 1;donevolumeMounts:- name: varlogmountPath: /var/log- name: sidecarimage: busyboxargs: [/bin/sh, -c, 'tail -n+1 -f /var/log/11-factor-app.log']volumeMounts:- name: varlogmountPath: /var/logvolumes:- name: varlogemptyDir: {}
3.3.创建pod
https://kubernetes.io/docs/concepts/cluster-administration/logging/kubectl apply -f pod.yaml
