1. 程式人生 > >Using kubectl to Create a Deployment

Using kubectl to Create a Deployment

如果你有一個正在執行的kubernates叢集,那麼你可以在它上面部署你的容器應用。你要建立一個deployment配置,它是來告訴kubernates如何建立並且更新你的應用。一旦你建立了一個deployment,kubernates master就會排程應用例項到叢集中的一個獨立的節點上。

一旦應用例項被建立了,那麼kubernates deployment controller 就會持續的監控這些例項。如果node上的例項關閉或者刪除了,那麼deployment controller就會替換掉它。這為處理機器故障或者維護提供了一個自我修復的機制

在以前,通常會使用安裝指令碼來開啟應用,但是在應用發生故障的時候不會重新恢復。為了能夠建立應用例項並且保持他們能跨節點執行,kubernates deployment 提供了一種完全不同的應用管理方式。

f

Viewing Pods and Nodes

當建立一個deployment的時候,kubernates 會建立一個pod來主辦你的應用例項。pod是kubernates抽象出來的,它代表一組一個或者多個的應用容器和這些容器的共享資源,包括:

共享儲存卷、網路(獨立的叢集ip)、如何去執行每個容器的資訊(例如容器映象版本,指定使用哪個埠)

Pod為特定於應用程式的“邏輯主機”建模,可以包含相對緊密耦合的不同應用程式容器。例如一個pod可能會同時包含一個app的容器和另一個不同的容器。pod裡的容器享有ip地址和埠,聯合定位和排程,在同一個node的共享context中執行。

在kubernates平臺裡pods是原子的一個單元。當建立一個deployment的時候,這個deployment會建立帶有容器的pods,每一個pod都會關聯到被排程的node上,並且直到pod停止或者被刪除。如果node故障了那麼這個上的pods就會被叢集上其他的可用的node來排程

pod是執行在node上的。node是kubernates裡工作的機器,可能是虛擬的或者物理的機器。每一個node都被master管理。一個node可以有多個pods,kubernates master可以自動通過跨叢集中的node來排程pods,也可以控制每個node可用的資源。

每個kubernates node執行至少包括:

kubelet:負責處理master和node之前的通訊,管理執行在機器上的pods

執行時的container: 負責從遠端拉取映象,解壓容器,執行應用程式。