文章目录
- 13、使用 sidecar 代理容器日志
- 题目:
- 考点:
- 参考链接:
- 解答:
- 更换 context
- 获取 pod yaml
- 修改 yaml
- 创建 pod
- 检查
13、使用 sidecar 代理容器日志
题目:
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Context
将一个现有的 Pod 集成到 Kubernetes 的内置日志记录体系结构中(例如 kubectl logs)。 添加 streaming sidecar 容器是实现此要求的一种好方法。
Task
使用 busybox Image 来将名为 sidecar 的 sidecar 容器添加到现有的 Pod 11-factor-app 中。 新的 sidecar 容器必须运行以下命令:
/bin/sh -c tail -n+1 -f /var/log/11-factor-app.log
使用挂载在/var/log 的 Volume,使日志文件 11-factor-app.log 可用于 sidecar 容器。 除了添加所需要的 volume mount 以外,请勿更改现有容器的规格。
考题翻译成白话,就是:
添加一个名为 sidecar 的边车容器(使用 busybox 镜像),加到已有的 pod 11-factor-app 中。 确保 sidecar 容器能够输出 /var/log/11-factor-app.log 的信息。
使用 volume 挂载 /var/log 目录,确保 sidecar 能访问 11-factor-app.log 文件
考点:
pod 两个容器共享存储卷
参考链接:
(需要复制网页内容)
依次点击 Concepts → Cluster Administration → Logging Architecture (看不懂英文的,可右上角翻译成中文)
https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/
解答:
更换 context
$ kubectl config use-context k8s
获取 pod yaml
$ kubectl get pod 11-factor-app -o yaml > varlog.yaml
# 备份 yaml 文件,防止改错了,回退。
$ cp varlog.yaml varlog-bak.yaml
修改 yaml
spec:
。。。。。。
volumeMounts: #在原配置文件,灰色的这段后面添加
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-4l6w8
readOnly: true
- name: varlog #新加内容
mountPath: /var/log #新加内容
- name: sidecar #新加内容,注意 name 别写错了
image: busybox #新加内容
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/11-factor-app.log'] #新加内容,注意 文件名 别写错了。另外是用逗号分隔的,而题目里是空格。
volumeMounts: #新加内容
- name: varlog #新加内容
mountPath: /var/log #新加内容
dnsPolicy: ClusterFirst
enableServiceLinks: true
。。。。。。
volumes: #在原配置文件,灰色的这段后面添加。
- name: kube-api-access-kcjc2
projected:
defaultMode: 420
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
- downwardAPI:
items:
- fieldRef: apiVersion: v1
fieldPath: metadata.namespace
path: namespace
- name: varlog #新加内容,注意找好位置。
emptyDir: {} #新加内容
创建 pod
$ kubectl delete -f varlog.yaml
$ kubectl createe -f varlog.yaml
检查
$ kubectl exec 11-factor-app -c sidecar -- tail -f /var/log/11-factor-app.log
$ kubectl exec 11-factor-app -c count -- tail -f /var/log/11-factor-app.log