15、添加 Sidecar 容器并输出⽇志
1. 考题内容:
2. 答题思路:
查看运行的11-factor-app名字的pod并生成yaml文件
删除正在运行的11-factor-app名字的pod
添加题目要求的sidecar容器和存储卷,并挂载在两个容器中
重新运行yaml文件创建pod
修改yaml文件是注意空格和位置
3. 官网地址:
https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/
4. 考题答案:
切换环境
kubectl config use-context k8s
# 1).导出11-factor-app的yaml文件
kubectl get pod 11-factor-app -o yaml > sidecar.yaml
# 2).备份sidecar.yaml
cp sidecar.yaml sidecar_bak.yaml
# 3).删除运行的11-factor-app
kubectl delete -f sidecar.yaml
# 4).编辑sidecar.yaml添加以下信息
- name: varlog
mountPath: /var/log
- name: sidecar
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/11-factor-app.log']
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
emptyDir: {}
# 5).重新创建11-factor-app
kubectl apply -f sidecar.yaml
真实考题示例
apiVersion: v1
kind: Pod
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration:
......
creationTimestamp:
name: legacy-app
namespace: default
resourceVersion: "4567"
uid: ......
spec:
containers:
- env:
- name: LOG_FILENAME
value: /var/log/legacy-app
image:
imagePullPolicy: Always
name: monitor
resources: {}
terminationMessagePath: /dev/termination-1og
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-2v2fg
read0nly: true
- name: varlog
mountPath: /var/log
- name: sidecar
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
nodeName: k8s-node2
preemptionPolicy: PreemptLowerPriority
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
- name: kube-api-access-2vzfg
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: {}
status:
......
5. 验证:
# 1).查看11-factor-app 的容器数量是否是2个
kubectl get po 11-factor-app
# 2).查看11-factor-app 的日志文件
kubectl logs 11-factor-app -c sidecar