Kind快速起步
安装kind
备注
本段落安装实践在 Asahi Linux ( ARM 架构 )上完成,但方法是通用的,适合不同的Linux发行版
使用 Go 安装
对于 Go 开发人员来说,使用 go get
/ go install
是最方便的方法:
go install sigs.k8s.io/kind@v0.17.0
备注
其实也不是 最方便
,因为有万恶的GFW存在,通过 go install
会遇到网络超时,请采用以下方法之一规避:
配置Go程序代理服务器 (socks代理) 结合 SSH Tunneling: 动态端口转发
配置Go程序代理服务器 (http代理) 结合 Squid父级socks代理 (两级代理本质也是采用 ssh tunneling,但是提供了本地代理缓存,适合大规模网络)
安装目录位于 ~/go/bin/kind
,可以在 ~/.bashrc
中添加 golang 环境变量:
cat << 'EFO' > ~/.bashrc
export PATH=$HOME/go/bin:$PATH
EOF
. ~/.bashrc
备注
完成安装后,可以直接部署 kind集群 (下文的 "创建集群" 段落只是一个快速demo)
在 macOS 上使用 Homebrew 安装
首先完成 macOS安装Docker ,(使用 Homebrew )提供一个 Docker 运行环境
brew install kind kubectl
采用 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
:
export CLUSTER_NAME=dev
export reg_name='kind-registry'
kind create cluster --name "${CLUSTER_NAME}" --config kind-config.yaml
完成后检查
kubectl get nodes -o wide
输出:
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平台安装:
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 上安装:
# 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多节点集群 来部署一个完整的集群。