什麼是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 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...