什麼是k8s,了解k8s各個元件的功能

2021-10-13 09:51:26 字數 2873 閱讀 4841

什麼是kubernetes?

kubernetes(k8s)是自動化容器操作的開源平台,這些操作包括部署,排程和節點集群間擴充套件。如果你曾經用過docker容器技術部署容器,那麼可以將docker看成kubernetes內部使用的低級別元件。kubernetes不僅僅支援docker,還支援rocket,這是另一種容器技術。

使用kubernetes可以:

自動化容器的部署和複製

隨時擴充套件或收縮容器規模

將容器組織成組,並且提供容器間的負載均衡

很容易地公升級應用程式容器的新版本

提供容器彈性,如果容器失效就替換它,等等…

實際上,使用kubernetes只需乙個部署檔案,使用一條命令就可以部署多層容器(前端,後台等)的完整集群:

$ kubectl create -f single-config-file.yaml

kubectl是和kubernetes api互動的命令列程式。現在介紹一些核心概念。

集群

集群是一組節點,這些節點可以是物理伺服器或者虛擬機器,之上安裝了kubernetes平台。下圖展示這樣的集群。注意該圖為了強調核心概念有所簡化。這裡可以看到乙個典型的kubernetes架構圖。

上圖可以看到如下元件,使用特別的圖示表示service和label:

podcontainer(容器)

label(label)(標籤)

replication controller(複製控制器)

service(enter image description here)(服務)

node(節點)

kubernetes master(kubernetes主節點)

pod

pod(上圖綠色方框)安排在節點上,包含一組容器和卷。同乙個pod裡的容器共享同乙個網路命名空間,可以使用localhost互相通訊。pod是短暫的,不是持續性實體。你可能會有這些問題:

如果pod是短暫的,那麼我怎麼才能持久化容器資料使其能夠跨重啟而存在呢? 是的,kubernetes支援卷的概念,因此可以使用持久化的卷型別。

是否手動建立pod,如果想要建立同乙個容器的多份拷貝,需要乙個個分別建立出來麼?可以手動建立單個pod,但是也可以使用replication controller使用pod模板建立出多份拷貝,下文會詳細介紹。

如果pod是短暫的,那麼重啟時ip位址可能會改變,那麼怎麼才能從前端容器正確可靠地指向後台容器呢?這時可以使用service,下文會詳細介紹。

lable

replication controller

是否手動建立pod,如果想要建立同乙個容器的多份拷貝,需要乙個個分別建立出來麼,能否將pods劃到邏輯組裡?

replication controller確保任意時間都有指定數量的pod「副本」在執行。如果為某個pod建立了replication controller並且指定3個副本,它會建立3個pod,並且持續監控它們。如果某個pod不響應,那麼replication controller會替換它,保持總數為3.如下面的動畫所示:

如果之前不響應的pod恢復了,現在就有4個pod了,那麼replication controller會將其中乙個終止保持總數為3。如果在執行中將副本總數改為5,replication controller會立刻啟動2個新pod,保證總數為5。還可以按照這樣的方式縮小pod,這個特性在執行滾動公升級時很有用。

當建立replication controller時,需要指定兩個東西:

pod模板:用來建立pod副本的模板

label:replication controller需要監控的pod的標籤。

現在已經建立了pod的一些副本,那麼在這些副本上如何均衡負載呢?我們需要的是service。

service

如果pods是短暫的,那麼重啟時ip位址可能會改變,怎麼才能從前端容器正確可靠地指向後台容器呢?

service是定義一系列pod以及訪問這些pod的策略的一層抽象。service通過label找到pod組。因為service是抽象的,所以在圖表裡通常看不到它們的存在,這也就讓這一概念更難以理解。

下述動畫展示了service的功能。注意該圖作了很多簡化。如果不進入網路配置,那麼達到透明的負載均衡目標所涉及的底層網路和路由相對先進。如果有興趣,這裡有更深入的介紹。

有乙個特別型別的kubernetes service,稱為』loadbalancer』,作為外部負載均衡器使用,在一定數量的pod之間均衡流量。比如,對於負載均衡web流量很有用。

node

節點(上圖橘色方框)是物理或者虛擬機器,作為kubernetes worker,通常稱為minion。每個節點都執行如下kubernetes關鍵元件:

kubelet:是主節點**。

kube-proxy:service使用其將鏈結路由到pod,如上文所述。

docker或rocket:kubernetes使用的容器技術來建立容器。

kubernetes master

集群擁有乙個kubernetes master(紫色方框)。kubernetes master提供集群的獨特視角,並且擁有一系列元件,比如kubernetes api server。api server提供可以用來和集**互的rest端點。master節點包括用來建立和複製pod的replication controller。

K8S各個元件介紹

k8s集群架構 乙個k8s集群是由兩大部分組成 master節點和node節點 一.master節點主要包括api server scheduler controller manager etcd幾大元件 1.api server 提供其他模組之間的資料互動和通訊的樞紐 其他模組通過api serv...

入門了解K8S

1 k8s,就是基於容器的集群管理平台,它的全稱,是kubernetes。kubernetes 是什麼?kubernetes 這個詞 於希臘語,有主管 舵手 船長的意思,我們從中能聽到一絲管理的意味,從圖示中也能看出來。乙個k8s系統,通常稱為乙個k8s集群 cluster 這個集群主要包括兩個部分...

K8s部署prometheus監控K8s細節

prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...