前一張提到了容器化跟 docker,那如果今天產品服務的流量變的很高,有很多人在使用時,Kubernetes (K8s) 就是來負責好好管理這些服務的自動管家。
線上的流量時隨時在變動的,雖然容器化提供了在不同環境下程式都可以運作的一致性,但是如果同時有許多使用者,系統也會容易不穩定,但如果又需要由人工去判斷是否要調整環境以因應需求,不只來不及反應,也容易出錯。
Kubernetes 提供的自動擴展(Auto-scaling)功能,可以依據 Devops 工程師或 SRE 工程師的設定,自動增加或是減少容器的數量,更可以節省不必要的成本。
Kubernetes 也同時自動監控每個容器的健康狀況,如果發現異常,就會將服務導到其他容器上,維持線上服務的穩定。
工程師在將服務用容器化後,在進行部署(Deployment)時,持續部署(CD)工具就會交給 Kubernetes 進行部署,讓服務上線。
在進到維運階段後,Kubernetes 負責監控流量跟健康度,確認是否需要 Auto-scaling 或是在服務壞掉時重啟新的容器,也同時有日誌紀錄服務的狀態。
Google Cloud、AWS、Microsoft Azure 雲端服務商目前都提供了「託管式 Kubernetes 服務」,由他們來負責底層設施跟維護問題,而工程團隊只需要專注於如何在 Kubernetes 上部署自己的應用程式。