首页
/ Kubernetes集群状态管理的利器:Reshifter

Kubernetes集群状态管理的利器:Reshifter

2024-05-22 06:23:49作者:胡易黎Nicole

Reshifter是一个强大的Kubernetes集群状态管理工具和库,支持多种操作模式,包括命令行一次性任务、Web应用界面以及定时任务。它利用etcd API查询和操作与Kubernetes对象相关的状态,并兼容旧版(v2/registry)、新版(v2/v3/kubernetes.io)以及OpenShift等特定发行版的键值。

Kubernetes集群状态管理的利器:Reshifter

应用场景

无论你是要进行审计、计费、节省成本还是故障排查,Reshifter都是你的得力助手:

  • 审计 需要符合法规要求时,Reshifter能生成记录所有集群对象状态的审计轨迹。
  • 计费 记录谁运行了什么,以便对内部客户按量或按时计费。
  • 节省开支 当在公共云中运行开发或测试集群时,你可以用Reshifter保存状态,关闭集群,然后在需要时恢复以避免额外费用。
  • 问题解决 对于任何类型的Kubernetes集群,无论是生产环境还是测试环境,Reshifter都可以捕获特定时间点的状态,用于离线调试和故障排除。
  • 容量规划 收集数据以估计未来可能需要添加多少工作节点。
  • 升级 在从Kubernetes 1.5升级到1.6等版本时,使用Reshifter可以实现几乎零停机时间的平滑升级。
  • 恢复 在生产环境中运行时,使用Reshifter备份已部署应用的状态,作为恢复过程的基础。
  • 灾难恢复 运行多个集群时,可以通过Reshifter进行状态复制以应对灾难性故障。

状态和路线图

查看Trello板获取项目的当前状态和路线图详情。另请查阅设计哲学和架构,了解更多关于其工作原理的信息。

命令行工具

通过rcli二进制文件,你可以直接在命令行中使用Reshifter。在GitHub发布页面上下载适用于Linux和macOS的二进制版本。

$ rcli -h
Reshifter的命令行工具,支持Kubernetes集群的备份和还原。

使用方式:
  rcli [命令]

可用命令:
  backup      创建Kubernetes集群的备份
  explore     探测etcd端点
  help        关于任何命令的帮助
  restore     执行Kubernetes集群的还原
  stats       从etcd端点收集与Kubernetes相关的键的统计信息
  version     显示Reshifter版本

...

简单的使用示例假设有一个etcd在http://localhost:4001上运行:

# 将Kubernetes集群备份到Minio playground:
$ ACCESS_KEY_ID=Q3AM3UQ867SPQQA43P2F \
  SECRET_ACCESS_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG \
  rcli backup create --endpoint http://localhost:4001 \
                     --remote play.minio.io:9000 \
                     --bucket mh9-test

# 从Minio playground还原集群,使用备份ID 1498815551:
$ ACCESS_KEY_ID=Q3AM3UQ867SPQQA43P2F \
  SECRET_ACCESS_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG \
  rcli restore --endpoint http://localhost:4001 \
               --remote play.minio.io:9000 \
               --bucket mh9-test \
               --backupid 1498815551

更多使用方法,请参阅CLI教程

Web应用程序

想要体验Web界面?看看应用演示

本地部署

若想启动Reshifter Web应用,只需使用Docker镜像,因为它包含了静态资源(如HTML、CSS和JS)和Go二进制文件:

$ docker run --rm -p 8080:8080 quay.io/mhausenblas/reshifter:0.3.22

如果只想使用Reshifter API,例如作为一个无头服务,可以简单地使用二进制文件,无需其他依赖:

$ curl -s -L https://github.com/mhausenblas/reshifter/releases/download/v0.3.22-alpha/reshifter -o reshifter
$ chmod +x reshifter
$ ./reshifter

Reshifter的HTTP API定义在并可通过Swagger访问:swaggerhub.com/apis/mhausenblas/reshifter/1.0.0

在OpenShift中部署

为在OpenShift上安装Reshifter应用,我们使用了一个Makefile,创建一个名为reshifter的新项目,从Docker镜像启动应用,最后通过路由暴露服务以便在集群外部访问。这需要OpenShift Origin 1.5(或OpenShift Container Platform 3.5)集群的访问权限以及本地安装的oc CLI工具:

$ make init
$ make build
$ make publish

在Kubernetes中部署

要在Kubernetes中以可移植的方式安装Reshifter应用,使用kubectl和提供的YAML文件。这需要对Kubernetes 1.5或更高版本的集群的访问权限以及本地安装的kubectl CLI工具:

$ kubectl create -f https://raw.githubusercontent.com/mhausenblas/reshifter/master/deployments/reshifter-app.yaml

请注意:上述YAML文件定义了一个Deployment和一个Service对象。但它并未将Reshifter服务对外公开。如果你希望从集群外部访问该应用,你需要使用Ingress或者自定义YAML文件

备份策略

Reshifter支持不同的备份策略

配置

Reshifter在整个部署过程中接受以下配置参数,这些参数以环境变量的形式提供。目前它们都是可选的,但根据所使用的etcd设置或备份目标,可能需要设置一些参数,例如将备份存储到S3兼容的存储中。

环境变量 含义 设置时机
ACCESS_KEY_ID S3访问密钥ID 将备份到远程S3兼容存储时
SECRET_ACCESS_KEY S3秘密访问密钥 将备份到远程S3兼容存储时
RS_ETCD_CLIENT_CERT etcd客户端证书文件路径 使用安全etcd时
RS_ETCD_CLIENT_KEY etcd客户端密钥文件路径 使用安全etcd时
RS_ETCD_CA_CERT etcd CA证书文件路径 使用安全etcd时
RS_BACKUP_STRATEGY 如果存在,则选择备份策略 进行backup操作时
RS_ETCD_API_VERSION 如果存在,覆盖自动检测并强制Reshifter使用指定的etcd API版本;允许的值是v2v3 进行backuprestorestats操作时

注:

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
858
509
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
257
300
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
22
5