Kubernetes 集群日志基础
服务器和应用程序日志记录是开发人员、运维人员和安全团队了解应用程序在其生产环境中运行状态的重要工具。
日志记录使运维人员能够确定应用程序和所需组件是否运行平稳,并检测是否发生了异常情况,以便他们能够对这种情况做出反应。
对于开发人员,日志记录提供了在开发期间和之后对代码进行故障排除的可见性。在生产环境中,开发人员通常依赖于没有调试工具的日志记录工具。在加上系统的日志记录,开发人员可以与运维人员携手合作,有效地解决问题。
日志记录工具最重要的受益者是安全团队,尤其是在云原生的环境中。能够从应用程序和系统日志中收集信息使得安全团队能够分析来自身份验证、应用程序访问恶意软件活动的数据,并在需要时进行响应。
Kubernetes 是领先的容器平台,越来越多的应用程序通过 Kubernetes 部署到生产环境。我相信了解 Kubernetes 的日志架构是一项非常重要的工作,每个开发、运维和安全团队都需要认真对待。
在本文中,我将讨论 Kubernetes 中不同容器日志记录模式的工作原理。
系统日志记录和应用日志记录
在深入研究 Kubernetes 日志记录架构之前,我想探索不同的日志记录方法以及这两种功能如何成为 Kubernetes 日志记录的关键特性。
有两种类型的系统组件:在容器中运行的组件和不在容器中运行的组件。例如:
Kubernetes 调度者和 kube-proxy 运行在容器中。 kubelet 和容器运行时不在容器中运行。
与容器日志类似,系统容器日志存储在 /var/log 目录中,你应该定期轮换它们。
在这里,我研究的是容器日志记录。首先,我看一下集群级别的日志记录以及为什么它对集群运维人员很重要。集群日志提供有关集群如何执行的信息。诸如为什么 吊舱Pod 被下线或节点死亡之类的信息。集群日志记录还可以捕获诸如集群和应用程序访问以及应用程序如何利用计算资源等信息。总体而言,集群日志记录工具为集群运维人员提供操作集群和安全有用的信息。
捕获容器日志的另一种方法是通过应用程序的本机日志记录工具。现代应用程序设计很可能具有日志记录机制,可帮助开发人员通过标准输出 (stdout) 和错误流 (stderr) 解决应用程序性能问题。
为了拥有有效的日志记录工具,Kubernetes 实现需要应用程序和系统日志记录组件。
Kubernetes 容器日志的 3 种类型
如今,在大多数的 Kubernetes 实现中,你可以看到三种主要的集群级日志记录Ku方法。
节点级日志代理 用于日志记录的挎斗Sidecar容器应用程序 将应用程序日志直接暴露给日志后端 节点级日志代理
我想考虑节点级日志代理。你通常使用 DaemonSet 作为部署策略来实现这些,以便在所有 Kubernetes 节点中部署一个吊舱(充当日志代理)。然后,该日志代理被配置为从所有 Kubernetes 节点读取日志。你通常将代理配置为读取节点 /var/logs 目录捕获 stdout/stderr 流并将其发送到日志记录后端存储。
下图显示了在所有节点中作为代理运行的节点级日志记录。
Node-level logging agent
以使用 fluentd 方法为例设置节点级日志记录,你需要执行以下操作:
(1) 首先,你需要创建一个名为 fluentdd 的服务账户。Fluentd 吊舱使用此服务账户来访问 Kubernetes API,你需要在日志命名空间中使用标签 app: fluentd 创建它们:
#fluentd-SA.yaml apiVersion: v1 kind: ServiceAccount metadata: name: fluentd namespace: logging labels: app: fluentd
你可以在此 仓库 中查看完整示例。
(2) 接着,你需要创建一个名称为 fluentd-configmap 的 ConfigMap。这为 fluentd daemonset 提供了一个配置文件,其中包含所有必需的属性。
#fluentd-daemonset.yaml apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: fluentd namespace: logging labels: app: fluentd &nbbesp; kubernetes.io/cluster-service: "true" spec: selector: matchLabels: app: fluentd kubernetes.io/cluster-service: "true" template: metadata: labels: app: fluentd kubernetes.io/cluster-service: "true" spec: serviceAccount: fluentd containers: - name: fluentd image: fluent/fluentd-kubernetes-daemonset:v1.7.3-debian-elasticsearch7-1.0 env: &nrnbsp; - name: FLUENT_ELASTICSEARCH_HOST value: "elasticsearch.logging.svc.cluster.local" - name: FLUENT_ELASTICSEARCH_PORT value: "9200" - name: FLUENT_ELASTICSEARCH_SCHEME value: "http" - name: FLUENT_ELASTICSEARCH_USER value: "elastic" - name: FLUENT_ELASTICSEARCH_PASSWORD  et; valueFrom: secretKeyRef: name: efk-pw-elastic key: password - name: FLUENT_ELASTICSEARCH_SED_DISABLE value: "true" resources: limits: memory: 512Mi requests: cpu: 100m &nesbsp; memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true - name: fluentconfig mountPath: /fluentd/etc/fluent.conf subPath: fluent.conf terminationGracePeriodSeconds: 30 & 集nbsp; volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers - name: fluentconfig configMap: name: fluentdconf
你可以在此 仓库 中查看完整示例。
现在,我们来看看如何将 fluentd daemonset 部署为日志代理的代码。
#fluentd-daemonset.yaml apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: fluentd namespace: logging labels: app:群日 fluentd kubernetes.io/cluster-service: "true" spec: selector: matchLabels: app: fluentd kubernetes.io/cluster-service: "true" template: metadata: labels: app: fluentd kubernetes.io/cluster-service: "true" spec: serviceAccount: fluentd containers: - name: fluentd image: fluent/fluentd-kubernetes-daemonset:v1.7.3-debian-elasticsearch7-1.0  志基;env: - name: FLUENT_ELASTICSEARCH_HOST value: "elasticsearch.logging.svc.cluster.local" - name: FLUENT_ELASTICSEARCH_PORT value: "9200" - name: FLUENT_ELASTICSEARCH_SCHEME value: "http" - name: FLUENT_ELASTICSEARCH_USER value: "elastic" - name: FLUENT_ELASTICSEARCH_PASSWORD Ku valueFrom: secretKeyRef: name: efk-pw-elastic key: password - name: FLUENT_ELASTICSEARCH_SED_DISABLE value: "true" resources: limits: memory: 512Mi requests: &benbsp; cpu: 100m memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true - name: fluentconfig mountPath: /fluentd/etc/fluent.conf subPath: fluent.conf terminationGracePeriodSeconds: 30rn volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers - name: fluentconfig configMap: name: fluentdconf
将这些放在一起执行:
kubectl apply -f fluentd-SA.yaml -f fluentd-configmap.yaml &nbetsp; -f fluentd-daemonset.yaml 用于日志记录的挎斗容器应用程序
另一种方法是使用带有日志代理的专用挎斗容器。容器最常见的实现是使用 Fluentd 作为日志收集器。在企业部署中(你无需担心一点计算资源开销),使用 fluentd(或类似)实现的挎斗容器提供了集群级日志记录的灵活性。这是因为你可以根据需要捕获的日志类型、频率和其它可能的调整来调整和配置收集器代理。
下图展示了作为日志代理的挎斗容器。
Sidecar container as logging agent例如,一个吊舱运行单个容器,容器使用两种不同的格式写入两个不同的日志文件。吊舱的配置文件如下:
#log-sidecar.yaml apiVersion: v1 kind: Pod metadata: name: counter spec: containers: - name: count image: busybox args: - /bin/sh - -c - > i=0; while true; do echo "$i: $(date)" >> /var/log/1.log; &nbessp; echo "$(date) INFO $i" >> /var/log/2.log; i=$((i+1)); sleep 1; done volumeMounts: - name: varlog mountPath: /var/log - name: count-log image: busybox args: [/bin/sh, -c, 'tail -n+1 -f /var/log/1.log'] volumeMounts: - name: varlog mountPath: /var/log volumes: - name: varlog emptyDir: {}
把它们放在一起,你可以运行这个吊舱:
$ kubectl apply -f log-sidecar.yaml
要验 集证挎斗容器是否用作日志代理,你可以执行以下操作:
$ kubectl logs counter count-log
预期的输出如下所示:
$ kubectl logs counter count-log-1 Thu 04 Nov 2021 09:23:21 NZDT Thu 04 Nov 2021 09:23:22 NZDT Thu 04 Nov 2021 09:23:23 NZDT Thu 04 Nov 2021 09:23:24 NZDT 将应用程序日志直接暴露给日志后端
第三种方法(在我看来)是 Kubernetes 容器和应用程序日志最灵活的日志记录解决方案,是将日志直接推送到日志记录后端解决方案。尽管此模式不依赖于原生 Kubernetes 功能,但它提供了大多数企业需要的灵活性,例如:
扩展对网络协议和输出格式的更广泛支持。 提供负载均衡能力并提高性能。 可配置为通过上游聚合接受复杂的日志记录要求。
因为这第三种方法通过直接从每个应用程序推送日志来依赖非 Kubernetes 功能,所以它超出了 Kubernetes 的范围。
结论
Kubernetes 日志记录工具是企业部署 Kubernetes 集群的一个非常重要的组件。我讨论了三种可能的可用模式。你需要找到适合你需求的模式。
如上所述,使用 daemonset 的节点级日志记录是最容易使用的部署模式,但它也有一些限制,可能不适合你的组织的需要。另一方面,挎斗 模式提供了灵活性和自定义,允许你自定义要捕获的日志类型,但是会提高计算机的资源开销。最后,将应用程序日志直接暴露给后端日志工具是另一种允许进一步定制的诱人方法。
选择在你,你只需要找到适合你组织要求的方法。
(责任编辑:办公采购)
-
近日,夸克正式发布健康大模型技术报告《QuarkMed Technical Report》,首次公开了“主任医师级”能力的技术实现细节。 QuarkMed Technical Report 此前,夸克...[详细]
-
云梦级2月7日云梦级消息,鹿客科技(北京)股份有限公司(以下简称“鹿客科技”)于2026年2月6日正式向港交所递交招股说明书,拟主板挂牌上市,中国银河国际担任独家保荐人。 成立于2014年的鹿客科技专...[详细]
-
日本人工智能的发展越来越成熟,现在日本正在开发“人工智能主播(AI主播)”的技术,希望能做到24小时不停地播报新闻,即使遇到自然灾害等因素的影响,也能保持资讯的传播。 现在日本各地的电台和电视台也正在...[详细]
-
云梦级4月7日云梦级消息,携程集团今日宣布,将于 2026 年 5 月 1 日起,在部分业务部门启动为期一年的“无理由事假”管理实验。 据了解,本次实验采用随机对照的研究方法。约 6000 名员工将被...[详细]
-
突发福利!AI Studio 彻底免费开放,Pro/Ultra会员可畅玩Gemini Pro等顶级模型
谷歌再次向全球 AI 开发者与爱好者抛出重磅福利。据 AIbase 最新整理的信息,谷歌 AI Studio 已正式开放免费使用通道。只要持有 Google AI Pro 或 Ultra 会员,即可直...[详细]
-
Hello,大家早上好,又是元气满满的一天,先来浏览新鲜的早报吧~ 【全国首批 L3 级自动驾驶专用号牌亮相】 北汽极狐阿尔法 S(L3 版)完成京 AA0001Z、京 AA0733Z、京 AA088...[详细]
-
蚂蚁发布万亿参数语言模型 Ling-1T,推理速度与能力引领行业新标杆
近日,蚂蚁集团正式推出其首款旗舰语言模型 ——Ling-1T,参数数量高达一万亿,成为国产开源模型中的一大亮点。Ling-1T 不仅在各类推理任务中表现出色,还在代码生成、数学计算和逻辑推理等多个领域...[详细]
-
保温杯盖里面是泡沫健康吗?如果纯净水存放时间太长了,使其水变质了,倒入,这样的水是不可以喝的,会对健康造成危害,容易造成肠胃的疾病,出现腹痛、。水杯壁很多气泡能喝吗-业百科如果是加工过程中材质不均匀...[详细]
-
MiniMax Music 1.5上线 生成音乐时长提升至4分钟
9月12日,MiniMax发布了新一代音乐生成模型Music1.5,这一模型标志着AI音乐创作的新突破,开启了“一人即乐队”的新时代。Music1.5不仅将生成音乐的时长提升至4分钟,还具备四大新突破...[详细]
-
如今学习应用数据可视化的渠道有很多,你可以跟踪一些专家博客,但更重要的一点是实践/实操,你必须对目前可用的数据可视化工具有个大致了解。 下面列举的二十个数据可视化工具,无论你是准备制作简单的图表还是复...[详细]
- https://www.youtube.com/hashtag/谷歌霸屏技术【tg:seogoogle987】,Dwd
- https://www.woorden.org/spreekwoord.php?woord=谷歌霸屏技术【tg:seogoogle987】,o64
- https://www.urmc.rochester.edu/news/search?q=谷歌霸屏技术【tg:seogoogle987】,n2t
- https://www.voices.com/talents/search?keywords=谷歌霸屏技术【tg:seogoogle987】,ZEN
- https://www.valuecolleges.com/?action=QUERY&s=谷歌霸屏技术【tg:seogoogle987】,cVA
- https://www.teamlab.art/?submit=谷歌霸屏技术【tg:seogoogle987】,iCS
- https://www.rockngem.com/?action=CHECK&s=谷歌霸屏技术【tg:seogoogle987】,o9o
- https://www.zisha.com/shop/list.shtml?wap_keyword=谷歌霸屏技术【tg:seogoogle987】,VmX
- https://www.smics.com/tc/site/search?token=谷歌霸屏技术【tg:seogoogle987】,6p2
- https://www.navymwr.org/search/?query=谷歌霸屏技术【tg:seogoogle987】,2LH

编程零基础秒出专业H5!豆包AI编程史诗级升级:PPT式拖拽+多Agent全自动协作,产品经理也能当全栈!
字节跳动推出豆包翻译大模型:28种语言互译,比肩GPT-4o
标签: 快手 第三季度财报 AI战略 电商GMV
标签: 火龙漫剧 Seedance2.0 AI漫剧 字节跳动
重磅!挑战谷歌的AI新星Perplexity估值飙升,两月内再获2亿美元巨额融资
