技术标签: kubernetes python ribbon ssl etcd
家里有两个 k8s,树莓派使用的是 k3s,nuc 上就是正常的 x86 的 k8s,树莓派 k3s 使用的是 mysql,mysql 也是使用 cronjob 每天跑的备份,但是 nuc 中的 etcd 一直没有备份过,所以今天就准备备份下。
要做的事情很简单,就是 etcd 快照,完了之后就直接扔到 minio 中。
本来想的是使用 python 的 etcd 库做备份的,但是不知道为什么依赖一直没有安装好,索性就不装逼了直接使用 etcd cli 去 snapshot,因为 etcd 的备份需要使用证书,所以就直接拿出证书放到项目的 ssl 目录下面了。
导入库
import os
import time
from minio import Minio
from minio.error import S3Error
下面是脚本的一些配置参数
# 获取当前时间
now=time.strftime("%Y%m%d", time.localtime())
# 一些配置参数
etcd_url=""
cacert="./ssl/ca.pem"
cert="./ssl/node-node1.pem"
key="./ssl/node-node1-key.pem"
backup_file_name="etcd-"+ now
没错,snapshot 文件就使用时间去命名了。
之后就是创建快照函数
def create_snapshot():
command="ETCDCTL_API=3 etcdctl --endpoints=" + etcd_url + " --cacert=" + cacert + " --cert=" + cert + " --key="+ key + " snapshot save " + backup_file_name
os.system(command=command)
完了之后就直接上传到 minio
def upload_to_minio():
client=Minio(
"oss.example.cn:9000",
access_key="",
secret_key="",
secure=False
)
found=client.bucket_exists("etcd-backup")
if not found:
client.make_bucket("etcd-backup")
print("etcd-backup bucket created")
else:
pass
client.fput_object("etcd-backup",backup_file_name,backup_file_name)
因为我的 minio 是没有配置 https 的所以配置了secure=False
之后就是主函数
if __name__ == "__main__":
try:
create_snapshot()
except Exception as e:
print(e)
try:
upload_to_minio()
except S3Error as e:
print("upload failed: "+ e)
接着就是 cronjob 的配置
apiVersion: batch/v1beta1
kind: CronJob
metadata:
creationTimestamp: null
name: etcd-backup
namespace: cronjob
spec:
failedJobsHistoryLimit: 5
jobTemplate:
metadata:
creationTimestamp: null
spec:
template:
metadata:
creationTimestamp: null
spec:
containers:
- image: registry.bboysoul.cn/rpi/etcd-backup:87abd366c81cbe4b7d0edb20670a5755e0506d13
imagePullPolicy: IfNotPresent
name: etcd-backup
resources: {}
restartPolicy: Never
schedule: 0 3 * * *
successfulJobsHistoryLimit: 5
status: {}
之后就是配置流水线,我使用的是 drone 加 argocd,这里有个问题就是 argocd 是没有 arm 二进制的,我就网上找了一个 arm 的镜像复制出来,自己做了一个镜像,下面是 dockerfile
FROM debian:stable-slim
RUN apt update -y && \
apt install git -y && \
rm -rf /var/lib/apt/lists/*
COPY ./argocd /bin
COPY ./kubectl /bin
然后是 drone 的流水线
kind: pipeline
type: kubernetes
name: build
platform:
os: linux
arch: arm
steps:
- name: docker
image: plugins/docker
settings:
username: ????
password: ???
repo: registry.bboysoul.cn/rpi/etcd-backup
registry: registry.bboysoul.cn
tags:
- latest
- ${DRONE_COMMIT_SHA}
- name: sync app
image: bboysoul/argocd:v2.0.0-1
commands:
- git clone ??????
- cd argocd-yaml/etcd-backup
- kubectl set image -f cronjob.yaml etcd-backup=registry.bboysoul.cn/rpi/etcd-backup:${DRONE_COMMIT_SHA} --local --dry-run=client -o yaml >temp
- mv temp cronjob.yaml
- git add .
- git commit -m "change image registry.bboysoul.cn/rpi/etcd-backup:${DRONE_COMMIT_SHA}"
- git push origin master
- argocd login --insecure --username ????? --password ?????? 10.10.100.76
- argocd app sync etcd-bakcup
- argocd app wait etcd-bakcup
argocd 的 app
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: 'etcd-bakcup'
spec:
destination:
namespace: 'cronjob'
server: '?????'
source:
path: './etcd-backup'
repoURL: '????????????'
targetRevision: HEAD
project: 'default'
之后看下怎么完善下加个备份完成之后的通知啊什么的。
原文链接:https://www.bboy.app/2022/01/11/k8s%E9%85%8D%E7%BD%AEcronjob%E5%A4%87%E4%BB%BDetcd/
你可能还喜欢
点击下方图片即可阅读
云原生是一种信仰
关注公众号
后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!
点击 "阅读原文" 获取更好的阅读体验!
发现朋友圈变“安静”了吗?
文章浏览阅读510次,点赞15次,收藏15次。以下是在Red Hat 9上安装和配置yum源的步骤:YUM源(也称为YUM源仓库或YUM存储库):YUM管理程序的本地或远程存储库,作为YUM软件供应的主要源。YUM是Redhat、CentOS中的软件包管理器,全称为Yellowdog Updater, Modified,可以用来根据需要自动下载、安装和管理软件包,简化了用户安装和更新软件的工作。_yum源配置 国内
文章浏览阅读4.4k次。有如下git,存在master和dev两个分支2,现在dev分支基础上,把master分支rebase进来可以看到提示text1,text2两个文件存在冲突,需要打开这两个文件解决冲突:注意<<<<<< ====== >>>>>>都需要删掉,======前面是master分支的内容,后面是当前分支dev的内容,假设我们需要保留master的内容,修改好后如下:保存退出后,输入git add..._git rebase 冲突
文章浏览阅读415次,点赞13次,收藏8次。除了以上作品下面是2023-2024年最新100套计算机专业原创的毕业设计源码+数据库,是近期作品,如果你的题目刚好在下面可以文末领取java源码参考。springboot基于Android平台的智能短途旅游规划APP。springboot基于微信小程序的智能诊疗与服务系统。springboot基于Web的社区医院管理服务系统。springboot基于Web前端技术的茶叶销售系统。springboot基于小程序的宠物医院预约管理平台。springboot微信小程序的车位预约系统。
文章浏览阅读1.6k次,点赞6次,收藏33次。yolov5部署到rk3588遇到的问题,和解决方案汇总_rk3588部署的注意事项
文章浏览阅读7k次。Google浏览器官方已经不能访问了,第三方的软件很多都是经过别人修改后,有的甚至有木马程序,前几天我从abobe推广下载的Google浏览器,都卡的不能上网,其他第三方的可见一斑,或许得看手气吧,但是 怎么安装官方的软件?方法1:Google官方离线包下载:对于稳定版(正式版)Chrome来说,只需要在Chrome的“最终用户许可协议”页面链接后面添加”?standalone_谷歌浏览器离线安装包
文章浏览阅读1.6w次,点赞4次,收藏4次。k近邻算法简单、直观:给定一个训练数据集DDD,对新的输入实例,在训练数据集中找到与该实例最邻近的kkk个实例,这kkk个实例的多数属于某个类,就把该输入实例分为这个类。下面先叙述kkk近邻算法,然后再讨论其细节:k近邻(k-Nearest Neighbor)算法输入:\qquad 训练集:D=(x1,y1),(x2,y2),⋯ ,(xN,yN)D = {(x_1, y_1), (x_2, y_2), \cdots, (x_N, y_N)}D=(x1,y1),(x2,y2),⋯,(xN,y_k近邻算法估计e(y|x)
文章浏览阅读4.5k次。工具:Crystal Reports 2008步骤一:打开水晶报表文件,点击上方 插入--->图片(选择文件位置) 接着将图片调整大小后添加到指定位置步骤二:设置图片显示规则,右键选择设置图形格式设置图片格式编辑图片显示规则..._水晶报表显示图片
文章浏览阅读107次。使用python连接操作数据库--》下载配置python环境--》推荐安装PyMySQL 库:PyMySQL 是一个纯Python 实现的MySQL 客户端操作库,支持事务、存储过程、批量执行等使用命令:pip install pymysql--》连接数据库脚本1 #导入模块2 importpymysql3 #连接数据库4 conn =pymysql.connect(5 host='loc..._python在命令行中连接数据库
文章浏览阅读448次。非常感谢朋友们点开小编的绝地求生10月21日更新时间 绝地求生10月21日维护到几点文章,因为大家现在都是想要了解到此类的信息,那么既然现在大家都想要知道绝地求生10月21日更新时间 绝地求生10月21日维护到几点,小编今天就来给大家针对这样的问题做个科普介绍吧。我将每天为大家收集和分享一些新鲜又有营养的精彩内容,希望大家能够一如既往的给予小编最大的鼓励和支持,毕竟大家的鼓励和支持才是小编持续更新...
文章浏览阅读332次,点赞10次,收藏6次。评估元件和电路通常需要的增益、相位、群延迟、失真、杂散、CN 和噪声测量可以使用一台仪器进行测量。动态幅度和相位精度为 +/-0.05dB 和 +/-0.3deg。作为频谱分析仪,它的工作频率范围为 10 Hz 至 500 MHz,分辨率带宽 (RBW) 以 1-3-10 步长跨越 1 Hz 至 1 MHz。噪声边带低于 -100 dBc/Hz @ 100 kHz 载波偏移,10 MHz 时灵敏度为 -145 dBm/Hz。+/-0.05 dB /+/-0.3deg 动态幅度/相位精度。
文章浏览阅读174次。读取SD卡文件信息,添加到ListView中显示出来:ListView取得SD文件信息的代码:[java]view plaincopy?List>list=newArrayList>();StringsDStateString=Environment.getExternalStorageState();if(sDStateString.equals(Environmen..._android 点击搜索出来的文件后,再点击查看内部文件或sd卡内的文件,这些文件显示一
文章浏览阅读66次。初学编程需要什么基础,零基础学编程系统化编程课程之编程工具箱文件名称操作构件属性。上图为 该编程工具构件的基本属性和方法。