Kubernetes為什麼會逐漸成為雲計算的標準?
談及容器技術,毫不誇張地說,2017年是「Kubernetes的元年」。Kubernetes自2014年推出以來,一直保持穩步增長。
這要歸功於雲原生應用的興起。準確來說,雲原生更像是一種文化,更是一種潮流,它是雲計算的一個必然導向。它的意義在於讓雲成為雲化戰略成功的基石,而不是阻礙,如果業務應用上雲之後開發和運維人員比原先還痛苦,成本高企的話,這樣的雲我們寧願不不上。
其實在 Kubernetes 出現之前,就已經有人提出了雲原生的概念,如 2010 年 Paul Fremantle 就在他的博客中提出了雲原生的核心理念,但是還沒有切實的技術解決方案。而那時候 PaaS 才剛剛出現,PaaS 平台提供商 Heroku 提出了 12 因素(基準代碼、依賴、配置、後端服務、發布、進程、埠綁定、並發、易處理、開發環境與線上環境等價、日誌、管理進程)應用的理念,為構建 SaaS 應用提供了方法論,該理念在雲原生時代依然適用。
Kubernetes 是一個相對較新的運行容器化負載的平台,它解決了這些問題。它原本是 Google 內部的一個項目,Kubernetes 在 2015 年被捐贈給了雲原生計算基金會,並吸引了來自世界各地開源社區的開發人員。 Kubernetes 的設計基於 Google 15 年的在生產和開發環境運維的經驗。由於它是開源的,任何人都可以下載並使用它,並實現其帶來的優勢。
雲原生應用理念要求將環境配置存在應用運行的環境中,在K8s集群中,所有的環境配置都存在分散式共享存儲Etcd中。Kubernetes還有一些操作對象是用來專門存儲環境配置的。例如ConfigMap是存儲通用的配置變數的。ConfigMap有點兒像一個統一的配置文件,使用戶可以將分散式系統中用於不同模塊的環境變數統一到一個對象中管理;而它與配置文件的區別在於它是存在集群的「環境」中的,並且支持Kubernetes集群中所有通用的操作調用方式。
再比如Secret是專門用來存儲密鑰對象的,它使得在Kubernetes集群中用到密碼等私密信息時不必用明文環境變數來表示,從而加強密鑰傳遞和保存的安全性。
更重要的是,雲原生應用理念要求盡量保證開發、測試和生產環境的配置一致,但是同時這幾個不同的環境又應該是彼此隔離。在Kubernetes集群中,不同的環境可以通過namespace進行隔離,保證彼此不互相干擾。
可以說,Kubernetes在像 OpenStack 這樣的基礎架構即服務(IaaS)和完整的平台即服務 (PaaS)的資源之間達到了最佳平衡,它的底層運行時實現完全由供應商控制。Kubernetes 提供了兩個優勢:對管理基礎設施的抽象,以及深入裸機進行故障排除的工具和功能。


TAG:IT168企業級 |