Kubernetes(K8S) 入門進階實戰完整教程-01k8s介紹
kubernetes簡介
- Kubernetes 的本質是一組伺服器叢集,它可以在叢集的每個節點上執行特定的程式,來對節點中的容器進行管理。它的目的就是實現資源管理的自動化,主要提供瞭如下的功能:
○ 自我修復:一旦某一個容器崩潰,能夠在1秒左右迅速啟動新的容器。
○ 彈性伸縮:可以根據需要,自動對叢集中正在執行的容器數量進行調整。
○ 服務發現:服務可以通過自動發現的形式找到它所依賴的服務。
○ 負載均衡:如果一個服務啟動了多個容器,能夠自動實現請求的負載均衡。
○ 版本回退:如果發現新發布的程式版本有問題,可以立即回退到原來的版本。
○ 儲存編排:可以根據容器自身的需求自動建立儲存卷。
○ ……
kubernetes元件
-
kubernetes元件介紹
● 一個 kubernetes 叢集主要由控制節點(master)、工作節點(node)構成,每個節點上都會安裝不同的元件。
● 控制節點(master):叢集的控制平面,負責叢集的決策。
○ API Server:叢集操作的唯一入口,接收使用者輸入的命令,提供認證、授權、API註冊和發現等機制。
○ Scheduler:負責叢集資源排程,按照預定的排程策略將 Pod 排程到相應的 node 節點上。
○ ControllerManager:負責維護叢集的狀態,比如程式部署安排、故障檢測、自動擴充套件和滾動更新等。
○ Etcd:負責儲存叢集中各種資源物件的資訊。
● 工作節點(node):叢集的資料平面,負責為容器提供執行環境。
○ Kubelet:負責維護容器的生命週期,即通過控制 Docker ,來建立、更新、銷燬容器。
○ KubeProxy:負責提供叢集內部的服務發現和負載均衡。
○ Docker:負責節點上容器的各種操作。 -
kubernetes元件呼叫關係的示例
● 以部署一個 Nginx 服務來說明 Kubernetes 系統各個元件呼叫關係:
● ① 首先需要明確,一旦 Kubernetes 環境啟動之後,master 和 node 都會將自身的資訊儲存到etcd資料庫中。
● ② 一個Nginx服務的安裝請求首先會被髮送到 master 節點上的 API Server 元件。
● ③ API Server 元件會呼叫 Scheduler 元件來決定到底應該把這個服務安裝到那個 node 節點上。此時,它會從 etcd 中讀取各個 node 節點的資訊,然後按照一定的演算法進行選擇,並將結果告知 API Server 。
● ④ API Server 呼叫 Controller-Manager 去呼叫 Node 節點安裝 Nginx 服務。
● ⑤ Kubelet 接收到指令後,會通知 Docker ,然後由 Docker 來啟動一個 Nginx 的 Pod 。Pod 是 Kubernetes 的最小操作單元,容器必須跑在 Pod 中。
● ⑥ 一個 Nginx 服務就運行了,如果需要訪問 Nginx ,就需要通過 kube-proxy 來對 Pod 產生訪問的代理,這樣,外界使用者就可以訪問叢集中的 Nginx 服務了。
kubernetes概念
● Master:叢集控制節點,每個叢集要求至少有一個 Master 節點來負責叢集的管控。
● Node:工作負載節點,由 Master 分配容器到這些 Node 工作節點上,然後 Node 節點上的 Docker 負責容器的執行。
● Pod:Kubernetes 的最小控制單元,容器都是執行在 Pod 中的,一個 Pod 中可以有一個或多個容器。
● Controller:控制器,通過它來實現對 Pod 的管理,比如啟動 Pod 、停止 Pod 、伸縮 Pod 的數量等等。
● Service:Pod 對外服務的統一入口,其下面可以維護同一類的多個 Pod 。
● Label:標籤,用於對 Pod 進行分類,同一類 Pod 會擁有相同的標籤。
● NameSpace:名稱空間,用來隔離 Pod 的執行環境。