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