使用Kind快速构建Kubernetes集群

使用Kind快速构建Kubernetes集群

标签: kubernetes   kind   docker   devops  

现在安装 Kubernetes 集群已经变得越来越简单了,出现了很多方案,各种方案都有自己适合的使用场景。虽然我们可以很快速在云环境下面启动一个 Kubernetes 集群,但是对于开发人员通常更喜欢能够快速上手的东西,Kubernetes in Docker(Kind)这个工具就可以通过创建容器来作为 Kubernetes 的节点,我们只需要在机器上安装 Docker 就可以使用,它允许我们在很短的时间内就启动一个多节点的集群,而不依赖任何其他工具或云服务商。

前面的文章也讲过如何在本地使用Vagrant来快速搭建Kubernetes集群,但还是有点麻烦,而且需要自己去定制Vagrant Box,有一定的技术门槛。

依赖

本文使用的是MacOS系统,Kind需要本机安装docker和golang,本文的软件版本如下:

Docker Desktop 2.4.0.0(48506)
go version go1.15.3 darwin/amd64

Kind架构

Kind 是使用 kubeadm 工具来启动管理集群,也通过了一致性测试和 CNCF 的认证,当然它也会为你生成访问集群的 kubeconfig 文件,这样我们同样就可以使用 kubectl 来和集群进行交互了。其他 Kubernetes 组件,比如 Helm、Istio 也同样可以在 Kind 集群内正常工作。

Kind 有一个缺点是它不能使用 LoadBalancer 的 Service,所以我们需要使用 NodePort 来对外暴露服务。

安装

sudo curl -sL https://kind.sigs.k8s.io/dl/v0.9.0/kind-darwin-amd64 -o /usr/local/bin/kind
sudo chmod +x /usr/local/bin/kind

$ kind version
kind v0.9.0 go1.15.2 darwin/amd64

或者

brew install kind

安装完成后你可以使用下面的命令创建你的集群:

kind create cluster

出现如下结果,表示安装成功:

$ kind create cluster
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.19.1) 🖼
 ✓ 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

Not sure what to do next? 😅  Check out https://kind.sigs.k8s.io/docs/user/quick-start/

验证:

$ kind get clusters
kind

$ kubectl get nodes
NAME                 STATUS   ROLES    AGE   VERSION
kind-control-plane   Ready    master   40s   v1.19.1

多节点集群

如果你想定义一个多节点集群,你可以使用类似下面的集群配置文件进行创建:

# kind-config.yaml
# 2个节点(1个woker节点)
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker

然后使用上面的配置文件创建集群:

kind create cluster --name kind --image kindest/node:v1.19.1 --config kind-config.yaml

我们也可以在 nodes 属性部分指定多个控制平面角色来创建多控制平面集群。由于 KinD 会自动创建一个 kubeconfig 文件,所以我们可以像使用其他集群一样使用 kubectl 命令。

结果如下:

$ kind create cluster --name kind --image kindest/node:v1.19.1 --config kind-config.yaml
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.19.1) 🖼
 ✓ Preparing nodes 📦 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂

$ kubectl get nodes
NAME                 STATUS   ROLES    AGE   VERSION
kind-control-plane   Ready    master   80s   v1.19.1
kind-worker          Ready    <none>   50s   v1.19.1

删除Kind集群

要想删除 KinD 集群也很简单,直接使用如下所示的命令即可:

kind delete cluster --name kind

到这里你就可以快速构建你想要的本地K8S集群了。

参考

Kind官网Quick Start

Kind Github

Kind Docker Images

「真诚赞赏,手留余香」

请我喝杯咖啡?

使用微信扫描二维码完成支付

相关文章