深圳市住房和建设局网站首页,做自媒体网站,wordpress动画插件,企业seo外包题目内容 考点相关内容分析
日志架构
虽然 Kubernetes 没有为集群级日志记录提供原生的解决方案#xff0c;但是提供了以下几种方式收集容器日志#xff1a; 使用在每个节点上运行的节点级日志记录代理。 在每个节点上部署一个日志代理#xff0c;该代理负责收集节点上所有…题目内容 考点相关内容分析
日志架构
虽然 Kubernetes 没有为集群级日志记录提供原生的解决方案但是提供了以下几种方式收集容器日志 使用在每个节点上运行的节点级日志记录代理。 在每个节点上部署一个日志代理该代理负责收集节点上所有容器的日志并将它们发送到集中式的日志存储或分析系统中。 在应用程序的 Pod 中包含专门记录日志的边车Sidecar容器。 该方案是将日志记录功能与应用程序容器分离开来以确保日志记录不会影响应用程序的性能或稳定性并且使得日志记录的配置更加灵活和可控。
Sidecar 配置文件示例
apiVersion: v1
kind: Pod
metadata:name: counter # 设置 Pod 的名称为 counter
spec:containers:- name: count # 第一个容器的名称为 countimage: busybox:1.28 # 使用 BusyBox 1.28 镜像args: # 定义容器的启动参数- /bin/sh # 使用 shell 运行命令- -c- i0; while true; doecho $i: $(date) /var/log/1.log;echo $(date) INFO $i /var/log/2.log;i$((i1));sleep 1; done volumeMounts: # 挂载卷配置- name: varlog # 使用名为 varlog 的卷mountPath: /var/log # 将卷挂载到容器的 /var/log 目录下- name: count-agent # 第二个容器的名称为 count-agentimage: registry.k8s.io/fluentd-gcp:1.30 # 使用 Fluentd GCP 镜像env: # 定义环境变量- name: FLUENTD_ARGS # 环境变量名称为 FLUENTD_ARGSvalue: -c /etc/fluentd-config/fluentd.conf # 设置环境变量的值为 Fluentd 配置文件的路径volumeMounts: # 挂载卷配置- name: varlog # 使用名为 varlog 的卷mountPath: /var/log # 将卷挂载到容器的 /var/log 目录下- name: config-volume # 使用名为 config-volume 的卷mountPath: /etc/fluentd-config # 将卷挂载到容器的 /etc/fluentd-config 目录下volumes: # 卷配置- name: varlog # 名称为 varlog 的卷emptyDir: {} # 使用空目录作为卷该目录会在 Pod 重新启动时被清空- name: config-volume # 名称为 config-volume 的卷configMap: # 使用 ConfigMap 作为卷name: fluentd-config # ConfigMap 的名称为 fluentd-config将日志直接从应用程序中推送到日志记录后端。
题目操作步骤
标准步骤 进入题目指定集群
$ kubectl config use-context k8s导出 Pod 配置参数导出到 yaml 文件
$ kubectl get pod 11-factor-app -o yaml varlog.yaml根据题目要求编辑配置文件内容
$ cp varlog.yaml varlog.yaml.bak #备份配置参数
$ vim varlog.yamlspec:containers:- args:- /bin/sh- -c- |i0; while true; doecho $(date) INFO $i /var/log/11-factor-app.log;i$((i1));sleep 1;doneimage: busyboximagePullPolicy: IfNotPresentname: countresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /var/run/secrets/kubernetes.io/serviceaccountname: kube-api-access-gt98rreadOnly: true- name: varlog # 新增内容mountPath: /var/log # 新增内容- name: sidecar # 新增内容image: busybox # 新增内容imagePullPolicy: IfNotPresent # 新增内容args: [/bin/sh, -c, tail -n1 -f /var/log/11-factor-app.log] #新增内容volumeMounts: # 新增内容- name: varlog # 新增内容mountPath: /var/log # 新增内容dnsPolicy: ClusterFirstenableServiceLinks: truenodeName: node01nodeSelector:kubernetes.io/hostname: node01preemptionPolicy: PreemptLowerPrioritypriority: 0restartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}serviceAccount: defaultserviceAccountName: defaultterminationGracePeriodSeconds: 30tolerations:- effect: NoExecutekey: node.kubernetes.io/not-readyoperator: ExiststolerationSeconds: 300- effect: NoExecutekey: node.kubernetes.io/unreachableoperator: ExiststolerationSeconds: 300volumes:- name: varlog # 新增内容emptyDir: {} # 新增内容- name: kube-api-access-gt98rprojected:defaultMode: 420 重新编辑 Pod
$ kubectl delete pod 11-factor-app # 删除原 Pod
$ kubectl apply -f varlog.yaml检查命令
查看日志内容
# 日志内容不对扣四分
$ kubectl logs 11-factor-app sidecar参考链接https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/#sidecar-container-with-logging-agent