Kind快速起步

安装kind

备注

本段落安装实践在 Asahi Linux ( ARM Atlas 架构 )上完成,但方法是通用的,适合不同的Linux发行版

使用 Go Atlas 安装

对于 Go Atlas 开发人员来说,使用 go get / go install 是最方便的方法:

使用go install命令安装kind
go install sigs.k8s.io/kind@v0.17.0

备注

其实也不是 最方便 ,因为有万恶的GFW存在,通过 go install 会遇到网络超时,请采用以下方法之一规避:

安装目录位于 ~/go/bin/kind ,可以在 ~/.bashrc 中添加 golang 环境变量:

配置go环境变量以便能够使用 kind
cat << 'EFO' > ~/.bashrc
export PATH=$HOME/go/bin:$PATH
EOF

. ~/.bashrc

完成安装后,可以直接部署 kind集群 (下文的 “创建集群” 段落只是一个快速demo)

macOS 上使用 Homebrew 安装

在macOS上通过Homebrew安装kind
brew install kind kubectl
  • 采用 kind多节点集群 配置3个管控节点,5个工作节点的集群配置文件如下:

kind构建3个管控节点,5个工作节点集群配置
# a cluster with 3 control-plane nodes and 5 workers
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker
- role: worker
- role: worker
  • 执行创建集群,集群命名为 dev :

kind构建3个管控节点,5个工作节点集群配置
export CLUSTER_NAME=dev
export reg_name='kind-registry'
kind create cluster --name "${CLUSTER_NAME}" --config kind-config.yaml
  • 完成后检查 kubectl get nodes -o wide 输出:

通过brew安装部署3个管控节点,5个工作节点kind集群,可以看到运行集群节点
NAME                 STATUS   ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
dev-control-plane    Ready    control-plane   23m   v1.25.3   172.18.0.3    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9
dev-control-plane2   Ready    control-plane   23m   v1.25.3   172.18.0.9    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9
dev-control-plane3   Ready    control-plane   22m   v1.25.3   172.18.0.8    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9
dev-worker           Ready    <none>          21m   v1.25.3   172.18.0.6    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9
dev-worker2          Ready    <none>          21m   v1.25.3   172.18.0.4    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9
dev-worker3          Ready    <none>          21m   v1.25.3   172.18.0.7    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9
dev-worker4          Ready    <none>          21m   v1.25.3   172.18.0.2    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9
dev-worker5          Ready    <none>          21m   v1.25.3   172.18.0.5    <none>        Ubuntu 22.04.1 LTS   5.15.49-linuxkit   containerd://1.6.9

二进制安装kind(记录未实践)

kind release 提供了不同架构下的二进制执行程序,可以直接下载使用:

  • Linux x86_64平台安装:

在Linux x86_64平台上安装kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
在macOS平台上安装kind
# for Intel Macs
[ $(uname -m) = x86_64 ]&& curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-darwin-amd64
# for M1 / ARM Macs
[ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-darwin-arm64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind

安装kind(归档)

备注

本段落安装方法是早期我的实践笔记,已废弃。当前(2022年11月)的安装方法见上文

运行环境准备

为了达到最佳性能和功能,我在 Docker in Docker 的测试运行环境中,采用的是:

  • CentOS 8 - 可以直接 安装CentOS8 或者 升级CentOS 7到CentOS 8

  • Docker-CE最新版本 - 在CentOS 8上安装Docker CE 这里我采用docker-ce最新版本:

    dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
    dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.2.el7.x86_64.rpm
    dnf install docker-ce
    systemctl enable --now docker
    
  • Go最新版本 - 安装 Go 语言包 源代码编译KIND需要go 1.14以上版本支持

安装

  • 对于macOS/Linux可以直接下载官方提供的执行程序:

    curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.8.1/kind-$(uname)-amd64
    chmod +x ./kind
    mv ./kind /some-dir-in-your-PATH/kind
    
  • 更为方便的是通过 Homebrew 在Mac/Lknux上安装kind:

    brew install kind
    

创建集群

通过kind,可以非常方便创建集群,只需要一条命令:

kind create cluster

以上命令将使用一个预先构建的 node image 来 bootstrap 一个Kubernetes集群。在 docker hub 的 kindest/node 可以找到这个预先构建的node image。

这里下载镜像可能需要较长的时间,有可能导致超时,所以在 create cluster 命令加上 --wait 参数来指定超时时间,以便在``control plane`` 达到ready状态再运行 create cluster

注意,上述简单的命令默认创建的集群名字是 kind ,可以通过 --name 参数来指定集群名称。

此时提示信息:

Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.18.2)
 ✓ Preparing nodes
 ✓ Writing configuration
 ✓ Starting control-plane
 ✓ Installing CNI
 ✓ Installing StorageClass
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Have a nice day!

然后你可以 安装和设置kubectl ,然后验证部署的测试集群:

kubectl cluster-info

可以看到集群信息:

Kubernetes master is running at https://127.0.0.1:13773
KubeDNS is running at https://127.0.0.1:13773/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

并且可以看到这个集群只有一个节点:

kubectl get nodes

输出信息:

NAME                 STATUS   ROLES    AGE    VERSION
kind-control-plane   Ready    master   148m   v1.18.2

备注

上述简单的部署kind,默认仅部署了单机集群,并没有体现出趣味。如果你更感兴趣是部署多节点集群,则可以参考 kind多节点集群 来部署一个完整的集群。

参考