【kind管理脚本-3】脚本函数说明文档 —— 便捷使用 kind 创建、删除、管理集群脚本

发布于:2025-04-12 ⋅ 阅读:(36) ⋅ 点赞:(0)

下面是一份详细的说明文档,介绍该脚本的功能、用法及各部分的含义,供您参考和使用:


Kind 集群管理脚本说明文档

此脚本主要用于管理 Kind(Kubernetes IN Docker)集群,提供创建、删除、导出 kubeconfig、加载镜像、切换集群、检查状态以及展示/列出预定义模板等功能。以下将详细介绍脚本中各个部分的配置、命令及功能。


1. 配置项

脚本开头定义了一些全局变量,用于配置运行时的参数:

  • KUBECONFIG_PATH
    指定导出的 kubeconfig 文件存放位置,此处默认为当前目录 ("./")。
  • WITH_METRICS
    布尔值,表示是否在集群创建完成后自动部署 metrics-server。默认值为 false;如果设为 true,集群启动后会应用对应的 metrics-server 配置。
  • WITH_INGRESS
    布尔值,用于决定是否在创建集群时安装 Ingress-Nginx 控制器。默认为 false;如果设为 true,集群启动后会应用 Ingress-Nginx 配置。
  • LOAD_IMAGE
    预留用于判断是否需要加载 Docker 镜像,目前脚本中由专门的 load-image 命令来处理该功能。
  • DEFAULT_IMAGE
    如果未手动提供镜像参数,则使用该默认镜像(例如:kindest/node:v1.24.3)。
  • checkmark & crossmark
    用于在输出中显示勾选(✅)或叉(❌),方便用户直观了解各项检查的结果。
  • TEMPLATES_DIR
    指定存放模板配置文件的目录(例如:cluster-demo-setting 目录)。
  • DEFAULT_TEMPLATE
    默认的模板名字,如 ingress-cluster-demo,可用于预设集群配置。

2. 帮助信息

函数 usage() 提供了脚本的使用帮助信息。调用该函数时会输出所有支持的命令及参数说明,包括:

  • create:创建一个新的 Kind 集群
  • delete:删除指定的 Kind 集群
  • export-kubeconfig:导出某个集群的 kubeconfig 文件
  • load-image:将指定的 Docker 镜像加载进 Kind 集群
  • status:查看集群的状态
  • list:列出所有现有的 Kind 集群
  • use:切换到指定的 Kind 集群
  • cluster-demo-setting:列出或展示模板设置,子命令有 listshow
  • help:输出帮助信息

3. 命令工具检查

在脚本初始化部分,会检查以下两个命令是否已安装:

  • kind
  • kubectl

如果其中任一命令不存在,则脚本会输出错误提示并退出。


4. 核心功能函数

4.1. run_command()

  • 功能:打印调试信息(包括执行的命令及其结果),并调用 eval 来执行命令。
  • 用途:便于跟踪脚本执行过程中调用的系统命令和查看输出结果。

4.2. load_template()

  • 功能:加载指定名称的模板配置。模板文件存放于 $TEMPLATES_DIR 目录下,文件名格式为 templateName.yaml
  • 用途:用于在创建集群时加载特定的 Kind 配置文件。加载后内容会输出,可用于调试或直接保存至集群配置文件中。

4.3. create_cluster()

  • 功能:创建一个新的 Kind 集群,支持通过命令行参数指定镜像和模板配置。
  • 参数说明
    • 第一个参数为集群名称。
    • 选项 --image <image>:指定使用的镜像(例如:--image kindest/node:v1.24.3)。
    • 选项 --config <template>:指定加载的模板配置文件名称(模板文件位于 $TEMPLATES_DIR 下)。
    • 可选的 --default 参数用于直接使用默认镜像。
  • 操作流程
    1. 解析命令行参数并提取集群名称、镜像和模板信息;
    2. 若指定模板,则调用 load_template() 加载配置,并保存至本地(文件名形如 cluster-name-kind-config.yaml);
    3. 根据参数调用 kind create cluster 指令创建集群;
    4. 如果启用了 WITH_METRICSWITH_INGRESS,则自动安装 metrics-server 或 Ingress-Nginx。

4.4. use_cluster()

  • 功能:切换当前的 kubectl 上下文至指定的 Kind 集群。
  • 实现:调用 kubectl config use-context kind-<cluster-name>

4.5. export_kubeconfig()

  • 功能:导出指定集群的 kubeconfig 到一个文件中,方便用户直接使用。
  • 实现:调用 kind get kubeconfig 并重定向输出到文件(文件名为 <cluster-name>-kubeconfig)。

4.6. load_image()

  • 功能:将本地的 Docker 镜像加载到指定的 Kind 集群中。
  • 实现:调用 kind load docker-image "<image-tag>" --name "<cluster-name>" 命令。

4.7. health_check()

  • 功能:对集群进行健康检查,检测的组件包括:
    • 节点是否正常(通过 kubectl get nodes 检查);
    • metrics-server 是否正常运行;
    • Ingress controller 是否正常运行;
    • Demo 应用是否已经部署;
    • Ingress 路由是否配置成功。
  • 输出:每个检查项均会打印出结果,用勾或叉来表示状态。

4.8. cluster_demo_setting()

  • 功能:用于处理与集群模板设置相关的命令:
    • 子命令 list:列出所有模板名称,即 $TEMPLATES_DIR 目录中所有以 .yaml 为后缀的文件;
    • 子命令 show <template-name>:显示指定模板的详细内容。

5. 命令行参数及分支逻辑

脚本通过 case "$1" in ... esac 结构,根据传入的第一个命令来选择不同的操作。常见的分支及说明如下:

  • create
    调用 create_cluster 函数。要求必须指定集群名称,并可附带镜像和模板参数。
  • list
    列出所有已有的 Kind 集群,并打印当前的 kubeconfig 上下文信息。
  • delete
    删除指定的 Kind 集群,通过 kind delete cluster --name "<cluster-name>" 实现。
  • status
    检查并反馈指定集群是否存在于当前环境中。
  • use
    切换当前上下文到指定 Kind 集群。
  • load-image
    将本地 Docker 镜像加载到指定集群中,此处需要提供集群名称和镜像标签。
  • export-kubeconfig
    导出指定集群的 kubeconfig 文件。
  • health-check
    对集群的运行状态进行综合检查,输出各组件的健康状态。
  • cluster-demo-setting
    处理模板相关命令,支持:
    • list:列出所有模板
    • show <template-name>:显示指定模板内容
  • 其他(help 或未知命令)
    当命令为空或不匹配预定分支时,调用 usage() 输出帮助信息。

6. 使用示例

6.1. 创建集群示例

假设要创建名为 demo-cluster 的集群,使用自定义镜像和模板:

./script.sh create demo-cluster --image kindest/node:v1.24.3 --config ingress-cluster-demo

执行后脚本会:

  • 加载 cluster-demo-setting/ingress-cluster-demo.yaml 文件,
  • 生成集群配置文件,
  • 调用 kind create cluster 创建集群,并根据配置安装 metrics-server 和 ingress-nginx(如果全局变量开启)。

6.2. 删除集群示例

./script.sh delete demo-cluster

6.3. 切换集群上下文示例

./script.sh use demo-cluster

6.4. 导出 kubeconfig 示例

./script.sh export-kubeconfig demo-cluster

6.5. 加载镜像示例

./script.sh load-image demo-cluster my-custom-image:latest

6.6. 查看健康检查结果

./script.sh health-check

6.7. 查看模板列表和内容

  • 列出所有模板:

    ./script.sh cluster-demo-setting list
    
  • 查看某个模板内容:

    ./script.sh cluster-demo-setting show ingress-cluster-demo
    

7. 调试信息

每次调用命令都会通过 run_command() 打印出调试信息(命令及其执行结果),这有利于故障排查和验证脚本执行的正确性。


8. 总结

本脚本整合了多种常用的 Kind 集群管理操作,通过封装命令行参数,用户可以方便地创建、删除、管理以及调试 Kind 集群。同时还提供了加载模板配置、检查健康状态等实用功能。建议在使用前确认已安装 kindkubectl,并根据需要调整全局配置变量(如开启 metrics-server 或 ingress 安装)。

希望这份说明文档能够帮助您快速了解和使用该脚本。如有疑问或需要进一步定制,欢迎进一步探讨。