题目
分析
添加一个名为busybox且镜像为busybox的sidecar到一个已经存在的名为legacy-app的Pod上,这个sidecar的启动命令为
/bin/sh, -c, 'tail -n+1 -f /var/log/legacy-app.log'
并且这个sidecar和原有的镜像挂载一个名为logs的volume,挂载的目录为/var/log/
命令
环境搭建
legacy-app.yaml
apiVersion: v1 kind: Pod metadata: name: legacy-app spec: containers: - name: count image: busybox args: - /bin/sh - -c - > i=0; mkdir -p /var/log && touch /var/log/legacy-app.log; while true; do echo "$(date) INFO $i" >> /var/log/legacy-app.log; i=$((i+1)); sleep 1; done
kubectl create -f legacy-app.yaml
解题
添加sidecar和volumes
sidecar.yaml
apiVersion: v1 kind: Pod metadata: name: legacy-app spec: containers: - name: count image: busybox args: - /bin/sh - -c - > i=0; mkdir -p /var/log && touch /var/log/legacy-app.log; while true; do echo "$(date) INFO $i" >> /var/log/legacy-ap.log; i=$((i+1)); sleep 1; done volumeMounts: - name: logs mountPath: /var/log - name: busybox image: busybox args: [/bin/sh, -c, 'tail -n+1 -f /var/log/legacy-app.log'] volumeMounts: - name: logs mountPath: /var/log volumes: - name: logs emptyDir: {}
命令
kubectl delete po legacy-app kubectl create -f sidecar.yaml
结果校验
kubectl logs legacy-app busybox
结果
总结:通过sidecar的方式,在Pod中起了一个容器busybox,在不影响legacy-app容器的情况下,读出了日志文件的内容,输出到标准输出。