Context
将⼀个现有的 Pod 集成到 Kubernetes 的内置⽇志记录体系结构中(例如 kubectl logs)。 添加 streaming sidecar 容器是实现此要求的⼀种好⽅法。
Task
使⽤ busybox Image 来将名为 sidecar 的 sidecar 容器添加到现有的 Pod big-corp-app 中。 新的 sidecar 容器必须运⾏以下命令:
/bin/sh -c tail -n+1 -f /var/log/big-corp-app.log
使⽤挂载在 /var/log 的 Volume,使⽇志⽂件 big-corp-app.log 可⽤于 sidecar 容器。 除了添加所需要的 volume mount 以外,请勿更改现有容器的规格。
答案
编辑big-corp-app.yaml,如下
apiVersion: v1
kind: Pod
metadata:
name: big-corp-app
namespace: default
spec:
containers:
- args:
- /bin/sh
- -c
- "i=0; while true; do\n echo \"$(date) INFO $i\" >> /var/log/big-corp-app.log;\n
\ i=$((i+1));\n sleep 20;\ndone \n"
image: busybox
name: count
volumeMounts:
- name: varlog
mountPath: /var/log
- name: sidecar
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -F /var/log/big-corp-app.log']
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
emptyDir: {}
①:kubectl delete pod big-corp-app #删除园pod
②:kubectl apply -f big-corp-app.yaml #创建新pod
备注
参考链接:日志架构 | Kubernetes