使用 kind 快速搭建 kubernetes 環境

WeihanLi發表於2020-05-06

使用 kind 快速搭建 Kubernetes 環境

Intro

kind(Kubernetes IN Docker) 是一個基於 docker 構建 Kubernetes 叢集的工具,非常適合用來在本地搭建基於 Kubernetes 的開發/測試環境。

想寫一篇 kind 的文章很久了,但是之前的 kind 都會有一個問題,每次系統重啟或 docker daemon 重啟的時候會導致原來的建立的叢集不可用,需要重新建立才可以,從 0.8 版本開始,kind 不再需要重新建立叢集了,基於這個叢集的資源部署也會自動重啟,無需再手動重新部署了,具體可以參考 Issue https://github.com/kubernetes-sigs/kind/issues/148,就在前幾天 kind 0.8 版本釋出了於是打算寫一篇介紹 kind 的文章

Install

Kind 的安裝不包括 kubectl,你需要獨立安裝 kubectl 來通過命令列來操作 kubernetes 叢集,kubectl 的安裝可以參考: https://kubernetes.io/docs/tasks/tools/install-kubectl/

通過 https://github.com/kubernetes-sigs/kind/releases/latest 獲取最新的 release,根據自己的系統型別選擇相應的系統 release,下載 release 之後重新命名為 kind(Windows 系統 release 重新命名為 kind.exe),然後將其放在某一個目錄下,並要確保這個目錄在系統 PATH 中以方便的使用,linux 系統中可能需要配置檔案許可權

sudo chmod +x kind

操作 Kuberneters 叢集

使用 kind 建立 Kubernetes 叢集非常的方便,只需要一行命令即可

kind create cluster

刪除叢集

kind delete cluster

預設叢集名稱是 "kind",如果要建立多個或者指定叢集名稱,可以指定 name 引數:

kind create cluster --name=k8s-cluster1

刪除叢集

kind delete cluster --name=k8s-cluster1

建立叢集成功之後,就可以使用 kubectl 來操作 k8s 叢集了

獲取 k8s 叢集所有資源示例:

既然說是基於 docker 的,那麼我們再來看下 docker 資源,來驗證一下是否真的是基於 docker 的

docker ps

可以看到 docker 裡有一個 container,而 kind 建立的叢集就是基於這個 container 的,如果你直接刪掉了這個 container,通過 kind 建立的 k8s 叢集也會有問題,

再來看一下 network,執行 docker network ls

可以看到有一個名稱為 kind 的 network

我們可以進一步探究 kind-control-plane(就是上面的 docker container)

通過 docker exec kind-control-plane crictl ps 獲取這個容器內部的執行容器列表,這個容器內部通過 crictl 來操作容器,可以參考 https://github.com/kubernetes-sigs/cri-tools

More

除了搭建開發測試環境之外,kind 也支援建立高可用的 kuberneters 叢集,具體可以參考官方文件

kind 建立叢集成功之後,就可以向 kubernetes 叢集部署資源了,開始你的 Kubernetes 之旅吧~

Reference

相關文章