阿里云容器服务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
AI 代码解读

配置参数说明:

  • ${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)"
AI 代码解读

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

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
1
0
0
78391
分享
相关文章
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
64 16
突破极限: 高负载场景下的单机300M多行正则日志采集不是梦
在当今数字化时代,日志数据已成为企业 IT 运营和业务分析的关键资源。然而,随着业务规模的扩大和系统复杂度的提升,日志数据的体量呈现爆发式增长,给日志采集和处理系统带来了巨大挑战。
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
阿里云向全球客户推出创新容器计算服务ACS,可降低算力成本高达55%
阿里云向全球客户推出创新容器计算服务ACS,可降低算力成本高达55%
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
117 9

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等