kubeadm 部署 Kubernetes 原理

本文是在嘗試搭建 Kubernetes 學習環境過程中的對一些部署原理的整理

Kubernetes 的部署:

Kubernetes有很多組件,每個組件都是一個需要被執行的、單獨的二進制文件。

  • 一種部署方式:將這些二進制文件傳輸到指定的機器當中,然後編寫控制腳本來啓停這些組件。
  • 另一種方式:將每個組件做一個容器鏡像,然後在每臺宿主機用docker run指令啓動這些組件容器。

kubeadm 部署方式:

由於 kubelet 不僅要和容器運行時打交道,還需要直接操作宿主機,比如配置容器網絡、管理容器數據卷等,所以容器裏運行 kubelet 會很麻煩。
所以,kubeadm 把 kubelet 直接運行在宿主機上,然後使用容器部署其他的 Kubernetes 組件。

kubeadm 部署流程:

  1. 首先在機器上手動安裝 docker、kubeadm、kubelet、kubectl 幾個二進制文件;然後才能再容器化部署其他 Kubernetes 組件。

  2. kubeadm init
    (1)檢查工作(Preflight Checks):檢查內核版本、Cgroups模塊可用性、組件版本、工作端口占用情況、Docker等依賴軟件安裝情況……
    (2)生成對外提供服務的證書及對應的目錄
    (3)生成其他組件訪問 kube-apiserver 所需的配置文件
    (4)爲 Master 組件生成 Pod 配置文件:利用這些配置文件,通過 Kubernetes 中特殊的容器啓動方法“Static Pod”(kubelet 啓動時自動加載固定目錄的 Pod YAML 文件並啓動)便可以 Pod 方式部署起 kube-apiserver、kube-controller-manager、kube-scheduler 三個 Master 組件了。後面還會生成 Etcd 的 Pod YAML 文件。
    (5)爲集羣生成一個 bootstrap token :後面想要加入集羣的機器想和 apiserver 打交道,需要獲取相應的證書文件,所以 bootstrap token 到時候就扮演這樣一個安全驗證的角色。
    (6)安裝默認插件,如 kube-proxy 和 DNS,分別提供集羣的服務發現和 DNS 功能。

  3. kubeadm join
    kubeadm init 生成 bootstrap token 之後,可以在任意一臺安裝了 kubelet 和 kubeadm 的機器上執行 kubeadm join 加入集羣的了。

minikube :

用來快捷地在本地搭建一套單節點的 Kubernetes 集羣,適合入門測試開發使用。
具體可以運行 minikube start 看看主要做了那些事:

  1. 創建虛擬機 VM (由於我這裏是已經在 VM 中運行的 minikube,所以採用 --vm-driver=none 方式,便不需要格外的創建虛擬機了)
  2. 在虛擬機配置環境
  3. 下載 kubeadm 和 kubelet 工具
  4. 拉取鏡像並啓動 Kubernetes (這裏是通過 kubeadm 部署實現)
  5. 配置主機環境,主要包括各組件訪問授權、健康檢查等工作
  6. 在用戶操作系統配置 kubectl

如圖:minikube安裝流程
具體關於 minikube 的搭建步驟可以查看:《VM中利用minikube搭建單節點Kubernetes集羣(國內環境流暢)》


筆記《深入剖析Kubernetes - 張磊 | 極客時間》
參考:10 | Kubernetes一鍵部署利器:kubeadm

發佈了106 篇原創文章 · 獲贊 111 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章