關閉
雲容器化編程- ASK & ACK

應用程式容器化的發展在2000年後已經在個別的系統上出現(例如 Sandboxie – Windows, LXC – Linux, Solaris Containers – Solaris),但要講到容器化的發光發亮,應該就是 Docker Inc公司推出的同名產品 Docker的時候。現在比較普遍使用的容器執行個體技術中,Docker佔有大多數,其他的技術如 Containerd 或 Cri-o 也開始慢慢普及。

未來預測:雲端將邁向容器化-ASK & ACK
 

 

什麽是應用程式容器

作業系統層虛擬化亦稱容器化,是一種將作業系統核心虛擬化的技術,允許使用者把應用程式分割成幾個獨立的單元,在不同的核心中運行。利用以下的圖表可以更清楚的表達。
 

未來預測:雲端將邁向容器化-ASK & ACK
 

傳統部署時代

早期,各個應用程式也在物理伺服器上直接執行。這種方式無法為應用程式定義資源邊界,導致潛在的資源分配問題。 例如,如果在物理伺服器上執行多個應用程式,可能會出現其中一個應用程式佔用大部分資源的情況, 結果可能導致其他應用程式的效能下降。 
 

虛擬化部署時代

作為解決方案,出現了虛擬化。虛擬化技術允許你在單一個物理伺服器的 CPU 上執行多台虛擬機器(VM)。 每一台虛擬機器是一台完整的系統,利用虛擬化硬體資源執行所有元件,包括作業系統。
虛擬化允許應用程式在虛擬機器之間隔離,提供一定程度的安全。虛擬化技術同時能夠更有效地利用物理伺服器上的硬體資源,並且因為可以輕鬆地新增或更新虛擬機器裡的應用程式,而實現更好的可伸縮性,降低硬體成本等。

容器部署時代

容器類似於虛擬機器,但是容器可以讓應用程式同時使用同一個共享作業系統(OS)。容器相比虛擬機器較為輕量。容器與虛擬機器類似,具有自己的檔案系統、CPU、記憶體、程序空間等。容器的部署也支持跨雲或跨OS版本進行移植。
 

容器化的好處

容器因為具有許多優勢而變得普及起來。下面列出的是容器的一些好處:

  • 敏捷的應用程式建立和部署:一般容器建立不需要很長的編碼,如果有合適的容器映像,只需一行的指令已經可以部署應用程式!
  • 持續開發、整合和部署:由於映像的不可變性,容器支援可靠且頻繁的容器映像構建和部署,並提供快速簡單的復原過程。
  • 跨開發、測試和生產環境的一致性:有跨雲和作業系統發行版本的可移植性,例如同一個容器映像可在 Ubuntu、RHEL、CoreOS、本地和任何雲端上執行。
  • 鬆散耦合、分散式、彈性、解放的微服務:應用程式被分解成較小的獨立部分, 並且可以動態部署和管理。需要更新其中獨立、分散的部分時,也比較傳統部署容易。
  • 因爲資源的隔離,應用程式的效能更能預測,資源利用也可以有更高效率和高密度。
 
容器化的趨勢

由於使用容器化有很多不同的好處,越來越多的應用程式也開始被容器化。以下的報告指出應用程式容器化的比例正持續上升。

未來預測:雲端將邁向容器化-ASK & ACK
圖片來源:https://www.stackrox.com/post/2020/03/6-container-adoption-trends-of-2020/


另一方面,一些常用的技術應用程式使用容器化的比率也很高,原因是因為廠商已經預先準備好應用程式的容器,可以把部署應用架構時所需的時間大大減少。

 

未來預測:雲端將邁向容器化-ASK & ACK

2020 November, Datadog

 

為什麼需要 Kubernetes ?

利用容器是執行應用程式的好方式。在生產環境中,你需要管理執行應用程式的容器,並確保不會停機。 例如,其中一個容器發生故障時,需要啟動另一個容器作替補。如果可以讓系統來處理,會更為容易和快捷。
 

Kubernetes 提供以下功能:
  • 服務發現和負載平衡:Kubernetes 可以使用 DNS 名稱或自己的 IP 地址公開容器,如果進入容器的流量很大, Kubernetes 可以負載平衡並分配網路流量,從而使部署穩定。
  • 自動部署和復原:使用 Kubernetes 描述已部署容器的期望狀態,再以受控的速率將實際狀態更改為期望狀態。例如,可以自動化 Kubernetes 來部署建立新容器, 刪除現有容器並將它們的所有資源用於新容器。
  • 自動完成裝箱計算:Kubernetes 允許指定每個容器所需的 CPU 和記憶體(RAM)。 當容器指定了資源請求時,Kubernetes 可以做出更好的決策來管理容器的資源。
  • 自我修復:Kubernetes 可以重新啟動失敗的容器、替換容器、刪除不回覆執行狀況檢查的容器。
 
阿里雲的Kubernetes

阿里雲的Container Service for Kubernetes (簡稱 ACK) 整合了阿里雲虛擬化、儲存、網絡與安全功能,提供高效能、可伸縮的容器應用程式管理能力,支援企業級容器化應用程式的整體生命週期管理。
ACK服務分別提供專有版和托管版兩個版本,使用專有版需要建立Kubernetes的Master節點和Worker節點,Master節點的作用是來管理Kubernetes的底層基礎架構,Worker節點是用來執行應用容器的個體,建立Master節點需要對Kubernetes有較深入的認識。如果使用托管版,只需要建立部署應用的Worker節點,比較適合大部分的使用者。
ASK叢集是阿里雲推出的無伺服器Kubernetes容器服務。無需購買節點即可直接部署容器應用,也無需對叢集進行節點維護和容量規劃。ASK根據應用程式配置的CPU和記憶體資源按使用量收費。ASK叢集提供完善的Kubernetes相容能力,同時降低了Kubernetes的使用門檻,讓使用者更專注於應用程式,而不是管理底層基礎架構。

ACK與ASK叢集的對比

未來預測:雲端將邁向容器化-ASK & ACK


ASK核心優勢

  • 免運維:低門檻快速建立Serverless叢集,快速部署容器應用。無需管理Kubernetes節點和伺服器,聚焦業務應用。
  • 彈性:無需擔心叢集節點的容量規劃。根據應用負載,輕鬆靈活擴展應用程式所需的資源。
  • 原生相容:支援原生Kubernetes應用和生態,包括Service、Ingress、Helm等,無縫遷移Kubernetes應用。
  • 按量計費:不執行不計費,也沒有資源閒置費用,同時Serverless帶來更低的運維成本。
 
 

專有版Kubernetes

托管版Kubernetes

Serverless Kubernetes

主要特點

需要自行建立Master節點及Worker節點。

只需建立Worker節點,Master節點由ACK建立並託管。

無需建立Master節點及Worker節點。

 

可以對叢集基礎設施進行更多的控制,需要自行規劃、維護、升級伺服器叢集

簡單、低成本、高可用,無需管理Master節點。

無需管理任何節點,可直接啟動應用程式。

收費方式

承擔Master節點、Worker節點以及其他基礎架構資源的費用。

承擔Worker節點以及其他基礎架構資源的費用。

按容器的資源使用量和時長計費。

叢集建立

未來預測:雲端將邁向容器化-ASK & ACK

未來預測:雲端將邁向容器化-ASK & ACK

未來預測:雲端將邁向容器化-ASK & ACK

 


ASK應用場景

  • 應用託管:ASK叢集中無需管理和維護節點,無需容量規劃,降低基礎架構管理和運維成本。
  • 彈性業務負載:對於有著明顯的波幅特徵的業務負載,例如線上教育、電子商務等產業,ASK叢集的伸縮能力可以顯著降低計算成本,減少閒置資源浪費,平滑應對突發流量高峰。
  • 定時任務:在ASK叢集中執行定時任務,任務結束停止計費。無需維護固定資源池,避免資源閒置浪費。
ASK的叢集建立比ACK叢集建立簡單很多,而且也有按量收費等的優勢。
 

以下會示範使用 ASK 部署網站程式,並且會利用容器映像的不可變性作快速簡單的復原。

ASK容器編程示範

  1. 在容器服務 – Kubernetes,按建立叢集 未來預測:雲端將邁向容器化-ASK & ACK
  2. 選擇ASK叢集,輸入叢集名稱,然後選擇地區、規格等,再按建立叢集未來預測:雲端將邁向容器化-ASK & ACK
  3. 建立叢集大概需要數分鐘時間未來預測:雲端將邁向容器化-ASK & ACK
  4. 在工作負載-任務,按使用鏡像建立未來預測:雲端將邁向容器化-ASK & ACK
  5. 輸入應用名稱,類型選Deployment,按下一步未來預測:雲端將邁向容器化-ASK & ACK
  6. 選擇鏡像名稱和鏡像TAG未來預測:雲端將邁向容器化-ASK & ACK
  7. 建立服務

未來預測:雲端將邁向容器化-ASK & ACK

未來預測:雲端將邁向容器化-ASK & ACK

   8. 建立完成後,按服務,可以找到負載均衡的外部IP

未來預測:雲端將邁向容器化-ASK & ACK

   9. 在瀏覽器打開負載平衡的外部IP便可以看到應用程式的回應

未來預測:雲端將邁向容器化-ASK & ACK

   10. 另一方面,因為ASK是利用 Serverless的關係,所以在雲服務器ECS裡,是不會有任何的ECS instance 資源。

未來預測:雲端將邁向容器化-ASK & ACK

 

容器的更新示範
以下是如何把新的鏡像部署到kubernetes,可以注意鏡像的版本是 nginx:1.7

  1. 按編輯
未來預測:雲端將邁向容器化-ASK & ACK
   2. 選擇鏡像TAG,選1.21.0,按更新

未來預測:雲端將邁向容器化-ASK & ACK

   3. 在容器組裏,可以看到容器有序的逐步更新到指定的容器TAG版本

未來預測:雲端將邁向容器化-ASK & ACK

 

容器的復原示範

  1. 選擇Deployment ,選擇復原。未來預測:雲端將邁向容器化-ASK & ACK
  2. 選擇要復原到的版本未來預測:雲端將邁向容器化-ASK & ACK
  3. 可以在容器組看到容器有序的復原到指定的版本未來預測:雲端將邁向容器化-ASK & ACK
 
結語

這示範,可以看到使用容器編程可以非常快速和簡單的部署應用程式鏡像,而且因爲容器鏡像的不可變特性,在不同環境作部署或復原也可以變得快捷。加上現在使用容器編程能利用Serverless部署,進一部把使用容器化應用程式的費用和維護複雜性降低。
 



撰寫人
未來預測:雲端將邁向容器化-ASK & ACK

解決方案工程師
覃永德 Barry Chum