kind(Kubernetes IN Docker) 是一個基於 docker 構建 Kubernetes 集羣的工具,很是適合用來在本地搭建基於 Kubernetes 的開發/測試環境。linux
想寫一篇 kind 的文章好久了,可是以前的 kind 都會有一個問題,每次系統重啓或 docker daemon 重啓的時候會致使原來的建立的集羣不可用,須要從新建立才能夠,從 0.8 版本開始,kind 再也不須要從新建立集羣了,基於這個集羣的資源部署也會自動重啓,無需再手動從新部署了,具體能夠參考 Issue https://github.com/kubernetes-sigs/kind/issues/148,就在前幾天 kind 0.8 版本發佈了因而打算寫一篇介紹 kind 的文章git
Kind 的安裝不包括 kubectl,你須要獨立安裝 kubectl 來經過命令行來操做 kubernetes 集羣,kubectl 的安裝能夠參考: https://kubernetes.io/docs/tasks/tools/install-kubectl/github
經過 https://github.com/kubernetes-sigs/kind/releases/latest 獲取最新的 release,根據本身的系統類型選擇相應的系統 release,下載 release 以後重命名爲 kind(Windows 系統 release 重命名爲 kind.exe),而後將其放在某一個目錄下,並要確保這個目錄在系統 PATH 中以方便的使用,linux 系統中可能須要配置文件權限docker
sudo chmod +x kind
使用 kind 建立 Kubernetes 集羣很是的方便,只須要一行命令便可bash
kind create cluster
刪除集羣工具
kind delete cluster
默認集羣名稱是 "kind",若是要建立多個或者指定集羣名稱,能夠指定 name 參數:測試
kind create cluster --name=k8s-cluster1
刪除集羣ui
kind delete cluster --name=k8s-cluster1
建立集羣成功以後,就可使用 kubectl 來操做 k8s 集羣了命令行
獲取 k8s 集羣全部資源示例:code
既然說是基於 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
除了搭建開發測試環境以外,kind 也支持建立高可用的 kuberneters 集羣,具體能夠參考官方文檔
kind 建立集羣成功以後,就能夠向 kubernetes 集羣部署資源了,開始你的 Kubernetes 之旅吧~