Kubernetes為何如此複雜?

banq發表於2021-05-17

容器將應用程式及其所有依賴項打包,以使其可以在不同的計算環境中移植。容器為在物理或虛擬基礎架構上更高效地執行雲本機應用程式提供了靈活性。它允許根據需求的高峰來擴充套件或縮減應用程式例項。Kubernetes是使用最廣泛的容器編排工具之一。
管理單個容器很容易,但是管理分佈在多個主機上的數百個容器非常複雜。需要管理容器並將其連線到外部,以執行諸如排程,負載平衡,分配,擴充套件等任務,而這正是諸如Kubernetes(K8s)之類的容器編排工具發揮作用的地方。
Kubernetes由Google團隊根據其在生產中執行數千個容器的經驗構建而成。這確保Kubernetes成為可以滿足幾乎任何組織的擴充套件需求的堅如磐石的平臺之一。
那裡就是複雜!
Kubernetes本身是一個巨大的開源專案,具有很大的操作複雜性和敏銳的學習曲線。儘管K8旨在消除基礎結構和容器管理的複雜性,但開發人員仍然發現它具有挑戰性和複雜性。
Kubernetes是一個旨在解決複雜問題的複雜系統。在下面找到一些最常見的原因,為什麼Kubernetes很複雜。
  • 分散式系統:Kubernetes是一個分散式系統。有很多元件,主機,工作機,排程程式等。當您進行擴充套件時,可能會有數十或數百個分散式計算機。有許多不同的服務,系統和部件。建立,測試,除錯和管理分散式系統通常很複雜。

  • 難於使用:操作Kubernetes叢集並不是一件容易的事。按照最佳實踐來學習和使用Kubernetes既困難又痛苦。

  • 內在的複雜性:Kubernetes中存在架構上的複雜性,操作上的複雜性,配置上的複雜性和概念上的複雜性。這是一個巨大的開源專案。

  • 抽象:Kubernetes做了很多工作,並帶來了許多新的抽象,從而增加了複雜性,實際上對於這麼大的系統來說這是一定必要的。

  • 學習曲線:陡峭的學習曲線。並非所有的工程團隊都具有相同的技能水平或準備嘗試新技術和專案。

  • DevOps:開發和操作變得更加複雜。設定K8s環境以進行本地開發,測試和登臺並使其執行變得困難。需要更大的團隊。

  • 缺乏專業知識:缺乏專業知識和專家資源。Kubernetes的專業知識仍然不多,而且成本也很高。

  • 眾多功能:複雜性的部分原因在於Kubernetes中可用的選項數量眾多,並且需要做出選擇正確和最佳選項的決策。

  • 對業務的影響:對於組織而言,複雜性會影響問題的採用,培訓,遷移,交付速度以及問題發生時的恢復速度。有些企業花費了數萬美元,但仍然無法成功遷移到Kubernetes。

 

如何解決複雜?

  • 觀念的轉變:首先,考慮到它解決的問題,Kubernetes並不複雜。解決複雜問題的複雜工具自然不會是簡單的工具。實際上,Kubernetes是為了幫助管理容器化微服務架構的複雜性而開發的。

  • 運維得很好:Kubernetes是一個引擎,安裝了一個更好的方向盤來驅動它。尋求專家,託管雲服務和合適的合作伙伴的幫助。有經驗豐富的團隊擁有成熟的產品/平臺,可以在您的Kubernetes旅程中為您提供幫助。

  • 隨著年齡的增長而變得越來越好:隨著年齡的增長,它會變得越來越好,並且每天都變得越來越容易使用。Kubernetes不會隨著年齡的增長而變得複雜,就像Hadoop專案發生的事情一樣。

  • 正確的用例:將其用於正確的用例。Kubernetes是一個複雜的編排工具,請記住,它並不是所有用例的理想選擇。

  • 相容性:Kubernetes的結構使得您可以擴充套件它,並且仍然與基本版本相容。Kubernetes仍然擁有數十家運營商,而Kubernetes仍然是Kubernetes(不是該產品的新版本)。

  • 只使用必需的鐘聲和口哨聲:每個人都不需要一直使用Kubernetes的所有抽象,鐘聲和哨聲。有很多人以更簡單的方式使用Kubernetes。

  • 有機增長:如果有機增長,沒有系統會感到複雜。遵循自然的方式進行Kubernetes遷移。

  • 生產力:Kubernetes資源基於一系列Kubernetes抽象來建立對常見問題的理解和技能。因此,資源可以在不同的環境,專案和工作中變得更具生產力,價值和可切換性。

 
  • 一次學習,在任何地方都可以應用:您掌握的Kubernetes的複雜性,知識可以隨專案而變化。這樣,與其他系統相比,它變得不那麼複雜。

  • 降低進入門檻:人們可以在本地設定,執行和學習Kubernetes,這比其他類似系統要容易得多,從而降低了進入門檻並降低了感知的複雜性。

  • 託管服務:大多數雲提供商都提供託管Kubernetes解決方案,可幫助大多數使用者大規模管理複雜性。託管平臺將簡化平臺團隊和開發人員的工作。

  • 護欄:使用必要的護欄以確保開發人員不會弄亂事情。

  • 自動化:在組織和過程級別,降低複雜度的最佳方法是透過自動化。當有人必須手動旋轉所有旋鈕時,Kubernetes感覺要複雜得多,但是一旦安裝了正確的自動化工具,則只需設定一次配置或策略。

  • 獨立的團隊:不要將開發人員拖到底層來學習Kubernetes的複雜性和基礎架構的管理,而應使用專家團隊或經過驗證的產品進行一鍵式部署。讓他們在擅長的地方提高生產力。

  • 可靠性:您可以依靠Kubernetes的複雜性。Kubernetes帶有用於執行狀況檢查,滾動部署等的內建功能,並減少了停機時間。

 

概括
Kubernetes繼續蓬勃發展,成為容器編排的行業標準。越來越多的雲提供商,服務和第三方供應商將提供產品和解決方案,這些產品和解決方案將消除基礎架構的複雜性並向我們分配系統,而開發人員將更加專注於其程式碼並提高生產力。企業可以更頻繁地擴大規模併發布產品和服務,以打敗市場競爭。有時,採用Kubernetes的程式和組織變革比學習像Kubernetes這樣的新技術更具挑戰性。
 

相關文章