【kind管理腳本-3】腳本函數說明文檔 —— 便捷使用 kind 創建、刪除、管理集群腳本

下面是一份詳細的說明文檔,介紹該腳本的功能、用法及各部分的含義,供您參考和使用:


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 安裝)。

希望這份說明文檔能夠幫助您快速了解和使用該腳本。如有疑問或需要進一步定制,歡迎進一步探討。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77146.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77146.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【計算機行業發展與重塑】

計算機行業正經歷前所未有的變革&#xff0c;AI技術的爆發式發展與產業升級的深度融合&#xff0c;正在重塑行業格局與就業市場。以下從行業趨勢、AI的核心價值、就業需求三個維度展開分析。 一、行業趨勢&#xff1a;AI驅動下的多極增長 AI成為核心引擎 生成式AI的突破&#…

(高頻SQL50題)1667. 修復表中的名字

問題 表&#xff1a; Users ------------------------- | Column Name | Type | ------------------------- | user_id | int | | name | varchar | ------------------------- user_id 是該表的主鍵(具有唯一值的列)。 該表包含用戶的 ID 和名字…

基于人工智能的醫學影像關聯分析:利用潛在空間幾何混雜因素校正法|文獻速遞-深度學習醫療AI最新文獻

Title 題目 AI-based association analysis for medical imaging using latent-spacegeometric confounder correction 基于人工智能的醫學影像關聯分析&#xff1a;利用潛在空間幾何混雜因素校正法 01 文獻速遞介紹 人工智能&#xff08;AI&#xff09;已成為各個領域的…

開源免費虛擬化軟件PVE功能介紹

Proxmox VE&#xff08;PVE&#xff09;提供了一個基于 Web UI&#xff08;管理界面&#xff09;的虛擬化管理平臺&#xff0c;用戶可以通過瀏覽器管理 虛擬機&#xff08;VM&#xff09;、容器&#xff08;LXC&#xff09;、存儲、網絡、備份、用戶權限等。 一、PVE Web 界面…

新球體育比分狀態監控

文章目錄 目標分析監控邏輯代碼目標分析 網頁監控地址:aHR0cHM6Ly9saXZlLnRpdGFuMDA3LmNvbS9pbmRleDJpbjEuYXNweD9pZD0x 監控邏輯 比分等數據主要是依賴JS加載得到,通過ajax后端進行渲染 代碼 # -*- coding: utf-8 -*-import warnings warnings.filterwarnings(ignore) f…

【lodash的omit函數詳解 - 從入門到精通】

lodash的omit函數詳解 - 從入門到精通 小白視角&#xff1a;什么是omit&#xff1f; omit在英文中意為"忽略"或"省略"。在編程中&#xff0c;它就是從一個對象中刪除不需要的屬性&#xff0c;返回一個新對象。 // 原始對象 const person {name: "…

軟考筆記9——數據庫技術基礎

第九章節——數據庫技術基礎 數據庫技術基礎 第九章節——數據庫技術基礎一、基本概念1. 數據庫與數據庫系統2. 數據庫的三級模式2.1 內模式2.2 概念模式2.3 外模式2.4 數據庫的兩級映射2.5 數據庫設計的基本步驟 二、數據模型1. 基本概念2. E-R模型2.1 實體2.2 聯系2.3 屬性 3…

Django分頁教程及示例

推薦超級課程: 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰目錄 完整代碼示例:結論Django的分頁模塊允許你將大量數據分割成更小的塊(頁面)。這對于以可管理的方式顯示項目列表,如博客文章或產品…

int 與 Integer 的區別詳解

1. 本質區別 特性intInteger類型基本數據類型&#xff08;Primitive&#xff09;包裝類&#xff08;Wrapper Class&#xff09;存儲位置棧&#xff08;或作為對象成員在堆中&#xff09;堆&#xff08;對象實例&#xff09;默認值0null&#xff08;可能導致 NullPointerExcept…

mariadb使用docker compose方式安裝

問題 本地mac m1上面的mysql和mariadb突然不用使用了&#xff0c;重新安裝也不想&#xff0c;最近mac系統也更新了&#xff0c;brew也更新了&#xff0c;重新安裝mariadb還是不能正常使用&#xff0c;現在我打算使用docker來安裝本地的mariadb了。 默認配置文件my.cnf 從容器…

基于React + Antd + Java的OFD文件上傳預覽實現方案(OFD文件轉圖片)

一、前端實現方案(React + Antd) import React, {useState } from react; import {Upload, Button, Image, Carousel } from antd; import {UploadOutlined } from @ant-design/icons;const OFDUploadPreview = () => {const [previewImages, setPreviewImages] = useSta…

從零構建大語言模型全棧開發指南:第四部分:工程實踐與部署-4.3.1LangChain與Dify平臺實戰:從RAG到Agent工作流

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 LangChain與Dify平臺實戰:從RAG到Agent工作流 - 4.3.1 LangChain與Dify平臺實戰:從RAG到Agent工作流1. LangChain核心組件與RAG架構設計1.1 LangChain核心模塊1.2 RAG架構實現流程2. RAG實戰:企業知識…

操作 Office Excel 文檔類庫Excelize

Excelize 是 Go 語言編寫的一個用來操作 Office Excel 文檔類庫&#xff0c;基于 ECMA-376 OOXML 技術標準。可以使用它來讀取、寫入 XLSX 文件&#xff0c;相比較其他的開源類庫&#xff0c;Excelize 支持操作帶有數據透視表、切片器、圖表與圖片的 Excel 并支持向 Excel 中插…

R Excel 文件:高效數據處理與可視化工具的完美結合

R Excel 文件&#xff1a;高效數據處理與可視化工具的完美結合 引言 在數據分析和處理領域&#xff0c;R語言因其強大的數據處理能力和豐富的可視化功能而備受青睞。而Excel作為最常用的電子表格軟件&#xff0c;其廣泛的應用也使得R與Excel的結合成為數據處理與可視化的理想…

[ctfshow web入門] 零基礎版題解 目錄(持續更新中)

ctfshow web入門 零基礎版 前言 我在刷題之前沒有學過php&#xff0c;但是會python和C&#xff0c;也就是說&#xff0c;如果你和我一樣會一門高級語言&#xff0c;就可以開始刷題了。我會以完全沒學過php的視角來寫題解&#xff0c;你也完全沒有必要專門學習php&#xff0c;這…

linux第三次作業

1、將你的虛擬機的網卡模式設置為nat模式&#xff0c;給虛擬機網卡配置三個主機位分別為100、200、168的ip地址 2、測試你的虛擬機是否能夠ping通網關和dns&#xff0c;如果不能請修改網關和dns的地址 3、將如下內容寫入/etc/hosts文件中&#xff08;如果有多個ip地址則寫多行&…

如何開發 HTML 游戲

開發 HTML 游戲適合初學者學習編程和游戲開發的基礎知識。HTML 游戲通常結合了 HTML、CSS 和 JavaScript 技術&#xff0c;利用瀏覽器的渲染能力來實現交互式的游戲體驗。 1. 確定游戲類型 在開始開發之前&#xff0c;你需要明確你的游戲類型。例如&#xff1a; 簡單游戲&…

我的NISP二級之路-02

目錄 一.數據庫 二.TCP/IP協議 分層結構 三.STRIDE模型 四.檢查評估與自評估 檢查評估 自評估 五.信息安全應急響應過程 六.系統工程 七.SSE-CMM 八.CC標準 九.九項重點工作 記背: 一.數據庫 關于數據庫恢復技術&#xff0c;下列說法不正確的是&#xff1a…

結構化需求分析:專業方法論與實踐

結構化需求分析是一種用于軟件開發或其他項目中的系統分析方法&#xff0c;旨在全面、準確地理解和描述用戶對系統的需求。以下是關于結構化需求分析的詳細介紹&#xff1a; 一、概念 結構化需求分析是采用自頂向下、逐步分解的方式&#xff0c;將復雜的系統需求分解為若干個…

windows10安裝配置并使用Miniconda3

windows10安裝配置并使用Miniconda3 Conda 與 Anaconda 的區別 Conda 是包管理和環境管理工具&#xff0c;Anaconda 在 Conda 的 基礎上預裝了大量科學計算包 Conda 與 pip 的區別 Conda 是跨語言的包和環境管理器&#xff08;支持 Python/R 等&#xff09;&#xff0c;能安…