K8S集群入門:運行一個應用程序究竟需要多少集群?
如果你使用Kubernetes作為應用程序的操作平臺,那么你應該會遇到一些有關使用集群的方式的基本問題:
- 你應該有多少集群?
- 它們應該多大?
- 它們應該包含什么?
本文將深入討論這些問題,并分析你所擁有的一些選擇的利弊。
問題所在
作為一個軟件創建者,你應該開發并運行了多個應用程序。而且,你應該在不同的環境中運行這些應用程序的多個實例——例如,你應該有開發、測試以及生產環境。那么,不同的環境和應用程序的組合,我們可以得到一個“矩陣”:
在以上例子中,有3個應用程序和3個環境,兩兩組合為9個應用程序實例。每個應用程序實例是一個獨立的部署單位,可以獨立運行。
請注意,一個應用程序實例可能由多個組件組成,如前端、后端、數據庫等。在一個微服務應用程序中,一個應用程序實例將由所有微服務構成。
那么作為一個Kubernetes用戶,此時會遇到一些問題:
應該在一個集群中運行所有應用程序實例嗎?
或者每個應用程序實例都應該有一個單獨的集群嗎?
或者應該以上兩者相結合?
以上這些都是行之有效的方法——Kubernetes是一個靈活的系統,它并不會直接告訴你某一條指定的使用方法。
關于集群的搭配你有以下選擇:
- 一個大型的共享集群
- 許多小型的一次性集群
- 每個應用程序有一個集群
- 每個環境中有一個集群
前兩種方法分別是大型集群和小型集群的極端,其規模大小關系如下:
總而言之,如果一個集群包含了大量的節點和Pod,那么它就可以被定義為大于另一個集群。例如,一個有10個節點和100Pod的集群大于有1個節點和10個Pod的集群。
厘清了概念和選項,那么我們現在開始吧!
一個大型共享集群
這個方法是指將你所有的工作負載都運行在一個集群中:
通過這種方法,我們可以像通用基礎架構平臺一樣使用該集群——無論你需要運行什么,都可將其部署到現有的Kubernetes集群中。
Kubernetes中有一個命名空間的概念,可以 在邏輯上將集群的各個部分彼此分開。在上述情況下,你可以為每個應用程序實例創建單獨的命名空間。
接下來,我們來看看這個方法的優劣勢。