使用 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)
通过 dockerexeckind-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