前一篇我們講到 Kubernetes 架構,後面會以實作輔以說明的方式來理解 Kubernetes。
因後續實作需求先來建置 kubernetes 的環境,官方提供的學習環境有以下三種:
以下個別說明:
kind 是一個可以在本地端執行 Kubernetes 叢集的工具,其概念是將 Kubernetes 中的 node 當成一個 container,意即使用 Docker container 來模擬 Kubernetes 中的 node,因此不需要額外的軟體或硬體,在任何可以執行 Docker 的平台上皆可使用 kind 這項工具。
minikube 是一個輕量級的開放原始碼工具,使用 container 或 VM 建立一個單節點或多節點的 Kubernetes 叢集,因其所需資源較小,故常用於本機 Kubernetes 的測試與開發,且可以在 Linux、macOS 及 Windows 系統上執行。
Kubeadm 可以部署單節點或多節點的 Kubernetes 叢集,不同於前兩者,kubeadm 可用於 Production 環境。
kind | minikube | kubeadm | |
---|---|---|---|
系統需求 | Linux、macOS、Windows | Linux、macOS、Windows | 相容的 Linux 發行版,如 Ubuntu、CentOS |
所需資源 | 因使用 Docker 來建立 VM,官方建議至少需 6 GB RAM | 2 CPUs 以上、2 GB 以上 RAM、20 GB 硬碟空間 | 每台機器(node)需要 2 CPUs 以上、2 GB 以上 RAM |
適用場景 | 開發 / 測試 | 開發 / 測試 | 開發 / 測試 / 生產 |
因個人使用 MacBook Air (規格沒特別提升),若使用 kubeadm 需要開個 Linux VM 來安裝,因 kubeadm 使用原生 Kubernetes 元件來部署叢集,怕電腦資源可能會不夠用…,故在這系列的文章應該以 kind 和 minikube 來實作,暫不考慮 kubeadm,但實際在 production 環境仍以 kubeadm 為主,故如果資源充足還是建議學習 kubeadm 來搭建 kubernetes 叢集。
接下來會介紹如何以 kind 和 minikube 來建立 kubernetes 叢集,同時會介紹 YAML 格式的撰寫。