Kubernetes 稳定性保障手册 -- 可观测性专题

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 伴随大家对稳定性重视程度的不断提升、社区可观测性项目的火热,可观测性成为了一个很热门的话题,站在不同的角度会产生不同的理解。 我们从软件开发的生命周期出发,尝试形成对可观测性的一个宏观理解,并从 SRE 和 Serverless 两个角度具化可观测性的理解以及实践。

头图.png

作者 | 悟鹏
来源 | 阿里巴巴云原生公众号

《Kubernetes 稳定性保障手册》系列文章:

伴随大家对稳定性重视程度的不断提升、社区可观测性项目的火热,可观测性成为了一个很热门的话题,站在不同的角度会产生不同的理解。

我们从软件开发的生命周期出发,尝试形成对可观测性的一个宏观理解,并从 SRE 和 Serverless 两个角度具化可观测性的理解以及实践。

目的

  • 增强认知,通过全局把握来提升竞争力
  • 通过合理的设计和实践,为未来带来可能性

目标

  • 针对可观测性的理解达成一致
  • 针对可观测性的发展方向达成一致

什么是可观测性?

wikipedia: Observability 可理解到 可观测性 的定义:

In control theory, observability is a measure of how well internal states of a system can be inferred from knowledge of its external outputs.

Consider a physical system modeled in state-space representation. A system is said to be observable if, for any possible evolution of state and control vectors, the current state can be estimated using only the information from outputs (physically, this generally corresponds to information obtained by sensors). In other words, one can determine the behavior of the entire system from the system's outputs. On the other hand, if the system is not observable, there are state trajectories that are not distinguishable by only measuring the outputs.

简单表述为,可观测性是一种方法,通过系统的外部输出推导出系统内部的状态。

下图简化了系统的组成和系统间的交互:

1.png

从上述交互图可了解到,系统的交互行为有如下几种形态:

  • 系统内部

    • 组件功能闭环,不与其他组件或系统交互
    • 组件之间交互
  • 系统之间

    • 系统和系统之间进行交互

这样,通过如下两种形态的信息,就可以通过系统的外部输出了解到系统的内部状态:

  • 组件闭环的信息
  • 组件间或系统间流动的信息

可观测性的问题域是什么?

可观测性的核心在于 通过观测数据、满足不同人群、对于系统状态的理解需求,这里先抽象观测数据的生命周期,有如下图示:

2.png

观测数据通过 App 生成,经过中间处理环节后进行存储,然后提供查询服务。

观测数据服务于不同类型的人群,如产品的用户、业务、研发、SRE,不同的人群通过不同的形态来使用这些数据,包括 SLA / SLO / SLI / Alert 等。

根据可观测数据的生命周期,可粗略总结可观测性的问题域:

  • 生成端

    • 观测数据的数据模型
    • 观测数据的生成
    • 观测数据的导出
  • 处理端

    • 观测数据的采集
    • 观测数据的处理
    • 观测数据的导出
  • 存储端

    • 观测数据的存储
    • 观测数据的查询
    • 观测数据的使用
  • 使用端

    • 观测数据的消费

软件开发生命周期中,可观测性的服务目标是什么?

从项目整体视角来看软件开发的生命周期,有如下的流程:

3.png

细化下来:

4.png

在软件开发生命周期中,有 4 类角色。面对 4 类角色,可观测性的服务目标会有差异:

4-1.jpg

Note:

  • 可靠稳定 不是等同的关系,可靠 包含了 稳定+及时满足功能需求 特征

SRE 可以投入的方向

基础服务:

4-2.jpg

可以将 OpenTelemetry 作为基础落地上述事项,参见:《OpenTelemetry 简析》

与此同时,可以探索可视化的稳定性保障服务,从全局视角加快问题发现、定位、解决,一张图把握集群中「组件自身」和「组件之间交互」的健康状态 ,形如下图:

5.png

以此为入口,从整体把握集群状态,关联异常信息,处理问题时有的放矢。

Serverless 场景下可观测性

Serverless 是目前很有前景的云上计算形态,阿里云提供了比较完整的 Serverless 计算产品,如下:

6.png

不同 Serverless 计算环境的一个主要差异点在于运行环境的持续时间,以此为出发点,可以抽象出 Serverless 计算环境中可观测性的核心,然后分解出相应的解决方案:

7.png

根据运行环境持续时长的不同,可粗略划分为 3 类:

  • 天级别
  • 小时级别
  • 分钟或秒级别

这些运行环境均可以通过虚拟机、容器或 WebAssembly 等技术实现,区别点在于业务层面限定的运行环境持续时长。

根据运行环境持续时长的特征,平台和用户的关注核心会有相应的变化:

  • 天级别的运行环境,平台方的核心在于提供可靠的运行环境,由用户自由管理应用

    • 对于可观测性,平台方核心在于运行环境可靠性,用户核心在于应用环境稳定性和请求响应性能
  • 小时级别的运行环境,平台方的核心在于围绕应用提供管理服务,用户聚焦于业务自身

    • 对于可观测性,平台方核心在于应用运行稳定性和请求响应性能,用户核心在于业务特征
  • 分钟或秒级别的运行环境,平台方的核心在于细粒度的用户业务逻辑管理,用户更聚焦在业务的敏感特征

    • 对于可观测性,平台方核心在于请求响应可靠性和业务特征,用户核心在于核心业务特征

对于 FaaS 场景,THUNDRA 公司demo 提供了比较好的示例以供参考 (截取 3 个示例):

  • 函数

8.png

  • 应用

9.png

  • 架构

10.png

小结

通过对可观测性概念、问题域、不同层级需求等形成深入理解,可以形成对可观测性的理解大图,然后在此基础上与业务结合,增强业务在可观测性方面的竞争力,同时迭代理解,技术与业务相互促进。

References

欢迎大家留言交流使用 Kubernetes 过程中的稳定性保障问题,以及对稳定性保障的期待工具或服务。大家也可通过邮箱联系作者,进一步深入交流:flyer.zyf@alibaba-inc.com

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
6月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
198 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
9月前
|
Kubernetes 容灾 调度
阿里云 ACK 高可用稳定性最佳实践
本文整理自2024云栖大会刘佳旭的演讲,主题为《ACK高可用稳定性最佳实践》。文章探讨了云原生高可用架构的重要性,通过Kubernetes的高可用案例分析,介绍了ACK在单集群高可用架构设计、产品能力和最佳实践方面的方法,包括控制面和数据面的高可用策略、工作负载高可用配置、企业版容器镜像服务高可用配置等内容,旨在帮助企业构建更加可靠和高效的应用运行环境。
|
弹性计算 Kubernetes 安全
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
220 9
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——特殊实例
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——特殊实例自制脑图
526 4
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——创建ECI Pot
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——创建ECI Pot自制脑图
467 1
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot自制脑图
333 1
|
Kubernetes Ubuntu Linux
k8s部署grafana beyla实现app应用服务依赖图可观测
k8s部署grafana beyla实现app应用服务依赖图可观测
198 4
|
运维 Kubernetes 监控
基于 Kubernetes 的 Serverless PaaS 稳定性建设万字总结
本文将侧重于实际落地而非方法论,阐述云产品 SAE 业务侧稳定性实际建设过程中的经验和思考。
156970 107
|
运维 Kubernetes 监控
阿里云 ACK 云上大规模 Kubernetes 集群高可靠性保障实战
本文基于 ACK 稳定性保障实践经验,帮助用户全面理解 ACK 稳定性理论和优化策略,并了解如何使用相应的工具和服务进行稳定性保障。
184986 23

相关产品

  • 容器服务Kubernetes版