【镜像制作】制作k8s的yaml配置的备份镜像

文章目录

      • 简介
      • 一.备份代码
      • 二.dockerfile代码
      • 三.cronjob配置

简介

通过shell脚本写一个定期备份k8syaml配置的镜像,然后通过cronjob来实现定期执行,将备份文件上传到ceph存储或者是存放到NAS存储上。

一.备份代码

通过kubectl导出yaml配置文件,然后进行压缩并上传到ceph存储。

#!/bin/bashbucket="yt-k8s-yamlbak"
key_access="864XMJ0U9BDFBUI8OOxxxx"
key_secret="bNzAXe8DzGGshi23aKoykfYiy2XeFR1U2Oxxxxx"
host="192.168.12.158:8000" #endpointRoot="/data/yaml"
clusterName="yt-k8s"
nameSpaces=$(kubectl get ns|grep -v "NAME"|awk '{print $1}'|xargs)
types="deploy service cronjob ing cm secret serviceAccount sts pvc hpa"#判断是否存在bucket,不存在就创建bucket
scode=$(curl -o /dev/null --max-time 60 --connect-timeout 60 -w "%{http_code}" http://$host/$bucket/ --silent)
if [ $scode == "404" ];thenacl="x-amz-acl:public-read"relativePath="/${bucket}"current=`TZ=GMT LANG=en_US date "+%a, %d %b %Y %H:%M:%S GMT"`stringToSign="PUT\n\n\n${current}\n${acl}\n${relativePath}"signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${key_secret} -binary | base64`curl -A "CreateBucket" -s -v -X PUT --max-time 60 --connect-timeout 60 "http://${host}${relativePath}" -H "Authorization: AWS ${key_access}:${signature}" -H "Date: ${current}" -H "Host: ${host}" -H "${acl}"if [ $? -ne 0 ];thenecho "`date +%Y-%m-%dT%H:%M:%S` bucket create fail"fiecho "`date +%Y-%m-%dT%H:%M:%S` bucket create ok"
fi#循环命名空间,并将命名空间下的资源导出成yaml配置文件。
for ns in ${nameSpaces[@]}
dofor tps in ${types[@]}domkdir $Root/$clusterName/$ns/$tps -pfor name in $(kubectl get $tps -n $ns|awk '{print $1}'|grep -v NAME)dokubectl get $tps $name -n $ns -o yaml > $Root/$clusterName/$ns/$tps/${name}.yamldonedone
done#将导出的yaml文件进行压缩成zip文件,然后上传到ceph对象存储
dh=$(date +%Y%m%d%H%M%S)
cd $Root
zip -r ${dh}.zip $clusterName
rm -rf $Root/${clusterName}
dt=$(date +%Y/%m/%d)
BakRoot="/data/$clusterName/$dt"
relativePath="/${bucket}/$dt/${dh}.zip"
contentType="application/x-zip-compressed"
acl="x-amz-acl:public-read"
current=`TZ=GMT LANG=en_US date "+%a, %d %b %Y %H:%M:%S GMT"`
stringToSign="PUT\n\n${contentType}\n${current}\n${acl}\n${relativePath}"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${key_secret} -binary | base64`
curl -A "UploadLog" -s -v --max-time 1800 --connect-timeout 60 -X PUT -T "$Root/${dh}.zip" -H "Host: ${host}" -H "Date: ${current}" -H "${acl}" -H "Content-Type: ${contentType}" -H "Authorization: AWS ${key_access}:${signature}" "http://${host}${relativePath}" -v >/tmp/t.log 2>&1
cat /tmp/t.log
cat /tmp/t.log|grep "HTTP/1.1 200 OK"
if [ $? -eq 0 ];thenecho "`date +%Y-%m-%dT%H:%M:%S` upload $Root/${dh}.zip success"[ -d $BakRoot ] || mkdir -p $BakRootmv -fv $Root/${dh}.zip $BakRoot/ 
elseecho "`date +%Y-%m-%dT%H:%M:%S` upload $Root/${dh}.zip fail"
fi
rm -fv /tmp/t.log

二.dockerfile代码

需要将kubectl和config配置文件拷贝到root下。

# VERSION 1 - EDITION 1
# # # Author: wangbikangFROM alpine:3.18 MAINTAINER docker_user wangbikang@pconline.com.cnCOPY run.sh /data/
COPY kubectl /bin/
RUN mkdir -p /root/.kube
COPY config /root/.kube/
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk add --no-cache curl coreutils  openssl zip bashCMD ["/data/run.sh"]

三.cronjob配置

cronjob配置,每小时只想能够一次,然后将文件压缩备份一份到nas

apiVersion: batch/v1
kind: CronJob
metadata:labels:app: yt-k8s-yamlbak name: yt-k8s-yamlbaknamespace: auto-public 
spec:schedule: "2 * * * *"suspend: falsejobTemplate:spec:activeDeadlineSeconds: 3600backoffLimit: 1template:spec:containers:- name: task image: pcgroup-registry-vpc.cn-shenzhen.cr.aliyuncs.com/public/k8s-yaml-backup:20240607154517 imagePullPolicy: IfNotPresentcommand: ["bash","/data/run.sh"]volumeMounts:- mountPath: /data/yt-k8s-yamlbakname: static-htmlreadOnly: falserestartPolicy: Nevervolumes:- name: static-htmlnfs:server: 2e347xxx-mfg89.cn-shenzhen.nas.aliyuncs.compath: /yt-k8s-yamlbak/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是服务器系统端口隐患?

对于服务器来说,首要保障稳定性和安全性。因此,我们仅需保证服务器最基本的功能即可,就像声卡都是默认禁止的。我们并不需要太多的功能,也不需要太多的端口支持。像一些不必要,而且风险较高的端口大可封掉。而一些必要…

如何下载GoldWave 6.80软件及详细安装步骤

GoldWave功能介绍: GoldWave是一款很强大多功能数字音频编辑软件,可以用来消除某些音乐里边的噪音,可以用来声音编缉、播放、录制和转换还是多功能。它的音频特效有很多种可供选择。 GoldWave音频编辑软件与Windows其它应用软件一样&#x…

在Git上,提交记录有误,修改commit方法

在GitLab上,如果你发现提交(commit)有误,可以采取以下几种方式来修正,具体选择哪种方法取决于你的具体情况和需求: 1. 修改最近一次提交(Amend) 如果你只是想修改最近一次提交的信息(比如提交…

GaussDB技术解读——GaussDB架构介绍(四)

目录 11 GaussDB云原生架构 11.1 云原生关键技术架构 11.2 关键技术方案 11.2.1 通信组件 11.2.2 集群管理组件 11.2.3 多租组件 GaussDB架构介绍(三)从智能关键技术方案、驱动接口关键技术方案等方面对GaussDB架构进行了解读,本篇将…

SpringCloud:Feign远程调用

程序员老茶 🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 P   S : 点赞是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈&#…

为什么裁员裁的都是干活的?

大家好,我是瑶琴呀。 “裁员裁的都是干活的?”,这可能是个错觉。 公司裁员无外乎两种原因,第一,纯纯想降本增效,留下来的人,一个人干两个人的活。这种属于经济型裁员。第二,业务萎…

在python中使用代理模型加快fmu模拟速度

from pyfmi import load_fmu import pandas as pd import matplotlib.pyplot as plt import numpy as np from sklearn.tree import DecisionTreeRegressor # 决策树算法 from sklearn.metrics import r2_score # 全局 FMU 对象 model = load_fmu(rC:\Users\win10\Desktop\GPS…

LeetCode每日一题 | 419 | 甲板上的战舰 |二维数组遍历

✨今天给大家带来的是LeetCode上的第419题——甲板上的战舰(LeetCode 419. Battleships in a Board✨。这道题目是一个经典的二维数组遍历问题,要求我们在一个棋盘中找到所有的战舰。接下来给大家详细讲解一下解题思路和主要的数据结构哦~🥳 题目描述 …

驾驭未来:智能网关如何革新车联网体验

车联网(Internet of Vehicles)是一个跨领域的技术综合体,它基于物联网,利用先进的信息通信技术实现车与车、车与路、车与人、车与服务平台等的全方位网络连接。 龙兴物联智能网关是集成了多协议、多接口,具有综合数据采…

[图解]建模相关的基础知识-11

1 00:00:00,700 --> 00:00:05,090 下一个知识点就是函数在集合上的限制 2 00:00:08,290 --> 00:00:10,200 符号可以这样来 3 00:00:10,210 --> 00:00:16,640 F然后一个往下的箭头A 4 00:00:16,650 --> 00:00:19,520 意思就是说F里面的元素 5 00:00:20,120 --&…

解析网络空间的安全威胁与应对

网络空间的安全威胁与应对 网络空间安全威胁概述 网络空间安全威胁涵盖了从传统的网络攻击到复杂的网络战等多个层面。随着网络技术的发展,网络攻击手段日益翻新,包括病毒、木马、钓鱼、DDoS攻击等。这些攻击手段具有隐蔽性强、破坏力大、传播速度快的…

闭包表(Closure Table)

设计血缘关系(data-lineage)时,想到要使用的表模型。 表设计 节点记录表 - node CREATE TABLE lineages_node (name varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 节点名称,id bigint(20) unsigned NOT NULL AUTO_INCREM…

element--el-table合计换行显示

el-table合计换行显示 效果图实现1、使用到的参数2、代码演示 效果图 实现 1、使用到的参数 官网链接:element-table 将show-summary设置为true就会在表格尾部展示合计行。默认情况下,对于合计行,第一列不进行数据求合操作,而是…

【Python/Pytorch - 网络模型】-- SVD算法

文章目录 文章目录 00 写在前面01 基于Pytorch版本的SVD算代码02 理论知识 00 写在前面 (1)矩阵的奇异值分解在最优化问题、特征值问题、最小二乘方问题、广义逆矩阵问题及统计学等方面都有重要应用; (2)应用&#…

Sora和快手可灵背后的核心技术 | 3DVAE:通过小批量特征交换实现身体和面部的三维形状变分自动编码器

【摘要】学习3D脸部和身体生成模型中一个解开的、可解释的和结构化的潜在表示仍然是一个开放的问题。当需要控制身份特征时,这个问题尤其突出。在本文中,论文提出了一种直观而有效的自监督方法来训练一个3D形状变分自动编码器(VAE),以鼓励身份特征的解开潜在表示。通过交换不同…

Docker配置与使用详解

一、引言 随着云计算和微服务的兴起,Docker作为一种轻量级的容器化技术,越来越受到开发者和运维人员的青睐。Docker通过容器化的方式,将应用程序及其依赖项打包成一个可移植的镜像,从而实现了应用程序的快速部署和扩展。本文将详…

数据结构(DS)C语言版:学习笔记(4):线性表

参考教材:数据结构C语言版(严蔚敏,吴伟民编著) 工具:XMind、幕布、公式编译器 正在备考,结合自身空闲时间,不定时更新,会在里面加入一些真题帮助理解数据结构 目录 2.1线性…

DP读书:半导体物理考试重点

半导体物理重点🥳🥳🥳 半导体中电子的状态和能带 半导体的单晶材料和其他固态晶体材料一样,是由大量原子周期性重复排列而成,而每个原子又包含原子核和许多电子。 半导体单晶材料中的带电子是指:半导体晶…

vue页面带滚动条,打开新页面页面不置顶的问题

第一个思路还是找router下的index.jsexport default new Router({mode: history, // 去掉url中的#scrollBehavior: () > ({ y: 0 }),routes: constantRoutes })如果不成功可以再试试在内容区设置document.body.scrollTop 设置为0如果有默认class名,通过路由监听修…

PHP入门教程3:数组和字符串操作

PHP入门教程3:数组和字符串操作 在前两篇文章中,我们学习了PHP的基础语法、控制结构和函数的使用。本文将重点介绍数组和字符串的高级操作,这些是PHP编程中非常常见且重要的内容。本文将包含以下几个部分: 数组的类型和操作多维…