Kind

Kind 是 Kubernetes in Docker 的简写,是一个使用 Docker 容器作为 Node 节点,在本地创建和运行Kubernetes 集群的工具。适用于在本机创建 Kubernetes 集群环境进行开发和测试。使用 Kind 搭建的集群无法在生产中使用,但是如果你只是想在本地简单的玩玩 K8s,不想占用太多的资源,那么使用 Kind 是你不错的选择。

Kind 内部也是使用 Kubeadm 创建和启动集群节点,并使用 Containerd 作为容器运行时,所以弃用 dockershim对 Kind 没有什么影响。

Kind 的架构图如下所示,它将 Docker 容器作为 Kubernetes 的 Node 节点,并在该 Node 中安装 Kubernetes组件,包括一个或者多个 Control Plane 和一个或者多个 Work Nodes。这就解决了在本机运行多个 Node 的问题,而不需要虚拟化。

安装kind



Kind部署k8s_Powered by 金山文档


[root@docker ~]#kind -h
[root@docker ~]#kind create -h
可以看出只有一个 cluster 子命令可用,但是该子命令后面如何操作呢?

[root@docker ~]#kind create cluster -h
可以看到 create cluster 后面没有可用的子命令了,但是有一些 Flags 标志可以传递,但其实不传递任何的参数也可以创建一个 K8s 集群,这属于最简单创建 K8s 的方式,只需要执行如下所示的命令即可创建一个默认的集群(目前最新版本只支持到 K8s v1.25.3 版本):

[root@docker ~]#kind create cluster

[root@docker ~]#kubectl get node
默认的集群名称为 kind,在创建的时候我们可以使用参数 --name 指定创建的集群名称,可以创建多个群集:

[root@docker ~]#kind create cluster --name kind-2

此外还可以指定启动集群的 Node 镜像:

[root@docker ~]#kind create cluster --name kind-3 --image kindest/node:v1.23.4

然后可以使用 kind get clusters 命令来获取集群列表:

[root@docker ~]#kind get clusters
kind
kind-2

当有多个集群的时候,我们可以使用 kubectl 来切换要管理的集群:

# 切换到集群 `kind`
[root@docker ~]#kubectl config use-context kind-kind

要删除集群也非常简单,比如要删除 kind-2 集群:

[root@docker ~]#kind delete cluster --name kind-2

Kind 集群中的 Docker 镜像可以从互联网直接拉取,有时候可能比较缓慢,我们可以将本机镜像导入到 Kind 集群中去,比如使用如下命令可以将镜像导入到 kind-control-plane 节点去:

[root@docker ~]# kind load docker-image --nodes kind-control-plane nginx:mainline-alpine
Image: "" with ID "sha256:cc44224bfe208a46fbc45471e8f9416f66b75d6307573e29634e7f42e27a9268" not yet present on node "kind-control-plane", loading...

该配置文件表示我们一共要创建 3 个节点,一个控制节点,两个工作节点,在创建集群的时候只需要通过 --config 参数指定该文件即可:

[root@docker ~]#kind create cluster --config config.yaml