首頁>Club>
8
回覆列表
  • 1 # 狗旦345

    整體來看,是一個老大,多個幹活的這種結構,基本上所有的分散式系統都是這樣,但是裡面的元件名稱就紛繁複雜,下面將一一解析。

    1、元資料儲存與叢集維護

    作為一個集群系統,總要有一個統一的地方維護整個叢集以及任務的元資料。而且作為集群系統的控制節點,為了高可用性,往往存在多個Master,在多個Master中間,總要有一個Leader。

    在Kubernetes裡面,統一的儲存使用etcd來儲存,Leader的選舉也是透過etcd進行,因而有apiserver有引數--etcd-servers,controller和scheduler都有引數--master string指向apiserver,並且有引數--leader-elect選舉出Leader,也會有熟悉的--address ip。

    2、API層與命令列

    作為一個分散式系統,每一層都會有自己的API,但是對外往往需要一個統一的API介面層,一般除了酷酷的介面之外,為了自動化,往往會有一個命令列可以執行操作,其實命令裡面封裝的也是對API的呼叫。

    對於Kubernetes,API層是一個單獨的程序apiserver提供,認證和鑑權也是在這一層實現的,所有對於kubernetes的管理平臺的訪問都是透過apiserver這一層進行的。

    對於命令列,kubernetes是kubectl,透過向apiserver呼叫執行操作,例如pod,service,deployment等。Kubernetes也有自己的類似package的管理,Kubernetes Helm,但是命令就變成了helm了。

    當執行一個容器的時候,放在哪臺節點上,這個過程是排程。對於Kubernetes,排程是由一個單獨的程序scheduler負責的。

    Kubernetes也支援透過對Node設定Label,從而將pod放在某些節點上。另外kubernetes還有NodeAffinity:

    RequiredDuringSchedulingRequiredDuringExecution:在排程的時候必須部署到某些節點,執行期如果條件不滿足則重新排程

    RequiredDuringSchedulingIgnoredDuringExecution :在排程的時候必須部署到某些節點,執行期就算了。

    PreferredDuringSchedulingIgnoredDuringExecution :在排程的時候最好部署到某些節點,執行期就算了。

  • 中秋節和大豐收的關聯?
  • 廚房煙道止逆閥什麼牌子好?