歡迎光臨
每天分享高質量文章

Kubernetes快車上的謀殺案:Docker容器的生與死

 

每天有數以百萬計的Docker容器被啟動起來以使用它們的資源,然後在結束任務後,沒有用時就被殺掉。
這是一個殘酷的現實,但對於作為開發者的你我來說非常有益。
你可以看到在過去幾年中,容器技術已經大大改變了軟體公司構建、釋出和維護其應用程式的方式。
這是因為容器允許我們打包應用程式程式碼及其所有依賴項,因此無論計算執行環境如何,它都可以平穩快速地執行。
不僅如此,容器還可以很好地用於持續整合/持續部署(CI/CD),允許你儘快向客戶提供新功能,增強功能或錯誤修複,從而推動客戶增長以及改進你提供的軟體。
這些只是工作流帶來的紅利。
還記得之前告訴過你關於容器的“出生與死亡”嗎?這個迴圈稱之為水平擴充套件(horizontal scaling),當應用程式面臨的流量超過當前資源可以處理的流量時,這些額外的容器就會被啟動起來,然後在流量消失後這些容器也會被終止。
當你在大規模運營時,整個部署自動化過程變得至關重要。
現在你可能在想,“哇!這聽起來像是一個龐大的工程!”
你猜對了,但有個好訊息,容器編排系統能為你完成所有這些繁重的工作。
雖然你有一些容器編排系統的選擇,例如Docker Swarm,Apache Mesos,但是市面上沒有任何一款能有Kubernetes這麼流行,究其原因有以下。
Kubernetes是一個開源工具,允許我們利用內部部署,混合或公共雲基礎架構,使得可以隨心所欲地移動工作負載。它提供安全,網路和儲存服務,並且可以一次管理多個叢集。
此外,它還可以自動執行許多在過去你必須手動執行的過程。例如:
  • 控制容器執行在哪個伺服器上

  • 輕鬆快速地擴充套件資源

  • 當應用程式出現問題能自動進行回滾

  • 計算容器的“最佳位置”以實時最佳化容器均衡擴充套件資源和應用程式

聽起來很酷對吧?
最終,Kubernetes可以更有效地使用硬體,最大限度地利用資源並節省資金。
但這就是事情變得棘手的地方。
你清楚當你使用類似Kubernetes這樣的容器編排工具時,你可以在YAML檔案中描述應用程式的配置。
在這個配置檔案中,你可以告訴Kubernetes如何工作,例如收集容器映象,如何在容器之間建立網路,如何掛載儲存捲以及將容器日誌安放在何處。
容器被部署到主機上,通常以複製組的形式存在。當需要將新容器部署到叢集中時,Kubernetes會排程部署並根據選擇的預定義約束(如CPU或記憶體可用性)查詢最合適的主機來排程容器。
基本上,一旦容器在主機上執行,Kubernetes將根據你在容器的Dockerfile中書寫的定義規範來管理其生命週期。
這意味著Kubernetes會為你自動執行所有這些任務,但它怎麼做完全是基於你做為開發人員所設定的配置。
雖然你可能是一名神槍手(工程師),但你可能無法確切知道在部署的第一個月內將會有多少流量,或者是應用程式表現如何。
這就是為什麼,特別是對於前幾個月,監控Kubernetes叢集非常重要。
現在為桌面準備的有一些非常好的開源監控工具。
例如,Prometheus包含一個功能強大且靈活的查詢語言——PromQL,它允許你收集Kubernetes叢集併在時間序列資料庫中記錄這些富含洞察力的實時指標。
當你將Prometheus與Grafana(一種資料視覺化工具)配合使用,它會將指標精美地展示在容易看懂的圖表中。
Prometheus和Grafana一起為你的Kubernetes叢集提供強大的資料視覺化和監控功能。
但這些工具僅適用於桌面。
這意味著在第一個月左右,當你還在微調並瞭解叢集的行為表現或應用程式面臨多少流量時,你就被拴在辦公桌上了。
事實上,直到最近,當你在旅途中時,還沒有什麼出色的移動解決方案可以用於管理叢集的指標。
幸運的是,如果你在Kubernetes叢集上執行Prometheus/Grafana監控棧,現在有一個名為Aetos的移動應用程式,可直接透過手機監控Kubernetes叢集的執行狀況和效能。
而且這個應用非常容易使用,只需將你的Grafana URL以及API金鑰配置到應用程式中,Aetos就會給你容易讀懂的圖表讓你實時檢視資料。
當前該應用程式使用一體化可滾動檢視,提供了CPU使用率,記憶體使用率,網路飽和度和系統飽和度的指標。
這些結果顯示在幾個不同的圖表上,讓你可以即時瞭解效能,如需遷移也僅需手指滑動即可。
此外,它是使用開源技術棧打造的,因此無需擔心售價問題。
不必說,它有它的好處。
但無論你如何監控你的叢集,如果你有一個尚未容器化的遺留程式碼庫,你可能需要開始思考如何實現它。畢竟,容器化才是未來的發展方向。
此外,涉及到殺死那些已到達其生命週期末期的容器,你會發現,讓Kubernetes為你做這些骯髒的工作會更容易。除非……你本身就是心狠手辣無情的怪物 😀
原文連結:https://itnext.io/murder-on-the-kubernetes-express-the-life-and-death-of-a-docker-container-d7aec13f8188

贊(0)

分享創造快樂