当前位置: 首页 > news >正文

自动化运维(k8s):一键获取指定命名空间镜像包脚本

前言:脚本写成并非一蹴而就,需要不断的调式和修改,这里也是改到了7版本才在 生产环境 中验证成功。

该命令 和 脚本适用于以下场景:在某些项目中,由于特定的安全或政策要求,不允许连接到你的镜像仓库。然而,项目团队仍需获取特定命名空间下的部分 或者 所有 Docker 镜像。此命令和脚本能够协助您在本地环境拉取并保存所需命名空间中的镜像,以便安全地提供给项目团队,满足他们的部署和测试需求,同时确保遵守相关的安全规定和访问限制。

一、命令获取指定pod镜像
命令-查询镜像版本号:
kubectl get pods -n <namespace> -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.containers[*]}{.image}{"\n"}{end}{end}' | grep -E "(<pod-name1>|<pod-name2>|<pod-name3>|<pod-name......>)"
执行结果:

命令-save:
docker save -o namespace_images.tar <pod-name1结果......727> <pod-name2结果......21164728> <pod-name3结果......build_20241021181731> <pod-name......结果>
执行结果:

最后会生成一个tar包

二、自动化脚本获取指定命名空间下全量pod镜像
脚本内容:

#!/bin/bash# 提示用户输入命名空间
echo -e "请输入命名空间:"
read -e NAMESPACE# 获取当前脚本的绝对路径
SCRIPT_DIR=$(cd $(dirname $0) && pwd)# 定义输出文件名,格式为 <命名空间>_images_<日期>.tar
OUTPUT_FILE="${NAMESPACE}_images_$(date +%Y%m%d).tar"# 获取该命名空间下的所有 Pod 的名称和镜像
POD_NAMES=$(kubectl get pods -n $NAMESPACE -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}')
IMAGES=$(kubectl get pods -n $NAMESPACE -o jsonpath='{range .items[*]}{range .spec.containers[*]}{.image}{"\n"}{end}{end}' | sort | uniq)# 拼接所有镜像名称成一个字符串
IMAGE_STRING=""
for IMAGE in $IMAGES; doIMAGE_STRING+="$IMAGE "
done# 拉取所有镜像
echo "正在拉取所有镜像..."
for IMAGE in $IMAGES; dodocker pull $IMAGE
done# 保存所有镜像到一个文件
echo "正在将所有镜像保存到单个 tar 文件:$OUTPUT_FILE"
docker save $IMAGE_STRING -o $SCRIPT_DIR/$OUTPUT_FILEecho "所有镜像已处理并保存到 $SCRIPT_DIR/$OUTPUT_FILE"

脚本执行后,等待执行结束会生成一个以 命名空间 和 当前日期 的tar包


以下是脚本的详细解析:

  1. 获取指定命名空间下所有 Pod 的镜像列表,并去重

    IMAGES=$(kubectl get pods -n $NAMESPACE -o jsonpath='{range .items[*]}{range .spec.containers[*]}{.image}{"\n"}{end}{end}' | sort | uniq)
    

    这行代码使用 kubectl 命令获取指定命名空间下所有 Pod 的镜像列表。jsonpath 参数用于提取镜像名称,然后通过管道传递给 sortuniq 命令,以确保列表中的镜像名称是唯一的(去重)。

  2. 将所有镜像名称拼接成一个字符串

    IMAGE_STRING=""
    for IMAGE in $IMAGES; doIMAGE_STRING+="$IMAGE "
    done
    

    这个循环遍历去重后的镜像列表 IMAGES,并将每个镜像名称添加到 IMAGE_STRING 变量中,镜像名称之间用空格分隔。

  3. 定义输出文件名,格式为 KaTeX parse error: Expected group after '_' at position 19: …MESPACE}_images_̲(date +%Y%m%d).tar

    OUTPUT_FILE="${NAMESPACE}_images_$(date +%Y%m%d).tar"
    

    这行代码定义了输出文件的名称,格式为 ${NAMESPACE}_images_<日期>.tar,其中 <日期>date +%Y%m%d 命令生成,表示当前日期的年月日。

  4. 拉取所有镜像

    for IMAGE in $IMAGES; dodocker pull $IMAGE
    done
    

    这个循环遍历去重后的镜像列表 IMAGES,并对每个镜像执行 docker pull 命令,以确保本地有这些镜像的最新版本。

  5. 使用 docker save 命令将所有镜像保存到一个 tar 文件中

    docker save $IMAGE_STRING -o $SCRIPT_DIR/$OUTPUT_FILE
    

    这行代码使用 docker save 命令将所有镜像(由 IMAGE_STRING 变量指定)保存到一个 tar 文件中。-o 参数指定输出文件的路径和名称,该路径是脚本所在目录下的 $OUTPUT_FILE

  6. 输出保存完成的消息

    echo "All images have been processed and saved to $SCRIPT_DIR/$OUTPUT_FILE"
    

    这行代码输出一条消息,通知用户所有镜像已经被处理并保存到了指定的文件路径。

相关文章:

自动化运维(k8s):一键获取指定命名空间镜像包脚本

前言&#xff1a;脚本写成并非一蹴而就&#xff0c;需要不断的调式和修改&#xff0c;这里也是改到了7版本才在 生产环境 中验证成功。 该命令 和 脚本适用于以下场景&#xff1a;在某些项目中&#xff0c;由于特定的安全或政策要求&#xff0c;不允许连接到你的镜像仓库。然而…...

HarmonyOS ArkUI(基于ArkTS) 开发布局 (上)

一 ArkUI(基于ArkTS)概述 基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的UI开发框架&#xff0c;提供了构建应用UI所必需的能力 点击详情 特点 开发效率高&#xff0c;开发体验好 代码简洁&#xff1a;通过接近自然语义的方式描述UI&#x…...

第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)

本芯片使用的是STM32F103C8T6型号 STM32F103C8T6是STM32F1系列中的一种较常用的低成本ARM Cortex-M3内核MCU&#xff0c;具有丰富的通信接口&#xff0c;包括USART、SPI、I2C等。下面是该芯片上通信接口的管脚分布、每个接口的工作模式、常用应用场景和注意事项。 1. USART (通…...

5. langgraph中的react agent使用 (从零构建一个react agent)

1. 定义 Agent 状态 首先&#xff0c;我们需要定义 Agent 的状态&#xff0c;这包括 Agent 所持有的消息。 from typing import (Annotated,Sequence,TypedDict, ) from langchain_core.messages import BaseMessage from langgraph.graph.message import add_messagesclass …...

uniapp vue3的下拉刷新和上拉加载

开启页面的下拉刷新,注意这个不是可滚动视图的下拉刷新. 一般页面建议使用页面外的,不要使用scroll-view里面的下拉刷新. pages: "pages": [ {"path": "pages/index/index","style": {"navigationBarTitleText": "首…...

STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 本系统基于STM32微控制器和Zigbee无线通信技术&#xff0c;设计了…...

Vue 3 中的原生事件监听与组件事件处理详解

Vue 3 中的原生事件监听与组件事件处理完全指南 在 Vue 3 中&#xff0c;事件监听和事件处理是组件交互中的关键部分。Vue 提供了一套简单而强大的事件处理机制&#xff0c;可以方便地监听 DOM 原生事件和组件自定义事件。本篇文章将详细介绍 Vue 3 中事件的使用&#xff0c;包…...

Flink Source 详解

Flink Source 详解 原文 flip-27 FLIP-27 介绍了新版本Source 接口定义及架构 相比于SourceFunction&#xff0c;新版本的Source更具灵活性&#xff0c;原因是将“splits数据获取”与真“正数据获取”逻辑进行了分离 重要部件 Source 作为工厂类&#xff0c;会创建以下两…...

2024年了,TCP分析工具有哪些?

TCP分析工具广泛应用于网络调试、性能分析和协议学习。以下是一些常用的TCP分析工具&#xff0c;它们各有特点&#xff0c;适用于不同的场景&#xff1a; Wireshark - 这是一个非常强大的网络协议分析器&#xff0c;支持图形界面&#xff0c;可以捕获和分析TCP流量&#xff0c;…...

SRP 实现 Cook-Torrance BRDF

写的很乱&#xff01; BRDF&#xff08;Bidirectional Reflectance Distribution Function&#xff09;全称双向反射分布函数。辐射量单位非常多&#xff0c;这里为方便直观理解&#xff0c;会用非常不严谨的光照强度来解释说明。 BRDF光照模型&#xff0c;上反射率公式&#…...

MySQL慢日志

慢查询日志顾名思义就是查询慢的sql语句可以记录到一个日志文件里&#xff0c;至于有多慢才会被记录&#xff0c;默认是10秒&#xff0c;但也可以通过系统配置来更改&#xff0c;慢日志在做系统优化时是一个非常好用的工具 #是否开启慢日志 show variables like slow_query_log…...

Flutter网络通信-封装Dio

前言 dio 是一个强大的 Dart HTTP 请求库&#xff0c;支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 Dio的pub地址为&#xff1a;dio | Dart package 封装要求 能够使用get、post、put、patch、delete、…...

matlab 读取csv

需要跳过第一行表头等信息 1、读取整个文件 csvread(FILENAME)%文件路径 文件名2、指定起始位置 csvread(FILENAME, R, C)%从文件的第R行和第C列开始读取数据 逗号分开3、指定数据范围 csvread(FILENAME, R, C, [R1 C1 R2 C2])%读取从(R1, C1)到(R2, C2)范围内的数据注意&am…...

网络层9——虚拟专用网VPN和网络地址转换NAT

目录 一、为什么有虚拟专用网&#xff1f; 二、如何理解“虚拟专用网”&#xff1f; 三、IP隧道技术实现虚拟专用网 四、网络地址变换 一、为什么有虚拟专用网&#xff1f; 第一&#xff0c;IPv4只有32位&#xff0c;最多有40亿个全球唯一的IP地址数量不够&#xff0c;无法…...

开源科学工程技术软件介绍 – EDA工具KLayout

link 今天向各位知友介绍的 KLayout是一款由德国团队开发的开源EDA工具。 KLayout是使用C开发的&#xff0c;用户界面基于Qt。它支持Windows、MacOS和Linux操作系统。安装程序可以从下面的网址下载&#xff1a; https://www.klayout.de/build.html KLayout图形用户界面&…...

【网络安全】Cookie SameSite属性

未经许可,不得转载。 文章目录 背景CSRF 攻击SameSite 属性StrictLaxNone背景 为了有效防止 CSRF 攻击并保护用户隐私,Chrome 从 51 版本开始引入了 SameSite 属性,专门用于限制第三方 Cookie 的使用,进而减少安全风险。 CSRF 攻击 跨站请求伪造(CSRF)攻击是指恶意网站…...

Linux 命令 | 每日一学,文本处理三剑客之awk命令实践

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 0x00 前言简述 描述&#xff1a;前面作者已经介绍了文本处理三剑客中的 grep 与 sed 文本处理工具&#xff0c;今天将介绍其最后一个且非常强大的 awk 文本处理输出工具&#xff0c;它可以非常方便…...

RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)

上文着重介绍RabbitMQ 七种工作模式介绍RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 本篇讲解如何在Spring环境下进⾏RabbitMQ的开发.&#xff08;只演⽰部分常⽤的⼯作模式&#xff09; 目录 引⼊依赖 一.工作队列模式 二.Publish/Subscribe(发布订阅模式) …...

【web前端笔记】vue3 + vite的前端项目中,使用import.meta.glob()方法实现全局注册组件的通用代码

目录 1.1、如何读取所有文件 1.2、通用代码 1.3、在main.js引入 这篇文章介绍一下,在vue3和vite搭建的项目中,如何将【src/components】目录下所有的【*.vue】文件,当做一个组件全局注册到Vue对象里面。 1.1、如何读取所有文件 在vue3和vite搭建的项目里面,它给我们提…...

保险行业建立知识管理系统:提高效率和安全性的策略

在保险行业&#xff0c;知识管理系统&#xff08;KMS&#xff09;的建立对于提高工作效率和保障数据安全性至关重要。保险公司需要在复杂的生态系统中航行&#xff0c;这个生态系统由不断发展的法规、错综复杂的保单和投保人不断变化的需求所定义。以下是一些关键策略&#xff…...

小程序如何完成订阅

小程序如何完成订阅 参考相关文档实践问题处理授权弹窗不再触发引导用户重新授权 参考相关文档 微信小程序实现订阅消息推送的实现步骤 发送订阅消息 小程序订阅消息&#xff08;用户通过弹窗订阅&#xff09;开发指南 实践 我们需要先选这一个模板&#xff0c;具体流程参考…...

JS学习日记(jQuery库)

前言 今天先更新jQuery库的介绍&#xff0c;它是一个用来帮助快速开发的工具 介绍 jQuery是一个快速&#xff0c;小型且功能丰富的JavaScript库&#xff0c;jQuery设计宗旨是“write less&#xff0c;do more”&#xff0c;即倡导写更少的代码&#xff0c;做更多的事&#xf…...

Uni-APP+Vue3+鸿蒙 开发菜鸟流程

参考文档 文档中心 运行和发行 | uni-app官网 AppGallery Connect DCloud开发者中心 环境要求 Vue3jdk 17 Java Downloads | Oracle 中国 【鸿蒙开发工具内置jdk17&#xff0c;本地不使用17会报jdk版本不一致问题】 开发工具 HBuilderDevEco Studio【目前只下载这一个就…...

Linux的基本用法

Linux的基本用法涵盖多个方面&#xff0c;包括用户登录、系统操作、文件和目录管理、系统工具使用等。以下是对Linux基本用法的详细介绍&#xff1a; 一、用户登录与系统操作 用户登录 普通用户登录&#xff1a;选择用户名并输入密码。超级用户&#xff08;root&#xff09;登…...

如何找出爬取网站的来源IP呢?

1.背景 最近网站数据库性能很不稳定&#xff0c;查询性能在某段时间很慢&#xff0c;服务器CPU也很高&#xff0c;平常时间很低&#xff0c;感觉被爬虫恶意搞了&#xff0c;因此我分析了一下最近的nginx访问日志 2.方法 找出访问量最大20个ip [root100 nginx]# cat liuhaih…...

Java爬虫(Jsoup)详解

文章目录 Java爬虫&#xff08;Jsoup&#xff09;详解一、引言二、Jsoup 快速入门1、Jsoup 简介1.1、添加依赖 2、解析 HTML 文档2.1、解析 HTML 字符串2.2、从 URL 加载 Document2.3、解析 body 片断 三、数据抽取1、使用 DOM 方法遍历文档3.1、获取元素 2、使用选择器语法查找…...

力扣周赛:第424场周赛

&#x1f468;‍&#x1f393;作者简介&#xff1a;爱好技术和算法的研究生 &#x1f30c;上期文章&#xff1a;力扣周赛&#xff1a;第422场周赛 &#x1f4da;订阅专栏&#xff1a;力扣周赛 希望文章对你们有所帮助 第一道题模拟题&#xff0c;第二道题经典拆分数组/线段树都…...

预处理(1)(手绘)

大家好&#xff0c;今天给大家分享一下编译器预处理阶段&#xff0c;那么我们来看看。 上面是一些预处理阶段的知识&#xff0c;那么明天给大家讲讲宏吧。 今天分享就到这里&#xff0c;谢谢大家&#xff01;&#xff01;...

利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成

在软件测试工程师的日常工作中&#xff0c;需求分析是测试工作中的关键步骤。需求文档决定了测试覆盖的范围和测试策略&#xff0c;而测试用例的编写往往依赖于需求的准确理解。传统手工分析需求耗时长&#xff0c;尤其在面对大量需求和复杂逻辑时容易遗漏细节。本文将以电商网…...

深入探索:Scrapy深度爬取策略与实践

标题&#xff1a;深入探索&#xff1a;Scrapy深度爬取策略与实践 引言 在数据驱动的时代&#xff0c;深度爬取成为了获取丰富信息的重要手段。Scrapy&#xff0c;作为一个强大的Python爬虫框架&#xff0c;提供了多种工具和设置来帮助我们实现深度爬取。本文将详细介绍如何在…...

咸阳网站建设/长沙百度推广公司电话

参考原文&#xff1a;http://weblogs.asp.net/ricardoperes/archive/2012/06/07/differences-between-nhibernate-and-entity-framework.aspx转载于:https://www.cnblogs.com/jes_shaw/archive/2013/05/16/3082120.html...

建设企业展示网站/婚恋网站排名前10

iBatis是一个基于SQL映射支持Java和NET的持久层框架&#xff0c;相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言&#xff0c;iBatis 是一种“半自动化”的ORM实现。一、JAR包依赖ibatis-2.3.4.726.jarmysql-connector-java-5.0.8-bin.jar二、SqlMap.propertiesdrivercom…...

如何建设一个公司网站/互联网域名交易中心

jQuery –当今最先进的JavaScript库之一&#xff0c;全球各地的多个程序都在使用jQuery来创建出色的效果和动画 。 我们随机列出了您要使用的插件。 玩得开心&#xff01; 1. Aga&#xff08;手风琴画廊&#xff09; Aga是一个简单&#xff0c;易于使用且可完全自定义的手风琴插…...

建设农业网站的论文/seo宣传

xss漏洞弹不了窗&#xff0c;我们可以试着去获取cookie&#xff0c;或者插入图片...

美食网站建设日程表/网络营销的模式有哪些?

企业根CA如何发放客户机证书&#xff0d;L2TP证书问题的补充说明<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />在ISA系列第二十一篇的博文中&#xff0c;我们介绍了如何在***服务器中使用L2TP协议。L2TP可以使用证书或预共享密…...

2017年做网站好难/百搜科技

移植微软Office的个性化设置(转)您想把在某一台电脑中创建的Office个性化设置&#xff0c;包括个性化菜单、宏命令等移植到别的机器上去吗&#xff1f;比如说您可以将家中的Office个性化设置移到单位的电脑中去、在重装系统后不再需要重建个性化设置等等&#xff0c;只用简单的…...