一步步採用 Kubernetes
為什麼選擇 Docker 和 Kubernetes 呢?
容器允許我們構建、發布和運行分散式應用。它們使應用程序擺脫了機器限制,可以讓我們以一定的方式創建一個複雜的應用程序。
使用容器編寫應用程序可以使開發、QA 更加接近生產環境(如果你努力這樣做的話)。通過這樣做,可以更快地發布修改,並且可以更快地測試整個系統。
Docker 這個容器式平台就是為此為生,可以使軟體獨立於雲提供商。
但是,即使使用容器,移植應用程序到任何一個雲提供商(或私有雲)所需的工作量也是不可忽視的。應用程序通常需要自動伸縮組、持久遠程磁碟、自動發現等。但是每個雲提供商都有不同的機制。如果你想使用這些功能,很快你就會變的依賴於雲提供商。
這正是 Kubernetes 登場的時候。它是一個容器 編排 系統,它允許您以一定的標準管理、縮放和部署應用程序的不同部分,並且成為其中的重要工具。它的可移植抽象層兼容主要雲的提供商(Google Cloud,Amazon Web Services 和 Microsoft Azure 都支持 Kubernetes)。
可以這樣想像一下應用程序、容器和 Kubernetes。應用程序可以視為一條身邊的鯊魚,它存在於海洋中(在這個例子中,海洋就是您的機器)。海洋中可能還有其他一些寶貴的東西,但是你不希望你的鯊魚與小丑魚有什麼關係。所以需要把你的鯊魚(你的應用程序)移動到一個密封的水族館中(容器)。這很不錯,但不是特別的健壯。你的水族館可能會被打破,或者你想建立一個通道連接到其他魚類生活的另一個水族館。也許你想要許多這樣的水族館,以防需要清潔或維護……這正是應用 Kubernetes 集群的作用。
進化到 Kubernetes
主流雲提供商對 Kubernetes 提供了支持,從開發環境到生產環境,它使您和您的團隊能夠更容易地擁有幾乎相同的環境。這是因為 Kubernetes 不依賴專有軟體、服務或基礎設施。
事實上,您可以在您的機器中使用與生產環境相同的部件啟動應用程序,從而縮小了開發和生產環境之間的差距。這使得開發人員更了解應用程序是如何構建在一起的,儘管他們可能只負責應用程序的一部分。這也使得在開發流程中的應用程序更容易的快速完成測試。
如何使用 Kubernetes 工作?
隨著更多的人採用 Kubernetes,新的問題出現了;應該如何針對基於集群環境進行開發?假設有 3 個環境,開發、質量保證和生產, 他們如何適應 Kubernetes?這些環境之間仍然存在著差異,無論是在開發周期(例如:在運行中的應用程序中我的代碼的變化上花費時間)還是與數據相關的(例如:我不應該在我的質量保證環境中測試生產數據,因為它裡面有敏感信息)。
那麼,我是否應該總是在 Kubernetes 集群中編碼、構建映像、重新部署服務,在我編寫代碼時重新創建部署和服務?或者,我是否不應該儘力讓我的開發環境也成為一個 Kubernetes 集群(或一組集群)呢?還是,我應該以混合方式工作?
用本地集群進行開發
如果繼續我們之前的比喻,上圖兩邊的洞表示當使其保持在一個開發集群中的同時修改應用程序的一種方式。這通常通過卷來實現
Kubernetes 系列
本 Kubernetes 系列資源是開源的,可以在這裡找到: https://github.com/red-gate/ks 。
我們寫這個系列作為以不同的方式構建軟體的練習。我們試圖約束自己在所有環境中都使用 Kubernetes,以便我們可以探索這些技術對數據和資料庫的開發和管理造成影響。
這個系列從使用 Kubernetes 創建基本的 React 應用程序開始,並逐漸演變為能夠覆蓋我們更多開發需求的系列。最後,我們將覆蓋所有應用程序的開發需求,並且理解在資料庫生命周期中如何最好地迎合容器和集群。
以下是這個系列的前 5 部分:
- ks1:使用 Kubernetes 構建一個 React 應用程序
- ks2:使用 minikube 檢測 React 代碼的更改
- ks3:添加一個提供 API 的 Python Web 伺服器
- ks4:使 minikube 檢測 Python 代碼的更改
- ks5:創建一個測試環境
本系列的第二部分將添加一個資料庫,並嘗試找出最好的方式來開發我們的應用程序。
通過在各種環境中運行 Kubernetes,我們被迫在解決新問題的同時也盡量保持開發周期。我們不斷嘗試 Kubernetes,並越來越習慣它。通過這樣做,開發團隊都可以對生產環境負責,這並不困難,因為所有環境(從開發到生產)都以相同的方式進行管理。
下一步是什麼?
我們將通過整合資料庫和練習來繼續這個系列,以找到使用 Kubernetes 獲得資料庫生命周期的最佳體驗方法。
這個 Kubernetes 系列是由 Redgate 研發部門 Foundry 提供。我們正在努力使數據和容器的管理變得更加容易,所以如果您正在處理數據和容器,我們希望聽到您的意見,請直接聯繫我們的開發團隊。 foundry@red-gate.com
我們正在招聘。您是否有興趣開發產品、創建未來技術 並採取類似創業的方法(沒有風險)?看看我們的軟體工程師 - 未來技術的角色吧,並閱讀更多關於在 英國劍橋的 Redgate 工作的信息。
via: https://medium.com/ingeniouslysimple/adopting-kubernetes-step-by-step-f93093c13dfe
作者:santiago arias 譯者:aiwhj 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive