前面我們介紹過,k8s是用來實現自動化部署、擴展、管理容器化應用的開源系統,它讓我們可以像控制一臺單一的計算機一樣控制整個節點集群。
假設此刻有3個節點,要怎麼用k8s來管理我們的機器上的應用容器的呢?
簡單來講,就是選擇其中一臺作為master節點,另外兩臺作為worker節點,分別在這3個節點上安裝k8s對應的組件,然後就可以使用k8s來管理節點上的應用容器。
k8s採用主從結構,將節點分為兩種類型,一種是matser節點,一種是worker節點,如下圖所示:
master節點作為控制節點,主要工作是對worker節點們進行管理,該節點上不運行容器,且一個master節點可以管理上百甚至上千個worker節點。
worker節點作為真正的工作節點,其上面會部署容器,運行業務對應的容器;
在正式開始安裝k8s之前,還需要了解下主節點和worker節點裡面都分別包含了什麼內容?
了解了這些,我們才能知道安裝的時候需要修改哪些配置文件以及修改的配置文件是幹嘛用的?
先來看一份比較簡單一點的k8s架構圖,看看k8s都包含了什麼:
k8s內部由很多組件構成,但主節點和worker節點包含的組件不同,組件各自負責不同的部分。
master節點包含的組件及其作用:
API Server:是k8s最核心的組件,統一的資源操作入口,包括提供認證、授權、訪問控制、API註冊和 發現等機制,其他的組件運行依賴於api server,通過api接口可以對k8s資源對象進行curd以及監控,也能進行健康,日誌等監控。
ETCD:是k8s的key-value資料庫,集群的狀態信息都持久化存儲在ETCD中。
Scheduler:屬於調度器的角色,負責決策pod按照哪種算法調度到哪個node上,它會把決策的信息通過ap iserver發送給kubelet,讓kubelet執行。
Controller-Manger:為了管理集群中不同的資源,k8s為不同的資源建立了對應的controller。k8s中分了8個controller,不同的 Controller 負責對不同資源的監控和管理。
worker節點包含的組件及其作用:
kubelet:真正的容器管理和維護者,它根據master節點上shcedule的調度決策去真正控制節點上的容器,維護 Container 的生命周期,同時也負責存儲(CSI)和網絡(CNI)的管理。
kube-proxy:集群內部通過kube-proxy訪問其他pod,其主要功能是提供集群內部的服務發現和負載均衡功能。
cAdvisor:cAdvisor是用來分析資源使用率和性能的工具,kubelet通過 cAdvisor 獲取其所在 Node 及容器(Docker)的數據,包含CPU、內存、文件系統和網絡使用等統計信息。
pod:Pod 是k8s 管理的最小單位,k8s將每個應用容器都放在pod裡面,每個 Pod 裡面可以包含多個容器(Docker),一個Node 上可以運行多個 Pod。
有了如上的了解,如果要部署一個lnmp的環境,同時需要連接redis,那麼簡單的架構圖如下:
上圖中:
matser節點上不安裝任何容器應用。
nginx和PHP分別在不同的pod裡面,同時被部署在了一個node1上面。
mysql和redis也分別在不同的pod裡面,同時都被部署在了node2節點上。
好了,關於k8s的基本組成,就先介紹到這裡,以後咱們會慢慢介紹k8s的原理。
有了基本的了解,下一章,就讓我們上手來安裝下k8s吧。
每天5分鐘|輕鬆掌握開發工作中必會的k8s-開篇
每天5分鐘|輕鬆掌握開發工作中必會的docker套路-compose搭建lnmp
每天5分鐘|輕鬆掌握開發工作中必會的docker套路-yaml語法
每天5分鐘|輕鬆掌握開發必會的docker套路-容器搭建lnmp
每天5分鐘|輕鬆掌握開發必會的docker套路-容器間通信