Kubernetes集群日志

阿里云为Kubernetes集群提供了系统日志,用户日志和容器实时日志三种类型日志,其中系统日志和用户日志与日志服务进行了集成,方便用户多维度查询,检索与分析,为日常运维和管理提供了有效的支持。

阿里云Kubernetes集群作为托管集群,Master节点上的服务例如kube-apiserver,kube-controller-manager都是以托管形式运行的。用户在实际管理自己的kubernetes业务时,都是通过Kubernetes API server来执行的。为此提供了系统日志功能来帮助用户更好地了解Kubernetes集群运行状态。

查看系统日志

系统日志不需要用户在Kubernetes集群做任何操作,默认所有新建Kubernetes集群会将系统日志发送到日志服务后端。用户可以随时在日志服务中查看。具体操作步骤如下

进入日志集管理页面,选择已购买的日志集,点击“查看”按钮,进入日志详情页面,选择采集配置“未配置”状态日志主题,点击“采集配置”按钮,进入采集配置页面。点击“添加采集配置”按钮,进入添加采集配置页面.选择所属产品 (Kubernetes集群)、日志类型 (系统日志),采集服务器“全部服务器”或 “选择服务器”,点击“保存”即完成采集配置的设置。全部服务器:用户该产品所有区域的全部服务器都进行采集,包括后续新增的服务器都将自动采集。选择服务器:选择部分服务器,可将你关注的服务器进行采集,最多可添加20个服务器。
关于日志服务的更多操作细节可以访问日志服务帮助文档系统日志模块

系统日志包含以下模块

模块名称描述kube-apiserverKubernetes API serverkube-proxy-masterMaster节点上的网络代理服务kube-schedulerKubernetes调度器kube-controller-manager管理控制器scheduler-extender调度器扩展etcd提供Kubernetes元数据存储dockerddocker daemonkubelet管理节点上的容器的服务系统日志Metadata含义字段名含义cluster_id集群idregion_id地域idsource日志文件名称stream输出设备severity日志级别time日志时间戳file采集日志的模块名称originalMsg日志原文appName应用标识container_image容器镜像container_name容器名称host主机名namespace_name命名空间名称pod_idpod idpod_namepod名称用户日志

用户日志功能打开后,部署在工作节点上的agent会采集所有运行在工作节点组上的容器内标准输出的日志并转发到日志服务端,用户可以在日志服务端查询分析相关日志。

购买支持用户日志的Kubernetes集群

1.登录控制台,在左侧菜单选择【弹性计算】-【Kubernetes集群】,点击进入Kubernetes集群列表页;
2.点击【购买】按钮,进入集群购买页面;
3.在集群信息中,确定开启日志服务;
4.完成其他集群必填信息配置后,点击【确定】按钮进入集群购买流程;
5.对应集群的日志服务集k8s-log-{ClusterID}会自动购买,ClusterID 表示新建的 Kubernetes 集群的唯一标识

开启关闭Kubernetes集群用户日志

集群购买完成后,你可以在控制台关闭或重新开启集群用户日志。集群用户日志关闭后,已存储的日志不受影响,重新打开后,新的日志会继续发送到对应的日志集。

1.登录控制台,在左侧菜单选择【弹性计算】-【Kubernetes集群】-【集群名称】,点击进入Kubernetes集群详情页;
2.在详情页选择日志服务,点击关闭或开启Kubernetes集群用户日志;

查看用户日志

用户开启Kubernetes集群日志服务后,对应集群的日志服务集k8s-log-{ClusterID}会自动购买,用户可以在日志服务中查看。

1.登录阿里云控制台,在左侧菜单选择【管理】-【日志服务】,进入日志集管理页面。
2.选择Kubernetes集群所对应的地域,在日志集列表中找到名称为k8s-log-{ClusterID}的日志集,ClusterID 表示新建的 Kubernetes 集群的唯一标识。
3.点击日志集进入日志主题页面,选择希望查看的日志主题,点击检索进行查看。

关于日志服务的更多操作细节可以访问日志服务帮助文档

用户日志Metadata含义字段名含义pin用户标识logtopicUID日志主题IDstream输出设备timestamp日志时间az可用区cluster_id集群IDcontainer_name容器名称host_namenode节点主机名instance_idnode节点虚机idinstance_namenode节点虚机名称logtype日志类型{系统,用户}namespace_name命名空间名称object_namek8s对象名称,如pod nameregion_id地域serverity日志级别source日志文件名称content日志原文用户日志采集Agent限制说明

文件采集限制

分类限制说明分类限制说明文件编码utf-8日志文件大小max size=100MB日志文件轮转max files=5日志解析阻塞时采集行为丢弃软链接支持单条日志大小max size=32k同一文件对应多个采集配置不支持文件打开行为单写多读首次日志采集行为有db保存Pos, 会从新偏移采集日志非标准文本日志不支持

资源、性能限制

分类限制说明日志处理吞吐能力单节点2MB/s监控目录数2个根目录监控文件数k8s 最大Pod数目 X Pod中最大容器数默认资源限制后端限制

错误处理限制

分类限制说明网络错误处理有限重试资源配额超限处理监控报警超时最大尝试时间5s网络错误处理有限重试其他限制

1.目前用户日志暂不支持定制化采集,打开日志服务后,默认所有用户容器内标准输出的内容都会被采集。用户在部署业务时,可以将业务日志重定向到stdout stderr
2.不支持sidecar模式
3.不支持在非阿里云托管集群运行日志采集agent
4.1.8版本的Kubernetes托管集群不支持日志功能,建议用户尽快升级到更新的版本

容器实时日志

除了系统日志和用户日志,Kubernetes集群还提供控制台功能查看容器实时日志,类似于kubectl logs。

查看容器实时日志

1.登录控制台,在左侧菜单选择【弹性计算】-【Kubernetes集群】-【Workloads】-【Pod】,点击进入Pod详情页;
2.在详情页tab栏选择【Container】进入容器列表,选择要查看的容器点击进入Container详情页
3.在Container详情页tag栏选择【日志】,进入容器日志页面
4.在容器日志页面中,选择容器,时间间隔,日志输出行数和最大日志字节数,点击【查询】既可以在下方窗口看到容器日志