使用 kind 快速部署 K8s 集群:打造你的专属 K8s 乐场

在 Kubernetes 的奇妙世界里,要是能快速搭建一个本地集群环境,那简直就像给自己开了个 VIP 通道,一路畅通无阻。这时候,kind 这位得力助手就闪亮登场啦!kind,全称 Kubernetes in Docker,说白了,就是能让咱们用 Docker 容器当作 “积木块”,快速搭出一个本地 Kubernetes 集群。不管是开发新功能时想小试牛刀,还是测试新想法怕出乱子,又或是初学者想沉浸式学习,kind 都能帮你轻松搞定。好啦,废话不多说,马上跟着我一步步来部署 K8s 集群吧!

一、准备工作:打造 “施工现场”

安装 Docker:搭建 “舞台”

kind 想要大展身手,离不开 Docker 这个 “舞台”。所以,在请 kind 帮忙之前,咱得先把 Docker 给安装好。你就去Docker 官方网站,根据你电脑的操作系统,把 Docker Desktop 下载下来,安装过程就像给电脑安装其他软件一样简单。安装完后,记得检查一下,确保 Docker 服务正 “精神抖擞” 地运行着呢!

安装 kind:邀请 “建筑师”

安装 kind 的方法有好几种,就像去一个地方有不同的路可以走。要是你用的是 MacOS 系统,那用 Homebrew 安装 kind 简直不要太方便,就像走了一条超级捷径。在终端里输入下面这条命令,轻轻松松就把 kind 请回家啦:

brew install kind

要是你用的是其他操作系统,也别担心,去kind 官方安装文档里找找,那里有专门为你准备的 “路线图”,跟着走准没错。

二、部署单节点 K8s 集群:搭建 “简易小房子”

创建集群:搭建基础

想创建一个单节点 K8s 集群,简单得就像搭个小积木房子。在终端里输入这条命令:

kind create cluster

这条命令就像给 kind 下了个简单的指令,它会按照默认的 “图纸”,用默认的 Kubernetes 版本镜像,给你快速搭出一个单节点集群。不过,要是你对 Kubernetes 版本有特别的要求,就像你想要一个有特殊设计的房子,那也没问题。去 kind 版本发布页(https://github.com/kubernetes-sigs/kind/releases)找找,找到对应版本的节点镜像 tag,然后通过--image参数告诉 kind 你的想法,比如:

kind create cluster --image kindest/node:v1.27.3

验证集群创建:检查成果

集群搭好没?咱得检查一下。就用这条命令:

kubectl cluster-info

要是能看到 Kubernetes 控制平面的相关信息,那就说明你的 “小房子” 搭建成功啦!这里的kubectl可是 Kubernetes 的 “大管家”,啥都能管。偷偷告诉你,kind 在搭建集群的时候,就像一个贴心的小助手,自动在$HOME/.kube/config这个地方,给你准备好了连接集群的 kubeconfig 文件,这样kubectl就能直接上手管理集群啦。要是你还没安装kubectl,也别急,根据你电脑的操作系统,去官方文档里找安装方法就行。比如说在 MacOS 上安装 v1.27.3 版本的kubectl,照着下面这几步来:

curl -LO "https://dl.k8s.io/release/v1.27.3/bin/darwin/arm64/kubectl"
sudo mv kubectl /usr/local/bin
sudo chmod +x /usr/local/bin/kubectl
kubectl version

三、部署多节点 K8s 集群:建造 “豪华大别墅”

编写配置文件:绘制 “豪华图纸”

kind 可不止能搭小房子,要是你想建造一个多节点 K8s 集群,也就是 “豪华大别墅”,它也能帮你实现。这时候,你得先准备一张 “豪华图纸”,也就是 YAML 配置文件。创建一个叫kind - config.yaml的文件,下面是一个一主两 Worker 节点集群的 “图纸” 示例:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control - plane
    kubeadmConfigPatches:
      - |
        kind: InitConfiguration
        nodeRegistration:
          kubeletExtraArgs:
            node - labels: "ingress-ready=true"
    extraPortMappings:
      - containerPort: 80
        hostPort: 80
        protocol: TCP
      - containerPort: 443
        hostPort: 443
        protocol: TCP
  - role: worker
  - role: worker

这张 “图纸” 里都画了啥呢?

  • kind: Cluster和apiVersion: kind.x-k8s.io/v1alpha4就像是 “图纸” 的抬头,告诉 kind 这是个啥类型、啥版本的 “设计图”。

  • nodes部分就是在规划 “别墅” 里的房间啦。第一个节点role是control-plane,这就像是 “别墅” 的 “指挥中心”。通过kubeadmConfigPatches,你可以给这个 “指挥中心” 的初始化配置来点小调整,这里给它的kubelet贴上了ingress ready=true的 “小标签”。extraPortMappings就像是给 “别墅” 开了几个对外的 “大门”,把容器内的 80 和 443 端口映射到宿主机的对应端口,方便外面的人进来参观你的 “豪华别墅”。

  • 后面两个节点role是worker,它们就像是 “别墅” 里辛勤工作的 “小帮手”。

创建多节点集群:开工建造

拿着 “豪华图纸”,就可以让 kind 开工建造啦。在终端里输入这条命令:

kind create cluster --config kind - config.yaml

然后就坐等 kind 这个 “超级建筑师” 给你打造出一个一主两 Worker 的多节点 K8s 集群。建好后,和检查小房子一样,你可以用kubectl cluster - info命令看看 “豪华别墅” 的状态,也能用docker ps命令瞧瞧宿主机上那些代表 K8s 节点的 Docker 容器,就像看看建造过程中用到的那些 “积木块”。

把控制平面节点想象成豪华别墅的主屋,两个工作节点是旁边的附属建筑,用线条表示它们之间的网络连接,就像房子之间的小路,还有控制平面与工作节点间的控制与数据交互关系,就像主人和帮手之间的沟通方式]

四、连接与管理集群:入住与打理 “别墅”

连接集群:拿到 “钥匙” 入住

前面说过,kind 建好集群后,就像给你准备好了 “别墅钥匙”,也就是kubeconfig文件。这时候,你直接用kubectl这个 “大管家” 就能连接并管理你的 “别墅” 啦。比如说,想看看 “别墅” 里都有哪些 “房间”(节点),用这条命令:

kubectl get nodes

管理集群:好好打理 “别墅”

有了kubectl这个 “大管家”,你可以对 “别墅” 进行各种打理。比如,想在 “别墅” 里装个 Nginx 应用,就像给别墅添个新设施,按下面这两步来:

kubectl create deployment nginx --image = nginx
kubectl expose deployment nginx --type = NodePort --port = 80

第一条命令就像是在 “别墅” 里划出一块地方,建了个叫nginx的 “小设施”,还用了 Nginx 镜像这个 “材料”。第二条命令就像是给这个 “小设施” 开了个对外的 “窗户”,把它以NodePort类型暴露出来,通过宿主机的某个随机端口(可以用kubectl get svc命令看看具体是哪个端口),外面的人就能看到你这个 “小设施” 啦。

有了 kind 这个神奇的工具,不管是简单的单节点 “小房子”,还是复杂的多节点 “豪华别墅”,我们都能快速搭建起来,为 Kubernetes 相关的开发、测试和学习打造一个超棒的环境。在实际操作中,你就尽情发挥想象,根据自己的需求调整配置,让 kind 帮你打造出最适合你的 K8s 集群 “乐园” 吧!