1. 程式人生 > >Kubernetes重要概念理解

Kubernetes重要概念理解

管理 工作 擁有 AS 最小 bubuko -m json 相關

Kubernetes重要概念理解


kubernetes是目前最主流的容器編排工具,是下一代分布式架構的王者。2018年的kubernetes第一個版本1.10已經發布。下面整理一下,kubernetes的一些基本概念。

kubernetes將集群中的機器劃分為Master節點和工作節點(Node)。其中Master節點上面運行著管理集群的一組進程kube-apiserver、kube-controller-manager,和kube-schedule,還有etcd服務。node作為集群中的工作節點,運行真正的應用程序,在node上Kubernetes管理的最小運行單元是Pod,Node上面運行著kubelet、kube-proxy、docker引擎服務進程。如下圖:

技術分享圖片

備:圖片來自網絡

Master節點:集群的控制節點
Kubernetes API Server(kube-aoiserver):提供了HTTP rest 接口的關鍵服務進程,是Kubernetes裏所有資源的增、刪、改、查等操作的唯一入口,也是集群控制的入口進程。
kube-controller-manager:Kubernetes裏所有資源的自動化控制中心,可以理解為資源對象的“大總管”。
kube-schedule:負責資源調度(Pod調度)的進程,相當於公交公司的“調度室”
etcd:

Kubernetes裏面的所有資源對象的數據都是保存在etcd中。

Node節點:Node節點可以是一臺物理機,也可以是一臺虛擬機。當某個Node宕機時,其上的工作會被Master自動轉移到其他節點上去。
kubelet:負責Pod對應的容器的創建、起停等任務。同時與Master節點密切協作,實現集群管理的基本功能。
kube-proxy:實現Kubernetes Service的通信和負載均衡機制的重要組件。
Docker Engine(Docker ):Docker引擎,負責本機容器的創建和管理工作。

Pod 概念
Pod是Kubernetes的最重要也是最基本的概念,每個Pod都有一個特殊的被稱為“根容器”的Pause容器。Pause容器對應的鏡像屬於Kubernetes平臺的一部分,除了Pause容器,每個Pod還包含一個或者多個緊密相關的用戶業務容器。
Kubernetes裏的所有資源對象都可以采用yaml或者JSON格式的文件來定義或者描述,如下是一個Pod的定義:
apiServer:v1
kind:Pod
metadata:
name:myweb
labels:
name:myweb
spec:
containers:
-name:myweb
image:kubeguide/tomcat-app:v1
ports:
-containterPort:8080
env:
-name:MYSQL_SERVICE_HOST
value:‘mysql‘
-name: MYSQL_SERVICE_PORT
value:‘3306’

Kind為Pod表明這是一個Pod的定義,metadata裏的name屬性為Pod的名字,metdata裏還能定義資源對象的標簽(Label),這裏聲明myweb擁有一個name=myweb的標簽(Label)。Pod裏所含的容器組成的定義則在spec一節中聲明,這裏定義了一名字為myweb、對應鏡像為kubeguide/tomcat-app:v1的容器,該容器註入了MYSQL_SERVICE_HOST=‘mysql’和MYSQL_SERVICE_PORT=‘3306‘的環境變量(env關鍵字),並在8080端口(containerPort)上啟動容器進程。

上面是Kubernetes中的一些最基本的概念,詳細內容後續會持續更新!

Kubernetes重要概念理解