基本工作過程
Kubernetes 的核心工作過程:
資源對象:Node、Pod、Service、Replication Controller 等都可以看作一種資源對象操作:通過使用 kubectl 工具,執行增刪改查存儲:對象的目標狀態(預設狀態),保存在 etcd 中持久化儲存;自動控制:跟蹤、對比 etcd 中存儲的目標狀態與資源的當前狀態,對差異資源糾偏,自動控制集群狀態。Kubernetes 實際是:高度自動化的資源控制系統,將其管理的一切抽象為資源對象,大到服務器 Node 節點,小到服務實例 Pod。
Kubernetes 的資源控制是一種聲明+引擎的理念:
聲明:對某種資源,聲明他的目標狀態自動:Kubernetes 自動化資源控制系統,會一直努力將該資源對象維持在目標狀態。架構(物理+邏輯)
Kubernetes 集群,是主從架構:
Master:管理節點,集群的控制和調度Node:工作節點,執行具體的業務容器下述幾個組件,都是獨立的進程,每個進程都是 Go 語言編寫,實際部署 Kubernetes 集群,就是部署這些程序。
Master節點:kube-apiserverkube-controller-managerkube-schedulerNode節點:kubeletkube-proxy具體,2 種角色的節點,需要運行的進程和職責不同,詳細描述如下。
Master 管理節點:管理整個 Kubernetes 集群,接收外部命令,維護集群狀態。
apiserver: Kubernetes API Server集群控制的入口資源的增刪改查,持久化存儲到 etcdkubectl 直接與 API Server 交互,默認端口 6443。etcd: 一個高可用的 key-value 存儲系統作用:存儲資源的狀態支持 Restful 的API。默認監聽 2379 和 2380 端口(2379提供服務,2380用於集群節點通信)(疑問:集群節點,是說 etcd 的集群? Master 集群?)scheduler補充說明:
scheduler和controller-manager都是通過apiserver從etcd中獲取各種資源的狀態,進行相應的調度和控制操作。
Node 節點:Master 節點,將任務調度到 Node 節點,以 docker 方式運行;當 Node 節點宕機時,Master 會自動將 Node 上的任務調度到其他 Node 上。
kubelet: 本節點Pod的生命週期管理,定期向Master上報本節點及Pod的基本信息Kubelet是在每個Node節點上運行agent負責維護和管理所有容器:從 apiserver 接收 Pod 的創建請求,啟動和停止PodKubelet不會管理不是由Kubernetes創建的容器定期向Master上報信息,如操作系統、Docker版本、CPU、內存、pod 運行狀態等信息集群的高可用
Kubernetes 集群,在生產環境,必須實現高可用:
實現Master節點及其核心組件的高可用;如果Master節點出現問題的話,那整個集群就失去了控制;具體的 HA 示意圖:
上述方式可以用作 HA,但仍未成熟,據瞭解,未來會更新升級 HA 的功能.
具體工作原理:
etcd 集群:部署了3個Master節點,每個Master節點的etcd組成集群入口集群:3個Master節點上的APIServer的前面放一個負載均衡器,工作節點和客戶端通過這個負載均衡和APIServer進行通信pod-master保證僅是主master可用,scheduler、controller-manager 在集群中多個實例只有一個工作,其他為備用轉自:http://ningg.top/kubernetes-series-03-architecture/