前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s01# K8s日志采集与服务质量QoS

k8s01# K8s日志采集与服务质量QoS

作者头像
瓜农老梁
发布2022-12-03 09:23:38
4060
发布2022-12-03 09:23:38
举报
文章被收录于专栏:瓜农老梁瓜农老梁

引言

应用容器化后的日志采集该选择何种方式?该如何权衡?不同的服务质量QoS对Node的稳定性影响是怎么样的,本文就捋一捋这个。主要内容有:

  • 日志采集三种方式
  • 日志采集方式权衡
  • Pod服务质量QoS

一、日志采集三种方式

K8s日志采集方式主要有原生方式、DaemonSet采集方式、Sidecar采集方式。

原生方式,日志写入标准输出和标准错误流,可通过 kubectl logs 命令查看输出,如下图。

通过日志轮替工具logrotate实现日志分割、压缩、删除、以及创建新的日志文件。

DaemonSet采集方式,在k8s的node节点上运行日志代理,由日志代理将日志采集到后端服务。

SideCar采集方式,在一个POD中运行一个单独的日志采集代理容器,用于采集容器的日志。

官方也说明了SideCar会带来更多的资源损耗,日志没有被kubelet接管,不能使用kubectl logs访问日志。

小结:基于官方提供的采集方式,是应该选择DaemonSet还是SideCar呢?如何权衡?

官方日志管理说明文档:

代码语言:javascript
复制
https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/

二、日志采集方式权衡

资源占用 ,SideCar采集模式每个POD运行一个日志代理容器,DaemonSet则是Node运行一个日志代理。

因此,DaemonSet会更充分共享资源,SideCar模式会占用更多的资源。

运维难度,如果业务POD内已经拥有多种辅助容器比如安全、链路等,再增加日志采集容器,POD中容器数量将会增加。

因此,众多SideCar容器要比DaemonSet增加更多的运维投入。

隔离情况,DaemonSet的日志代理,可以配置不同应用的采集路径配置,SideCar一对一单向定制。

因此,总的来说SideCar隔离性更好些。

集群规模,SideCar没有限制,DaemonSet模式实际支持的应用数与场景有关系,大体范围在几百到千级别。

因此,集群规模更多日志代理采集的能力是否跟得上的问题。

升级问题,DaemonSet模式日志采集升级业务无感知,SideCar模式的升级可能导致业务POD的重建,POD的重建还是对业务有感知。

因此,DaemonSet模式对业务更为透明无感。

如果想SideCar采集模式业务无感,可以使用OpenKruise提供的SidecarSet管理sidecar容器。

SidecarSet负责注入和升级k8s集群的sideCar容器,对业务无感。

小结:在日志采集代理能力能满足需求的情况下,DaemonSet模式在运维复杂性、资源节省、升级方面更好的选择。

三、Pod服务质量QoS

K8s使用服务质量QoS来决定Pod的调度和驱逐策略。

QoS分为三类,Guaranteed、Burstable、BestEffort。

Guaranteed类的POD,该POD中的每个容器内存和CPU必须指定,而且request和limit必须相等。

Burstable类的POD,POD里至少一个容器的内存或者CPU请求不满足Guaranteed要求,request和limit设置的不相同。

BestEffort类的POD, 容器没有设置内存和CPU的request或limit。

优先级Guaranteed>Burstable>BestEffort。

K8s资源回收驱逐策略,当Node上的内存或者CPU耗尽时,为了保护Node会驱逐POD,优先级低的POD会优先被驱逐。

日志采集类filebeat、ilogtail等类型的POD适合使用Burstable或者BestEffort。

小结:为了Node的稳定性,日志采集类的POD设置为BestEffort类型的QoS更为安全。

官方Pod 的服务质量文档

代码语言:javascript
复制
https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/quality-service-pod/
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜农老梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档