使用 kind 快速搭建 Kubernetes 環境 Intro kind(Kubernetes IN Docker) 是一個基於 docker 構建 Kubernetes 集群的工具,非常適合用來在本地搭建基於 Kubernetes 的開發/測試環境。 想寫一篇 kind 的文章很久了,但是之前的 ...
使用 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
- https://github.com/kubernetes-sigs/kind
- https://kind.sigs.k8s.io/docs/user/quick-start/
- https://kind.sigs.k8s.io/docs/contributing/1.0-roadmap
- https://github.com/kubernetes-sigs/kind/issues/148
- https://github.com/kubernetes-sigs/cri-tools