`
大涛学长
  • 浏览: 110752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

系列文章:云原生Kubernetes日志落地方案

阅读更多

前言
第一次听到Kubernetes的名字是在16年,那个时候Kubernetes还处于和Docker Swarm、Mesos方案的“三国鼎立时代”,Kubernetes由于一系列优势(可扩展、声明式接口、云友好)在这一竞争中崭露头角,最终获得统治地位。Kubernetes作为CNCF最核心的项目(没有之一),是Cloud Native(云原生)落地的底座,目前阿里已经全面基于Kubernetes在开展全站的云原生改造,在1-2年内,阿里巴巴100%的业务都将跑在公有云上。

CloudNative在CNCF的定义的核心是:在公有云、私有云、混合云等环境中,通过Containers、Service Meshes、 MicroServices、Immutable Infrastructure、Declarative APIs构建和运行可弹性扩展的且具有高容错性、易于管理、可观察、松耦合的应用系统。可观察性是应用系统必不可少的一个部分,云原生的设计理念中就有一条:面向诊断性设计(Diagnosability),包括集群级别的日志、Metric和Trace。


为何我们需要日志系统
通常一个线上问题的定位流程是:通过Metric发现问题,根据Trace定位到问题模块,根据模块具体的日志定位问题原因。在日志中包括了错误、关键变量、代码运行路径等信息,这些是问题排查的核心,因此日志永远是线上问题排查的必经路径。



在阿里的十多年中,日志系统伴随着计算形态的发展在不断演进,大致分为3个主要阶段:

在单机时代,几乎所有的应用都是单机部署,当服务压力增大时,只能切换更高规格的IBM小型机。日志作为应用系统的一部分,主要用作程序Debug,通常结合grep等Linux常见的文本命令进行分析。
随着单机系统成为制约阿里业务发展的瓶颈,为了真正的Scale out,飞天项目启动:2013年飞天5K项目正式上线。在这个阶段各个业务开始了分布式改造,服务之间的调用也从本地变为分布式,为了更好的管理、调试、分析分布式应用,我们开发了Trace(分布式链路追踪)系统、各式各样的监控系统,这些系统的统一特点是将所有的日志(包括Metric等)进行集中化的存储。
为了支持更快的开发、迭代效率,近年来我们开始了容器化改造,并开始了拥抱Kubernetes生态、业务全量上云、Serverless等工作。在这阶段,日志无论从规模、种类都呈现爆炸式的增长,对日志进行数字化、智能化分析的需求也越来越高,因此统一的日志平台应运而生。

可观察性的终极解读
在CNCF中,可观察性的主要作用是问题的诊断,上升到公司整体层面,可观察性(Observability)不仅仅包括DevOps领域,还包括业务、运营、BI、审计、安全等领域,可观察性的最终的目标是实现公司各个方面的数字化、智能化。



在阿里,几乎所有的业务角色都会涉及到各式各样的日志数据,为了支撑各类应用场景,我们开发了非常多的工具和功能:日志实时分析、链路追踪、监控、数据加工、流计算、离线计算、BI系统、审计系统等等。日志系统主要专注于数据的实时采集、清洗、智能分析与监控以及对接各类各样的流计算、离线系统。


Kubernetes日志系统建设难点



单纯日志系统的解决方案非常多,相对也比较成熟,这里就不再去赘述,我们此次只针对Kubernetes上的日志系统建设而论。Kubernetes上的日志方案相比我们之前基于物理机、虚拟机场景的日志方案有很大不同,例如:

日志的形式变的更加复杂,不仅有物理机/虚拟机上的日志,还有容器的标准输出、容器内的文件、容器事件、Kubernetes事件等等信息需要采集。
环境的动态性变强,在Kubernetes中,机器的宕机、下线、上线、Pod销毁、扩容/缩容等都是常态,这种情况下日志的存在是瞬时的(例如如果Pod销毁后该Pod日志就不可见了),所以日志数据必须实时采集到服务端。同时还需要保证日志的采集能够适应这种动态性极强的场景。
日志的种类变多,上图是一个典型的Kubernetes架构,一个请求从客户端需要经过CDN、Ingress、Service Mesh、Pod等多个组件,涉及多种基础设施,其中的日志种类增加了很多,例如K8s各种系统组件日志、审计日志、ServiceMesh日志、Ingress等。
业务架构变化,现在越来越多的公司开始在Kubernetes上落地微服务架构,在微服务体系中,服务的开发更加复杂,服务之间的依赖以及服务底层产品的依赖越来越多,这时的问题排查将更加复杂,如果关联各个维度的日志将是一个困难的问题。
日志方案集成困难,通常我们都会在Kubernetes上搭建一套CICD系统,这套CICD系统需要尽可能的自动化的完成业务的集成和部署,其中日志的采集、存储、清洗等也需要集成到这套系统中,并和K8s的声明式部署方式尽可能一致。而现有的日志系统通常都是较独立的系统,集成到CICD中代价极大。
日志规模问题,通常在系统初期的时候我们会选择自建开源的日志系统,这种方式在测试验证阶段或公司发展初期是没有什么问题的,但当业务逐渐增长,日志量增长到一定规模时,自建的开源系统很多时候都会遇到各种各样的问题,例如租户隔离、查询延迟、数据可靠性、系统可用性等。日志系统虽不是IT中最核心的路径,但一旦关键时刻出现这些问题都将是非常可怕的影响,例如大促的时候出现紧急问题,排查时多个工程师并发查询把日志系统打爆,导致故障恢复时间变长,大促收到影响。
本文作者:元乙

原文链接:https://yq.aliyun.com/articles/717779?utm_content=g_1000076969

本文为云栖社区原创内容,未经允许不得转载。

  • 大小: 868.2 KB
  • 大小: 667.9 KB
  • 大小: 627.2 KB
0
0
分享到:
评论

相关推荐

    后Kubernetes时代的云原生技术探索和实践.pdf

    谐云科技通过自主研发和集成,提供了一系列的云原生产品矩阵,包括企业级容器云平台、DevOps微服务平台、多集群管理、容器存储、网络、编排、日志、监控及安全运维监控等,构建了全栈式云原生解决方案。 谐云科技的...

    某汽车金融云原生转型的DevOps落地实践.zip

    1. **云原生架构**:云原生架构强调松耦合、可独立部署的微服务,这使得系统更易于扩展和维护。每个微服务专注于单一职责,通过API进行通信,提高系统的弹性和可靠性。 2. **DevOps文化**:DevOps是一种将开发...

    云原生下的DevOps工程架构设计和实践共56页.pdf

    1. **云原生概念**:云原生(Cloud Native)是一种构建和运行应用程序的方法,充分利用云计算的弹性和分布式特性。它包括微服务、容器、持续交付、声明式API等核心理念。 2. **DevOps理念**:DevOps是Development...

    云原生应用与容器架构.rar

    DaoCloud作为一家云原生解决方案提供商,为用户提供了全面的云原生技术栈,包括容器平台、持续交付流水线、微服务治理等,帮助企业更好地实现云原生应用的落地。 总结来说,云原生应用与容器架构的结合,推动了软件...

    基于云原生架构构建亿级多语言电商平台设计到落地实现(3个阶段全)

    通过"基于云原生架构构建亿级多语言电商平台设计到落地实现"的课程,学习者可以深入了解云原生技术在实际项目中的应用,包括如何设计合理的微服务架构,如何利用容器和Kubernetes进行部署,以及如何构建完整的CI/CD...

    基于 Golang 构建高可扩展的云原生 PaaS 平台.pdf

    它提供了一系列服务,比如边缘站点管理、边缘监控、边缘日志快速分发部署、边缘数据收集和边缘算力调度等,为企业提供一站式的解决方案。 Erda架构强调模块化开发框架和开源新时代的挑战。模块化设计让系统具有更好...

    容器云Kubernetes落地实践原汁原味培训可编辑ppt

    它不包含内置的中间件、框架或数据库,而是允许用户自选监控、日志和告警解决方案进行集成。Kubernetes的核心架构包括etcd(键值存储)、API Server(提供RESTful接口)、Scheduler(负责Pod调度)、Controller ...

    蔡峰-携程在云原生下的 DevOps 实践.zip

    1. **云原生理念**:云原生是一种构建和运行应用程序的方法,强调微服务、容器化、持续交付和声明式API,充分利用云计算的优势,实现快速迭代和弹性扩展。 2. **DevOps概念**:DevOps是开发(Development)和运维...

    企业级云原生白皮书项目实战.pdf

    综上所述,《企业级云原生白皮书项目实战》不仅提供了云原生技术的理论基础,还结合实战案例深入浅出地阐述了如何在企业中落地云原生架构,对于希望利用云原生技术进行数字化转型的企业具有很高的参考价值。

    行业-基于云原生服务网格的AI模型部署方案.rar

    总的来说,基于云原生服务网格的AI模型部署方案能够为企业带来更敏捷、可扩展和安全的模型部署环境,促进AI技术在业务中的快速落地和迭代。通过深入理解和实践这一方案,企业可以更好地利用AI驱动业务创新和发展。

    云原生在边缘形态下的升华-SACC2021年中国系统架构师大会.pdf

    在技术实践层面,阿里云通过一系列的软件基础设施支撑其边缘云原生技术体系,包括Kubernetes和容器运行时等。边缘节点操作系统负责计算、存储、网络虚拟化,并且能够异构资源池化,传统物理机云联节点、IoT设备、ARM...

    Kubernetes与微服务架构的端到端流水线驱动DevOps落地

    Kubernetes,作为云原生时代的容器编排平台,与微服务架构天然契合。它能够帮助组织构建和管理分布式系统,协调和调度容器化的应用程序。在微服务架构中,应用程序被划分为一组小的、独立的服务,每个服务实现特定的...

    容器云在金融行业的落地实践.docx

    在此背景下,Kubernetes作为容器编排的领导者,为PaaS平台与IaaS的融合提供了坚实基础,为云原生应用在生产环境中的运行提供了强有力的支持。 金融企业在构建容器云PaaS平台时,需要关注以下几个关键点: 1. **...

    2021云计算峰会(Cloud Insight Conference,CIC)PPT汇总(43份).zip

    2021云计算峰会(Cloud Insight Conference,CIC)PPT汇总,共43份。 Cloud Insight Conference 2021云计算峰会再出发,...深入解读云原生可观测性之日志与告警通知 中国移动基于 Kubernetes 的物联网边缘计算应用实践

    互联网Kubernetes调度系统概述.pptx

    Kubernetes(简称K8s)是目前广泛应用的容器编排系统,被广泛用于互联网行业的云原生应用部署和管理。本篇内容将聚焦于蚂蚁金服在Kubernetes上的实践,以及如何利用它来应对双十一等大促活动的挑战。 ### 一、蚂蚁...

    保险行业容器云的建设规划方案.docx

    保险行业容器云的建设规划方案 本文从一个企业数据中心云计算架构师的角度,对 Openshift 在金融企业的落地姿势做介绍,技术选型、运维实践及填坑经验。本文涵盖了容器云 PaaS 平台的建设目标、技术架构、企业需求...

    作业帮服务治理探索和落地实践.pdf

    《作业帮服务治理探索与落地实践》这篇文章主要探讨了在作业帮这个大型在线教育平台中,如何进行服务治理的实践和思考。服务治理是现代互联网企业面临的重要课题,旨在控制整体架构的复杂度,保证服务的稳定性,提升...

    《敏态微服务化转型如何稳步落地.pdf》

    4. 容器化和编排:Docker容器化技术可以将服务打包成标准单元,而Kubernetes等编排工具则能管理和调度这些容器,实现云原生环境的高效运行。 5. 安全性:微服务增加了攻击面,因此需要加强服务间的认证、授权和加密...

    10-1.MinIO技术解析及落地实践.pdf

    其次,MinIO具有出色的云原生能力,能够轻松集成到现有的Kubernetes或容器化环境中,便于管理和扩展。这得益于它的轻量级设计和对标准S3接口的兼容,使得开发者可以利用已有的工具和库来与MinIO进行交互,降低了采用...

Global site tag (gtag.js) - Google Analytics