阿里云容器服务K8S Ingress Controller日志采集实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Ingress作为所有集群服务请求的入口,其记录的请求日志对于整个请求跟踪链路至关重要,今天主要给大家分享下如何将K8S Ingress Controller日志采集到日志服务中,以便于检索分析服务请求情况。

Kubernetes Ingress 高可靠部署最佳实践 中从部署层面介绍了在Kubernetes集群中如何部署一套高可靠的Ingress接入层,同时Ingress作为所有集群服务请求的入口,其记录的请求日志对于整个请求跟踪链路至关重要,今天主要给大家分享下如何将K8S Ingress Controller日志采集到日志服务中,以便于检索分析服务请求情况。

环境准备

  1. 通过阿里云容器服务控制台申请K8S集群。
  2. 部署业务服务并配置Ingress对外提供访问。

采集到阿里云日志服务

当我们需要将Ingress Controller的日志采集到阿里云日志服务时,我们只需要简单通过下面几步即可完成:

  1. 部署Logtail DaemonSet
  2. 创建日志Project及配置机器组
  3. 配置容器采集配置LogtailConfig

详细说明可参考这里

步骤一:部署Logtail DaemonSet

注:如果您之前已经在集群中部署过Logtail DaemonSet则可跳过该步骤

curl http://logtail-release.oss-cn-hangzhou.aliyuncs.com/docker/k8s/logtail-daemonset.yaml > logtail-daemonset.yaml
  
# 依据自身环境修改下面配置项
vim logtail-daemonset.yaml
...
        env:
          - name: "ALIYUN_LOGTAIL_CONFIG"
            value: "/etc/ilogtail/conf/${your_region_name}/ilogtail_config.json"
          - name: "ALIYUN_LOGTAIL_USER_ID"
            value: "${your_aliyun_user_id}"
          - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
            value: "${your_machine_group_name}"
...

kubectl apply -f logtail-daemonset.yaml
daemonset "logtail" created

kubectl -n kube-system get pod | grep logtail
logtail-nbpl8                                                1/1       Running   0          52s
logtail-nr9hf                                                1/1       Running   0          52s

配置参数说明:

  • ${your_region_name}:K8S集群所在Regoin ID
  • ${your_aliyun_user_id}:阿里云UID
  • ${your_machine_group_name}:用户自定义标识,依据该值来配置机器组
步骤二:创建日志Project及配置机器组

注:如果您已经在对应Region创建了用于该K8S集群日志采集的Project且准备复用则可跳过该步骤

1、通过阿里云日志服务创建日志Project:
image
注:日志Project所在Region必须与K8S集群保持一致。

2、配置机器组:
image
注:这里选择用户自定义标识,同时其值必须与步骤一中Logtail DaemonSet YAML中的环境变量ALIYUN_LOGTAIL_USER_DEFINED_ID的值保持一致。

步骤三:配置容器采集配置LogtailConfig

1、创建LogStore:
注:可直接复用已经创建好的日志库
image

2、配置容器采集配置数据类型:
注:由于Ingress Controller日志是输出到Stdout,因此这里我们需要选择Docker标准输出
image

3、配置容器采集配置数据源:
image
更多配置参数可参考这里,这里表明需要采集容器Label中包含"io.kubernetes.container.name": "nginx-ingress-controller"的Stdout和Stderr日志。

4、配置关联机器组:
image

5、查看Ingress Controller请求日志:
通过Ingress访问集群内部服务,在日志库k8s-ingress-controller中查看采集到的Ingress Controller请求日志。
image

采集到自建ES

同样如果我们希望将K8S集群Pod日志采集到自建的Elasticsearch日志服务中,阿里云容器服务也提供了相应的解决方案,具体可参考 利用 log-pilot + elasticsearch + kibana 搭建 kubernetes 日志解决方案,这里主要说明如何配置采集Ingress Controller的日志到ES中。

步骤一:部署 log-pilot + elasticsearch + kibana 服务

注:如果您之前已经在集群中部署过 log-pilot + elasticsearch + kibana 服务则可跳过该步骤

部署详细说明可参考 利用 log-pilot + elasticsearch + kibana 搭建 kubernetes 日志解决方案

步骤二:配置容器日志采集配置

采集Ingress Controller的日志,我们需要添加日志采集配置:

vim nginx-ingress-controller-log-patch.yaml
spec:
  template:
    spec:
      containers:
        - name: nginx-ingress-controller
          env:
          # ingress-controller为索引名称
          - name: aliyun_logs_ingress-controller
            value: "stdout"
        
# 若您是通过Deployment部署的nginx-ingress-controller:
kubectl -n kube-system patch deployment nginx-ingress-controller --patch "$(cat nginx-ingress-controller-log-patch.yaml)"

# 若您是通过DaemonSet部署的nginx-ingress-controller:
kubectl -n kube-system patch ds nginx-ingress-controller --patch "$(cat nginx-ingress-controller-log-patch.yaml)"

经过上面两步,已经完成配置Ingress Controller日志采集到自建ES中,最后通过Ingress访问集群内部服务,在Kibana中查看采集到的Ingress Controller请求日志:
image

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
Kubernetes 搜索推荐 Docker
K8S容器运行时弃用Docker转型Containerd
K8S容器运行时弃用Docker转型Containerd
78 0
|
4天前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
10天前
|
测试技术 块存储 开发者
阿里云块存储团队软件工程实践
本文介绍了阿里云团队软件工程实际开发流程,并简述了开发过程中遇到的一些问题。且附带案例,以及遇到案例中出现的情况应当如何应对。
|
16天前
|
Kubernetes Ubuntu Linux
Kubernetes(K8S)集群管理Docker容器(部署篇)
Kubernetes(K8S)集群管理Docker容器(部署篇)
|
16天前
|
存储 Kubernetes Docker
Kubernetes(K8S)集群管理Docker容器(概念篇)
Kubernetes(K8S)集群管理Docker容器(概念篇)
|
16天前
|
Kubernetes Ubuntu Docker
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
|
25天前
|
SQL 运维 DataWorks
Flink CDC在阿里云DataWorks数据集成应用实践
本文整理自阿里云 DataWorks 数据集成团队的高级技术专家 王明亚(云时)老师在 Flink Forward Asia 2023 中数据集成专场的分享。
512 2
Flink CDC在阿里云DataWorks数据集成应用实践
|
1月前
|
消息中间件 SQL Java
阿里云Flink-自定义kafka format实践及踩坑记录(以protobuf为例)
阿里云Flink-自定义kafka format实践及踩坑记录(以protobuf为例)
|
2月前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
4月前
|
Kubernetes 容器
要获取ACK(阿里云容器服务)集群中的Deployment
要获取ACK(阿里云容器服务)集群中的Deployment【1月更文挑战第8天】【1月更文挑战第40篇】
65 4

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版