Kubernetes 稳定性保障手册 -- 可观测性专题
简介: 伴随大家对稳定性重视程度的不断提升、社区可观测性项目的火热,可观测性成为了一个很热门的话题,站在不同的角度会产生不同的理解。 我们从软件开发的生命周期出发,尝试形成对可观测性的一个宏观理解,并从 SRE 和 Serverless 两个角度具化可观测性的理解以及实践。

作者 | 悟鹏
来源 | 阿里巴巴云原生公众号
《Kubernetes 稳定性保障手册》系列文章:
- Kubernetes 稳定性保障手册 -- 极简版
- Kubernetes 稳定性保障手册 -- 日志专题
- 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.
简单表述为,可观测性是一种方法,通过系统的外部输出推导出系统内部的状态。
下图简化了系统的组成和系统间的交互:

从上述交互图可了解到,系统的交互行为有如下几种形态:
系统内部
- 组件功能闭环,不与其他组件或系统交互
- 组件之间交互
系统之间
- 系统和系统之间进行交互
这样,通过如下两种形态的信息,就可以通过系统的外部输出了解到系统的内部状态:
- 组件闭环的信息
- 组件间或系统间流动的信息
可观测性的问题域是什么?
可观测性的核心在于 通过观测数据、满足不同人群、对于系统状态的理解需求,这里先抽象观测数据的生命周期,有如下图示:

观测数据通过 App 生成,经过中间处理环节后进行存储,然后提供查询服务。
观测数据服务于不同类型的人群,如产品的用户、业务、研发、SRE,不同的人群通过不同的形态来使用这些数据,包括 SLA / SLO / SLI / Alert 等。
根据可观测数据的生命周期,可粗略总结可观测性的问题域:
生成端
- 观测数据的数据模型
- 观测数据的生成
- 观测数据的导出
处理端
- 观测数据的采集
- 观测数据的处理
- 观测数据的导出
存储端
- 观测数据的存储
- 观测数据的查询
- 观测数据的使用
使用端
- 观测数据的消费
软件开发生命周期中,可观测性的服务目标是什么?
从项目整体视角来看软件开发的生命周期,有如下的流程:

细化下来:

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

Note:
- 可靠 与 稳定 不是等同的关系,可靠 包含了 稳定+及时满足功能需求 特征
SRE 可以投入的方向
基础服务:

可以将 OpenTelemetry 作为基础落地上述事项,参见:《OpenTelemetry 简析》。
与此同时,可以探索可视化的稳定性保障服务,从全局视角加快问题发现、定位、解决,一张图把握集群中「组件自身」和「组件之间交互」的健康状态 ,形如下图:

以此为入口,从整体把握集群状态,关联异常信息,处理问题时有的放矢。
Serverless 场景下可观测性
Serverless 是目前很有前景的云上计算形态,阿里云提供了比较完整的 Serverless 计算产品,如下:

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

根据运行环境持续时长的不同,可粗略划分为 3 类:
- 天级别
- 小时级别
- 分钟或秒级别
这些运行环境均可以通过虚拟机、容器或 WebAssembly 等技术实现,区别点在于业务层面限定的运行环境持续时长。
根据运行环境持续时长的特征,平台和用户的关注核心会有相应的变化:
天级别的运行环境,平台方的核心在于提供可靠的运行环境,由用户自由管理应用
- 对于可观测性,平台方核心在于运行环境可靠性,用户核心在于应用环境稳定性和请求响应性能
小时级别的运行环境,平台方的核心在于围绕应用提供管理服务,用户聚焦于业务自身
- 对于可观测性,平台方核心在于应用运行稳定性和请求响应性能,用户核心在于业务特征
分钟或秒级别的运行环境,平台方的核心在于细粒度的用户业务逻辑管理,用户更聚焦在业务的敏感特征
- 对于可观测性,平台方核心在于请求响应可靠性和业务特征,用户核心在于核心业务特征
对于 FaaS 场景,THUNDRA 公司 的 demo 提供了比较好的示例以供参考 (截取 3 个示例):
- 函数

- 应用

- 架构

小结
通过对可观测性概念、问题域、不同层级需求等形成深入理解,可以形成对可观测性的理解大图,然后在此基础上与业务结合,增强业务在可观测性方面的竞争力,同时迭代理解,技术与业务相互促进。
Kubernetes 稳定性保障手册 -- 可观测性专题的更多相关文章
- 第八章 交互技术,8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障(作者:鬼道)
8.4 Weex 双11会场大规模应用的秒开实战和稳定性保障 前言 Native 开发的诸多亮点中,流畅体验和系统调用是最多被提及的.流畅体验体现在页面滚动/动画的流畅性,背后是更好的内存管理和更接近 ...
- [经验交流] 影响 kubernetes 稳定性的因素
使用k8s已有近一年的时间,版本从1.2到1.5.1.6.1.7,期间出现并解决了不少问题,下面是我总结的影响k8s集群稳定性的因素: 1. 安装环境 *kubelet版本最好与kube-apiser ...
- 34 【kubernetes】安装手册
全文参考了两篇中文文档: 1,https://www.cnblogs.com/RainingNight/p/using-kubeadm-to-create-a-cluster.html 2,http: ...
- Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)
Kubernetes平台环境规划 操作环境 rbac 划分(HA高可用双master部署实例) 本文穿插了ha 高可用部署的实例,当前章节设计的是ha部署双master 部署 内网ip 角色 安装软件 ...
- Kubernetes监控手册-01体系概述
Kubernetes 监控体系驳杂,涉及到的内容非常多,总是感觉摸不到头绪,网上虽然有很多资料,都略显凌乱,没有一个体系化的讲解,今天开始,我们准备撰写一系列文章,把 Kubernetes 监控说透, ...
- 万级K8s集群背后etcd稳定性及性能优化实践
背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...
- 2020中国.NET开发者峰会近50场热点技术专题揭秘
简介 / Summary 2014年微软组织并成立.NET基金会,微软在成为主要的开源参与者的道路上又前进了一步.2014年以来已经有众多知名公司加入.NET基金会,微软,Google,AWS三大云厂 ...
- 如何发现 Kubernetes 中服务和工作负载的异常
大家好,我是来自阿里云的李煌东,今天由我为大家分享 Kubernetes 监控公开课的第二节内容:如何发现 Kubernetes 中服务和工作负载的异常. 本次分享由三个部分组成: 一.Kuberne ...
- 万级K8s集群背后 etcd 稳定性及性能优化实践
1背景与挑战随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...
- Kubernetes环境鉴权与自动发现
概览文章中提到了k8s的鉴权模式,简单回顾下: RBAC: Role-based access control 是基于角色的访问控制 ABAC: Atrribute-based access cont ...
随机推荐
- spring mvc 给action添加事务不成功的原因
spring springMVC ation事务管理 自己单独做了个小网站 但是发现action事务不起作用了 但是如果用service层就没问题 找了很多办法没解决 最后自己解决了 其实就是一个加载 ...
- 不使用microlib实现STM32串口printf重定向:
不使用microlib实现STM32串口printf重定向: 突然发现有一篇markdown忘记上传了,补一下 注:使用的是CubeMX生成的工程文件 生成后,在usart.c中添加如下代码: //u ...
- 展会回顾 | 2023元宇宙生态博览会圆满落幕,3DCAT荣获“元宇宙交互技术奖”
2023年5月10日-5月12日,一场涵盖了元宇宙终端头显.数字文娱.数字艺术.数字运动.数字多媒体展陈设计.数字展厅展馆.科技文旅.夜游演艺.沉浸式KTV/酒吧等多个领域的元宇宙商业盛会--2023 ...
- flutter3-dylive仿抖音App实例|Flutter3+Getx实战短视频直播应用
原创研发flutter3+getX+mediaKit跨平台仿抖音app短视频直播实战Flutter3-DouYin. flutter3_dylive使用最新跨平台技术flutter3.x+dart3+ ...
- c# webBrowser中操作网页元素全攻略
1.获取非input控件的值: webBrowser1.Document.All["控件ID"].InnerText; 或webBrowser1.Document.GetEleme ...
- Chrome浏览器:The request client is not a secure context and the resource is in more-private address ...
1.概述 新版的chrome浏览器会校验发起端的域名和访问资源的域名直接的关系,如果客户端发起域名比访问资源所在的域名更public(开放),会导致The request client is not ...
- LCD - 液晶显示原理(一)
1. 显示器介绍 显示器属于计算机的I/O设备,即输入输出设备.它是一种将特定电子信息输出到屏幕上再反射到人眼的显示工具.常见的有CRT显示器.液晶显示器. LED点阵显示器及OLED显示器. 液 ...
- #插头dp#洛谷 5074 HDU 1693 Eat the Trees
题目 给出 \(n*m\) 的方格,有些格子不能铺线, 其它格子必须铺,可以形成多个闭合回路. 问有多少种铺法? \(n,m\leq 12\) 分析 设 \(dp[n][m][S][0/1]\) 表示 ...
- #模拟#洛谷 5957 [POI2017]Flappy Bird
题目 分析 小鸟所在坐标的奇偶性一定相同, 考虑每次维护一个可行区间表示小鸟在当前列可以进入的纵坐标区间, 那么它有\(x_i-x_{i-1}\)的纵坐标最大改变差,然后根据奇偶性以及限制区间缩小范围 ...
- FastWiki发布`0.2.4`支持js 函数
FastWiki发布0.2.4支持js 函数 Release v0.2.4 · AIDotNet/fast-wiki (github.com) 支持JS动态functioncall调用 支持动态fun ...