Kubernetes 稳定性保障手册 -- 可观测性专题
作者 | 悟鵬
 來源 | 阿里巴巴云原生公眾號
《Kubernetes 穩(wěn)定性保障手冊》系列文章:
- Kubernetes 穩(wěn)定性保障手冊 – 極簡版
- Kubernetes 穩(wěn)定性保障手冊 – 日志專題
- Kubernetes 穩(wěn)定性保障手冊?–?可觀測性專題(本文)
伴隨大家對穩(wěn)定性重視程度的不斷提升、社區(qū)可觀測性項目的火熱,可觀測性成為了一個很熱門的話題,站在不同的角度會產(chǎn)生不同的理解。
我們從軟件開發(fā)的生命周期出發(fā),嘗試形成對可觀測性的一個宏觀理解,并從 SRE 和 Serverless 兩個角度具化可觀測性的理解以及實踐。
目的
- 增強認(rèn)知,通過全局把握來提升競爭力
- 通過合理的設(shè)計和實踐,為未來帶來可能性
目標(biāo)
- 針對可觀測性的理解達(dá)成一致
- 針對可觀測性的發(fā)展方向達(dá)成一致
什么是可觀測性?
從 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.
簡單表述為,可觀測性是一種方法,通過系統(tǒng)的外部輸出推導(dǎo)出系統(tǒng)內(nèi)部的狀態(tài)。
下圖簡化了系統(tǒng)的組成和系統(tǒng)間的交互:
從上述交互圖可了解到,系統(tǒng)的交互行為有如下幾種形態(tài):
-  系統(tǒng)內(nèi)部 - 組件功能閉環(huán),不與其他組件或系統(tǒng)交互
- 組件之間交互
 
-  系統(tǒng)之間 - 系統(tǒng)和系統(tǒng)之間進行交互
 
這樣,通過如下兩種形態(tài)的信息,就可以通過系統(tǒng)的外部輸出了解到系統(tǒng)的內(nèi)部狀態(tài):
- 組件閉環(huán)的信息
- 組件間或系統(tǒng)間流動的信息
可觀測性的問題域是什么?
可觀測性的核心在于 通過觀測數(shù)據(jù)、滿足不同人群、對于系統(tǒng)狀態(tài)的理解需求,這里先抽象觀測數(shù)據(jù)的生命周期,有如下圖示:
觀測數(shù)據(jù)通過 App 生成,經(jīng)過中間處理環(huán)節(jié)后進行存儲,然后提供查詢服務(wù)。
觀測數(shù)據(jù)服務(wù)于不同類型的人群,如產(chǎn)品的用戶、業(yè)務(wù)、研發(fā)、SRE,不同的人群通過不同的形態(tài)來使用這些數(shù)據(jù),包括 SLA / SLO / SLI / Alert 等。
根據(jù)可觀測數(shù)據(jù)的生命周期,可粗略總結(jié)可觀測性的問題域:
-  生成端 - 觀測數(shù)據(jù)的數(shù)據(jù)模型
- 觀測數(shù)據(jù)的生成
- 觀測數(shù)據(jù)的導(dǎo)出
 
-  處理端 - 觀測數(shù)據(jù)的采集
- 觀測數(shù)據(jù)的處理
- 觀測數(shù)據(jù)的導(dǎo)出
 
-  存儲端 - 觀測數(shù)據(jù)的存儲
- 觀測數(shù)據(jù)的查詢
- 觀測數(shù)據(jù)的使用
 
-  使用端 - 觀測數(shù)據(jù)的消費
 
軟件開發(fā)生命周期中,可觀測性的服務(wù)目標(biāo)是什么?
從項目整體視角來看軟件開發(fā)的生命周期,有如下的流程:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nslyMlQx-1617331290052)(https://ucc.alicdn.com/pic/developer-ecology/7d8633ef2801470184bb95596e350311.png)]
細(xì)化下來:
在軟件開發(fā)生命周期中,有 4 類角色。面對 4 類角色,可觀測性的服務(wù)目標(biāo)會有差異:
Note:
- 可靠 與 穩(wěn)定 不是等同的關(guān)系,可靠 包含了 穩(wěn)定+及時滿足功能需求 特征
SRE 可以投入的方向
基礎(chǔ)服務(wù):
可以將 OpenTelemetry 作為基礎(chǔ)落地上述事項,參見:《OpenTelemetry 簡析》。
與此同時,可以探索可視化的穩(wěn)定性保障服務(wù),從全局視角加快問題發(fā)現(xiàn)、定位、解決,一張圖把握集群中「組件自身」和「組件之間交互」的健康狀態(tài) ,形如下圖:
以此為入口,從整體把握集群狀態(tài),關(guān)聯(lián)異常信息,處理問題時有的放矢。
Serverless 場景下可觀測性
Serverless 是目前很有前景的云上計算形態(tài),阿里云提供了比較完整的 Serverless 計算產(chǎn)品,如下:
不同 Serverless 計算環(huán)境的一個主要差異點在于運行環(huán)境的持續(xù)時間,以此為出發(fā)點,可以抽象出 Serverless 計算環(huán)境中可觀測性的核心,然后分解出相應(yīng)的解決方案:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0PFJx0ra-1617331290060)(https://ucc.alicdn.com/pic/developer-ecology/51b3f393b3a14e59a401c959148c9b13.png)]
根據(jù)運行環(huán)境持續(xù)時長的不同,可粗略劃分為 3 類:
- 天級別
- 小時級別
- 分鐘或秒級別
這些運行環(huán)境均可以通過虛擬機、容器或 WebAssembly 等技術(shù)實現(xiàn),區(qū)別點在于業(yè)務(wù)層面限定的運行環(huán)境持續(xù)時長。
根據(jù)運行環(huán)境持續(xù)時長的特征,平臺和用戶的關(guān)注核心會有相應(yīng)的變化:
-  天級別的運行環(huán)境,平臺方的核心在于提供可靠的運行環(huán)境,由用戶自由管理應(yīng)用 - 對于可觀測性,平臺方核心在于運行環(huán)境可靠性,用戶核心在于應(yīng)用環(huán)境穩(wěn)定性和請求響應(yīng)性能
 
-  小時級別的運行環(huán)境,平臺方的核心在于圍繞應(yīng)用提供管理服務(wù),用戶聚焦于業(yè)務(wù)自身 - 對于可觀測性,平臺方核心在于應(yīng)用運行穩(wěn)定性和請求響應(yīng)性能,用戶核心在于業(yè)務(wù)特征
 
-  分鐘或秒級別的運行環(huán)境,平臺方的核心在于細(xì)粒度的用戶業(yè)務(wù)邏輯管理,用戶更聚焦在業(yè)務(wù)的敏感特征 - 對于可觀測性,平臺方核心在于請求響應(yīng)可靠性和業(yè)務(wù)特征,用戶核心在于核心業(yè)務(wù)特征
 
對于 FaaS 場景,THUNDRA 公司 的 demo 提供了比較好的示例以供參考 (截取 3 個示例):
- 函數(shù)
- 應(yīng)用
- 架構(gòu)
小結(jié)
通過對可觀測性概念、問題域、不同層級需求等形成深入理解,可以形成對可觀測性的理解大圖,然后在此基礎(chǔ)上與業(yè)務(wù)結(jié)合,增強業(yè)務(wù)在可觀測性方面的競爭力,同時迭代理解,技術(shù)與業(yè)務(wù)相互促進。
References
- wikipedia: Observability
- wikipedia: Service-level objective
- wikipedia: Service-level agreement
- wikipedia: Service level
- Google-Wide Profiling: A Continuous Profiling Infrastructure for Data Centers
- conprof - Continuous Profiling
- OpenTelemetry Proposal issues: Adding profiling as a support event type
- Kubernetes scalability and performance SLIs/SLOs
- 從 DevOps 到 NoOps,Serverless 技術(shù)的落地方式探討
歡迎大家留言交流使用 Kubernetes 過程中的穩(wěn)定性保障問題,以及對穩(wěn)定性保障的期待工具或服務(wù)。大家也可通過郵箱聯(lián)系作者,進一步深入交流:flyer.zyf@alibaba-inc.com。
總結(jié)
以上是生活随笔為你收集整理的Kubernetes 稳定性保障手册 -- 可观测性专题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 阿里巴巴研究员叔同:云原生是企业数字创新
- 下一篇: OpenTelemetry 简析
