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