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

    1. kubectl get po 11-factor-app -o yaml > pod.yaml

    3.2.修改yaml

    1. apiVersion: v1
    2. kind: Pod
    3. metadata:
    4. name: 11-factor-app
    5. spec:
    6. containers:
    7. - name: 11-factor-app
    8. image: busybox
    9. args:
    10. - /bin/sh
    11. - -c
    12. - >
    13. i=0;
    14. while true;
    15. do
    16. echo "$i: $(date)" >> /var/log/11-factor-app.log;
    17. i=$((i+1));
    18. sleep 1;
    19. done
    20. volumeMounts:
    21. - name: varlog
    22. mountPath: /var/log
    23. - name: sidecar
    24. image: busybox
    25. args: [/bin/sh, -c, 'tail -n+1 -f /var/log/11-factor-app.log']
    26. volumeMounts:
    27. - name: varlog
    28. mountPath: /var/log
    29. volumes:
    30. - name: varlog
    31. emptyDir: {}

    3.3.创建pod

    1. kubectl apply -f pod.yaml
    https://kubernetes.io/docs/concepts/cluster-administration/logging/