Kubernetes正在迅速成為部署和管理Cloud Native(云原生)的一個新標準。如果是作為一個新手的話來嘗試理解臃腫的官方文檔是比較痛苦的一件事辅搬。Kubernetes的組件也比較多,這邊文章主要提供Kubernetes的一些重要組件的簡化視圖以及用途概述
硬件方面
Node - 節(jié)點
節(jié)點是Kubernetes中計算硬件的最小單位孝冒。 可以簡單理解節(jié)點是機房中的物理機添履,或托管在云服務器(例如阿里云)上的虛擬機驻谆。 更為抽象的形容可以理解節(jié)點是一組可用的CPU和RAM資源炭玫。
Cluster - 集群
集群可以視作幾個節(jié)點組合在一起工作的一個群體奈嘿。Kubernetes將各個節(jié)點上的資源匯集起來形成一個更為強大的機器,所以實際工作中础嫡,某個單一節(jié)點出現(xiàn)故障的話指么,集群也可以自動平衡工作,來保證整個程序還是能正常運行的榴鼎。
Persistent Volumes - 持久卷
在Kuberenetes管理下運行的程序無法保證在特定節(jié)點上運行,因此無法將程序運行下的數(shù)據(jù)保存到固定的位置晚唇。雖然數(shù)據(jù)可以暫時保留在運行的容器中巫财,但是這些數(shù)據(jù)會隨著容器消失而消失。那么我們怎么才能永久保存數(shù)據(jù)在固定的位置上呢哩陕?Kubernetes使用一種叫持久卷來保存永久數(shù)據(jù)平项,這個持久卷其實可以直接理解為外接硬盤即機械硬盤赫舒,固態(tài)硬盤這種設備,通過掛載到節(jié)點集群的文件系統(tǒng)闽瓢。這個硬盤設備可以在機房接癌,也可以是云服務提供商的儲存服務
軟件方面
Container - 容器
容器即指用Docker鏡像生成的容器。如果不理解容器的話可以自行百度扣讼,這篇文章就不具體描述什么是容器了
Pod
Kuberenetes不是直接運行容器的缺猛,而是將一個或者多個容器包裝到一個叫Pod(吊艙)的結構中。在Pod中的容器可以共享資源和網(wǎng)絡椭符,也能很容易的跟Pod中另外的容器進行通信荔燎。
Pod在Kuberenets作為一個副本單位存在,當單個Pod承載量過高時销钝,Kuberenetes可以根據(jù)配置來自動部署Pod副本到集群有咨。雖然Pod內(nèi)可以編排多個容器,但是官方上不建議這么做蒸健,因為添加Pod副本時內(nèi)部的容器也同時會增加座享,為了避免浪費不必要的資源,比較合理的方法是每個Pod中編排一個容器似忧。
Deployment - 部署
當在系統(tǒng)中有很多Pods時渣叛,管理和部署Pods就會比較麻煩。Kuberenetes提供了另外一個抽象層來進行管理:‘部署’橡娄。
這個‘部署’的主要目的是聲明一次應該運行一個pod的副本數(shù)量和需要的資源诗箍。并且監(jiān)視副本中pods的運行情況,如果其中某些pods掛了挽唉,則會自動銷毀然后重新創(chuàng)建pods滤祖。有了‘部署’的話就不需要手動管理每個pod了,只需要聲明系統(tǒng)需要的狀態(tài)瓶籽,然后kuberenetes會自動幫你管理匠童。
Ingress - 入口
在默認的Kuberenetes環(huán)境下,Pod是與外部網(wǎng)絡隔離的塑顺,如果要與pod進行通信的話需要打開一個通信通道汤求。Kuberenetes提供很多種不同的通信通道類型,比較常用的通信通道是Ingress - 入口 和 LoadBalancer - 負載均衡