如何把應用轉移到Kubernetes

Ben Searsweb

Kubernetes是時下最流行的管理和編排工具,它提供了一個配置驅動的框架,讓咱們能夠經過定義和操做得到整個網絡、磁盤和應用,並以可伸縮且易於管理的方式進行。docker

若是咱們尚未完成應用容器化,那麼把應用轉移到Kubernetes上會是一件高強度的工做,本文目的則是介紹應用與Kubernetes集成的方法。數據庫

Step 1 — 將應用容器化

容器是能夠獨立運行的基本操做單元,不一樣於傳統虛擬機依賴模擬操做系統,容器利用各類內核特性來提供與主機隔離的環境。安全

對於有經驗的技術人員來講,整個容器化過程不算複雜——使用docker,定義一個包含安裝步驟和配置(下載包、依賴等等)的dockerfile,最後構建一個可讓開發人員使用的鏡像便可。網絡

Step 2 — 採用一個多實例架構

在咱們把應用遷移到Kubernetes以前,須要確認向最終用戶交付的方式。架構

傳統web應用的多租戶結構,是全部用戶共享單個數據庫實例和應用實例,這種形式在Kubernetes中工做沒什麼問題,但咱們建議考慮把應用改形成多實例架構,以充分利用Kubernetes和容器化應用的優點特性。app

採用多實例架構的好處包括:框架

穩定性——單點故障,不影響其餘實例;運維

可伸縮——經過多實例架構,擴展也就是增長計算資源的事;而對於多租戶架構,須要建立集羣應用體系結構的部署可能會有些麻煩;分佈式

安全性——當您使用單個數據庫時,全部數據都在一塊兒,一旦發生安全漏洞,全部用戶都會收到威脅,而採用多數據中心,只會有一個用戶的數據面臨風險;

Step 3 — 肯定應用的資源消耗

爲了得到成本效益,咱們須要肯定運行單個應用實例所需的CPU、內存和存儲量。

咱們能夠經過設置限制,精確調整Kubernetes節點須要多少空間、確保節點過載或者不可用等等。

這須要咱們反覆的嘗試和驗證,也有一些工具能夠替咱們達成這一目的。

  • 在肯定資源分配以後,咱們能夠計算Kubernetes節點的最佳資源大小;

  • 將每一個實例須要的內存或CPU乘以100(節點能夠容納的最大Pod數),咱們能夠大概估計你的節點應該有多少內存和CPU;

  • 對應用程序進行壓力測試以確保它在滿節點時順利運行。

Step 4 — 與Kubernetes集成

Kubernetes集羣運行起來,咱們會發現許多DevOps實踐水到渠成——

自動縮放Kubernetes節點

節點用滿時,一般須要配置更多的節點以便全部實力順暢運行,自動縮放的Kubernetes節點便派上了用場。

自動縮放應用程序

根據使用狀況,某些應用須要按比例縮放,Kubernetes使用可自動縮放部署的觸發器來實現,命令:

kubectl autoscale deployment myapp --cpu-percent = 50 --min = 1 --max = 10

如上,當CPU百分比超過50時,將設置myapp部署擴展到10個容器。

在用戶操做時自動配置實例

對於多實例架構,最終用戶在Kubernetes中部署應用程序,而爲了實現這一點,咱們應該考慮將應用與Kubernetes API集成,或者使用第三方解決方案來提供請求實例的入口。

經過用戶操做定義自定義主機名

最近愈來愈多的終端用戶將其域名附加到應用程序中,而Kubernetes提供了一些工具來使這個過程變得更加簡單,甚至到達自助服務的地步(用戶按下一個按鈕來設置域指向),咱們可使用Nginx Ingress等系統來完成此操做。

最後打個廣告

Kubernetes提出的一系列概念抽象,很是符合理想的分佈式調度系統。但大量高難度技術概念,同時也造成了一條陡峭的學習曲線,直接拉高了Kubernetes的使用門檻。

好雨雲開源PaaS Rainbond則將這些技術概念包裝成爲「Production-Ready」的應用,能夠做爲一個Kubernetes面板,開發者不須要特殊學習便可使用。

除此以外,Kubernetes自己是一個容器編排工具,並不提供管理流程,而Rainbond提供現成的管理流程,包括DevOps、自動化運維、微服務架構和應用市場等,能夠開箱即用。

進一步瞭解:https://www.goodrain.com/scene/k8s-docker

相關文章
相關標籤/搜索