什麼是Kubernetes Operator及其對SRE的重要性

在此博客文章中,咱們將解釋Kubernetes Operator,並討論它如何發展您的SRE解決方案。服務器

Kubernetes是一個開源項目,可「包含」工做負載和服務,並管理部署和配置。Google於2015年發佈了Kubernetes,如今由Cloud Native Computing Foundation維護。自發布以來,它已成爲一種全球現象。大多數雲原生公司都在使用它,SaaS供應商提供商業的預構建版本,甚至還有年度大會!架構

是什麼使Kubernetes成爲如此基本的服務?一個主要因素是其自動化功能。Kubernetes能夠根據其跟蹤的指標或工程師的要求自動更改已部署容器的配置,甚至能夠部署新容器。讓Kubernetes處理這些過程能夠節省時間,消除勞累並提升一致性。ide

若是這些好處聽起來很熟悉,那多是由於它們與SRE的理念重疊。可是,如何將Kubernetes的自動化歸入您的SRE實踐中?在這篇博客中,咱們將解釋Kubernetes Operator(Kubernetes功能是自定義自動化的核心),並討論它如何發展您的SRE解決方案。工具

Kubernetes Operator能夠作什麼?

Jason Dobies和Joshua Wood 在Kubernetes的《運營商:自動化容器編排平臺》一書中將運營商描述爲「針對其應用的自動化站點可靠性工程師」。考慮到SRE的豐富經驗和多樣化的工做量,這是一個大膽的聲明。那麼操做員到底能作什麼?對象

Kubernetes操做員完成複雜的任務
操做員能夠完成複雜的任務,以在應用程序的輸出中實現所需的更改。它能夠自動處理如下任務:事件

部署應用
將應用程序更新到新版本
從新配置應用程序設置
根據使用狀況上下擴展應用程序
故障處理
創建監控基礎架構
沒有Kubernetes操做員,工程師將須要完成這些任務。使它們自動化能夠節省時間和精力,並使過程和結果一致。資源

Kubernetes Operator控制自定義資源和應用程序

Kubernetes容許您基於特定的應用程序建立和定義自定義資源。定製資源是您的應用程序生成的數據對象,其中包含有關應用程序狀態的指標。假設您有一個根據使用狀況生成新服務器實例的應用程序。您能夠定義自定義資源來檢查每一個新實例的RAM和磁盤空間。您還能夠將自定義資源定義爲應用程序嘗試匹配的目標。而後,Kubernetes Operator能夠控制應用程序以實現目標自定義資源。若是應用程序正在拆分RAM或磁盤空間不足的服務器,則操做員能夠從新配置設置以匹配所需的數量。開發

Kubernetes Operator作出有狀態的決策

Kubernetes Operator能夠根據應用程序的輸出來修改應用程序的配置和用法。這由爲該應用程序定義的自定義資源肯定。顯示所需狀態的自定義資源和顯示當前狀態的自定義資源造成一個循環。操做員觀察當前狀態,而後採起措施使應用程序產生所需狀態。執行動做後,將從新評估當前狀態,並再次開始循環。部署

例如,自定義資源能夠根據新服務器實例的物理資源將其定義爲某種負載能力。而後,操做員將調整配置,直到新實例達到這些標準。博客

Kubernetes Operator和SRE

若是您使用的是Kubernetes,您會發現構建和實現Operators與您的SRE目標保持一致。

操做員監控,SLI和SLO
在爲應用程序開發自定義資源時,您須要選擇資源將監視應用程序輸出中的哪些信號,以及操做員將應用程序導向的目標。這相似於建立SLI和SLO。

對於Operator和SLI,肯定影響最大的指標的過程類似。在Kubernetes Operator教科書中,Dobies和Wood建議首先查看「四個黃金信號」(來自Google SRE書中的一個概念),以肯定Operator應監控的內容。這些是:

潛伏
交通
失誤
飽和
爲您的應用程序建立操做員將幫助您瞭解應爲它們設置哪些SLI和SLO。一樣,設置SLI和SLO能夠幫助您瞭解操做員應監視的內容。

您可能會注意到,當服務器過載時,您的客戶對應用程序的可用性不滿意。

您能夠設置自定義資源來監視可用磁盤空間。在剩餘容量爲5%的狀況下,您的自定義資源將啓動新的服務器實例,從而爲客戶提供更好的服務。您的SLI將基於可用性並監視磁盤空間。您的SLO可能會指示您須要達到99.9%的可用性以使客戶滿意,並告知操做員的干預要點。

自動化SRE應用程序部署

您的SRE實踐將涉及爲服務的每一個新實例按期部署應用程序。例如,您可能但願在每次實現系統體系結構的新區域時都部署監視應用程序。Kubernetes Operator能夠加快這一過程並使之自動化。爲了進行監視,Prometheus操做員是Kubernetes開發的首批操做員之一。它會自動將開源監控軟件Prometheus的新實例部署並控制到任何目標集羣上。

SRE工具表明着對可靠性的投資。實施它們所花費的時間由它們節省的時間支付。建立Operator是一項相似的投資。經過建立操做員,能夠節省每一個部署的時間。此外,部署是一致且可靠的。您的SRE實踐具備較少的開銷,而且能夠隨您的組織擴展。

操做員與事件管理

能夠設置操做員進行調整以處理故障。若是應用程序的自定義資源與指望的結果有所不一樣,則操做員將進行更改以進行補償,直到達到指望的狀態。變化的緣由與操做員無關。它僅基於當前和所需狀態進行操做。您仍然須要進行事件回顧,以增長影響因素。

在制定事件響應計劃時,操做員的行爲多是寶貴的資源。若是您知道操做員將自動嘗試糾正此行爲,則能夠將其歸入您的指望和過程當中。例如,若是您有針對飽和服務器的事件響應計劃,那麼您的操做員能夠啓動新服務器實例或從新配置負載平衡。您的響應計劃將考慮到這一點,從而節省了一些故障排除步驟,並使您能夠專一於始發問題。經過組合操做員和自動運行手冊,能夠最大程度地減小手動上報的數量,並解決許多事件,而無需人工干預。因爲自動化是SRE的另外一個核心目標,所以這是Kubernetes Operator適合您的可靠性策略的另外一種方式。

隨着您將服務轉換爲基於容器的模型而且Kubernetes對您的DevOps實踐變得更加劇要,將運營商歸入您的可靠性策略中很是重要。操做員容許您使用自定義資源和響應擴展Kubernetes,從而實現更高的自動化程度和更少的工做量。

相關文章
相關標籤/搜索