kOps etcd 备份、恢复与加密完整指南:从 etcd-manager 到 EBS 卷加密
kOps etcd 备份、恢复与加密完整指南从 etcd-manager 到 EBS 卷加密【免费下载链接】kopsKubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management项目地址: https://gitcode.com/gh_mirrors/kop/kopskOpsKubernetes Operations将集群全部状态存放在 etcd 中因此 etcd 的数据安全直接决定了生产集群的可用性。本文围绕 kOps 的 etcd 备份、灾难恢复与数据卷加密三大主题完整讲解 kOps 默认的备份机制etcd-manager、基于etcd-manager-ctl的恢复流程、master 租约一致性问题的排查修复以及通过encryptedVolume/kmsKeyId参数实现 EBS 卷加密的两种方式并结合仓库源码说明这些参数在底层是如何生效的帮助你为 kOps 集群构建一套可落地的数据安全方案。为什么 etcd 备份是硬性需求Kubernetes 依赖 etcd 作为整个集群的状态存储kOps 集群的元数据Pod、Service、Deployment、Secret 等都保存在其中。kOps 在每个 master 节点上为 etcd 分配两个独立的 AWS EBS 卷一个存放 Kubernetes 主数据mainetcd 集群另一个存放事件数据eventsetcd 集群。对于三节点 HA master这意味着共 6 个用于 etcd 数据的卷每个可用区 2 个。EBS 卷并非永不损坏的设备其年故障率在设计上约为 0.1%–0.2%。在多个 master 的规模下这个概率会随卷数量累加加上误删、异常写入等运维事故仅依赖单卷的可用性远远不够。因此为 etcd 建立周期性备份是 kOps 生产集群的基本要求否则一旦数据损坏整个 Kubernetes 集群的状态将无法恢复。备份机制etcd-manager 与对象存储从 kOps 1.12 开始kOps 使用etcd-manager来管理 etcd详见 etcd 管理它负责 etcd 的优雅升级、TLS 以及备份/恢复在控制面需要更高冗余时还会负责 etcd 集群的扩缩容。kOps 会将main与events两个 etcd 集群的备份统一存储在与集群配置相同的位置——对象存储如 S3中。kOps 默认的备份周期与保留策略如下项目默认值说明备份间隔每 15 分钟一次通过manager.backupInterval调整小时级备份保留1 周kOps 1.27 之前通过 env 变量控制天级备份保留90 天kOps 1.27 之前为 2 年通过manager.backupRetentionDays调整在源码中pkg/apis/kops/cluster.go 的EtcdBackupSpec与EtcdManagerSpec明确定义了这些语义EtcdBackupSpec.BackupStore备份数据的 VFS 读写路径对象存储地址EtcdBackupSpec.Imageetcd 备份 sidecar 容器镜像设置后会在 etcd Pod 中以 sidecar 方式运行备份EtcdManagerSpec.BackupInterval备份间隔默认 15 分钟EtcdManagerSpec.BackupRetentionDays备份保留天数默认 90 天EtcdManagerSpec.DiscoveryPollInterval成员发现轮询间隔默认 60 秒。调整备份间隔与保留期备份间隔与保留期都可以通过kops edit cluster修改字段说明详见 集群配置文档。调整备份间隔该参数默认值自 kOps 1.24.1 起提供etcdClusters: - etcdMembers: - instanceGroup: master-us-east-1a name: a name: main manager: backupInterval: 1h调整备份保留天数自 kOps 1.27 起默认值为 90 天etcdClusters: - etcdMembers: - instanceGroup: master-us-east-1a name: a name: main manager: backupRetentionDays: 30对于旧版 kOps则通过 env 变量分别设置小时级与天级备份的保留时长etcdClusters: - etcdMembers: - instanceGroup: master-us-east-1a name: a name: main manager: env: - name: ETCD_MANAGER_HOURLY_BACKUPS_RETENTION value: 7d - name: ETCD_MANAGER_DAILY_BACKUPS_RETENTION value: 1y灾难恢复使用 etcd-manager-ctl 恢复备份当 etcd 遭遇灾难性情况数据丢失、集群异常等时可以通过etcd-manager-ctl恢复 etcd 集群。etcd-manager-ctl不必运行在集群内只要你有集群状态存储如 S3的访问权限即可直接使用。恢复前必须了解的三点风险恢复过程会导致 master进而导致 API Server停机恢复操作不可撤销除非再次执行恢复覆盖备份之后创建的资源会丢失包括 Pod、事件以及其他新写入的数据。以下示例假设集群名为test.my.clusters状态存储在 S3 bucketmy.clusters中。第一步列出可用备份注意main与events集群的备份文件不同需要分别查询etcd-manager-ctl --backup-stores3://my.clusters/test.my.clusters/backups/etcd/main list-backups etcd-manager-ctl --backup-stores3://my.clusters/test.my.clusters/backups/etcd/events list-backups备份对象位于状态存储的backups/etcd/{main,events}路径下这也印证了 kOps 将备份与集群配置存放在同一对象存储的设计。第二步为两个 etcd 集群下发恢复指令etcd-manager-ctl --backup-stores3://my.clusters/test.my.clusters/backups/etcd/main restore-backup [main backup dir] etcd-manager-ctl --backup-stores3://my.clusters/test.my.clusters/backups/etcd/events restore-backup [events backup dir][main backup dir]、[events backup dir]替换为第一步list-backups输出的具体备份目录。第三步重启各 master 上的 etcd-manager 容器恢复不会立即开始需要重启所有 master 上的 etcd 才能触发。通过docker stop或kill停止 etcd-manager 容器即可容器名称以k8s_etcd-manager_etcd-manager开头。容器会自动重启并拾取恢复指令。也可以快速滚动 master但推荐优先采用重启容器的方式。重启后etcd-manager 会创建全新的 etcd 集群并将备份数据恢复到新集群中。恢复耗时取决于集群数据量的大小。第四步跟踪恢复进度在主 leader 节点上查看 etcd 日志/var/log/etcd(-events).log跟踪恢复进度。可以通过查看所有 master 的 etcd 日志判断哪台是 leader——注意main与events两个 etcd 集群的 leader 可能不同。补充直接访问 etcd 数据如果需要在恢复之外直接查看或操作 etcd 数据例如排查问题可参考 etcd 管理 中给出的步骤先通过kops get cluster --full -o yaml查看 etcd 版本再进入etcd-manager-mainPod最后配置etcdctl别名并连接https://127.0.0.1:4001使用 kube-apiserver 目录下的 CA 与客户端证书用etcdctl member list验证连通性。修复 master 租约一致性问题Kubernetes 存在一个已知 bug旧的 apiserver 租约lease可能残留在 etcd 中无法清理。要判断集群是否受此问题影响检查 kubernetes apiserver 的 endpoints 资源kubectl get endpoints/kubernetes -o yaml如果看到的地址数量多于 master 数量就需要手动从 etcd 集群中移除多余租约。访问 etcd 的方式见 etcd 管理。拿到可用的 etcd 客户端后先查看/registry/masterleases下的所有租约etcdctl get --prefix --keys-only /registry/masterleases确认后可以一次性删除全部残留租约etcdctl del --prefix /registry/masterleases/存活的 apiserver 会立即重新创建自己的租约随后再次检查上述 endpoints 资源确认问题已解决。由于各节点本地状态可能与 etcd 中的状态不一致建议对整个集群执行一次滚动更新kops rolling-update cluster --force --yesetcd 卷加密两种 AWS KMS 方案kOps 支持对 etcd 数据卷进行加密但必须在集群创建之前配置——无法对已运行的集群事后追加卷加密。在源码层面加密能力由 pkg/apis/kops/cluster.go 的EtcdMemberSpec承载EncryptedVolume *bool是否加密该卷KmsKeyID *string用于加密卷的 AWS KMS 密钥 IDARN。这两个字段会直接传递到 EBS 卷的创建任务中pkg/model/master_volumes.go 在构造awstasks.EBSVolume时将KmsKeyId与Encrypted一并设置从而在底层云资源层面落实加密。方案一使用 AWS 默认 KMS 密钥执行kops edit cluster ${CLUSTER_NAME}为每个 etcd 卷添加encryptedVolume: true... etcdClusters: - etcdMembers: - instanceGroup: master-us-east-1a name: a encryptedVolume: true name: main - etcdMembers: - instanceGroup: master-us-east-1a name: a encryptedVolume: true name: events ...方案二使用自定义 AWS KMS 密钥在需要满足合规要求或希望用自有密钥管理加密时可以同时指定kmsKeyId填入 KMS 密钥的完整 ARN... etcdClusters: - etcdMembers: - instanceGroup: master-us-east-1a name: a encryptedVolume: true kmsKeyId: full-arn-of-your-kms-key name: main - etcdMembers: - instanceGroup: master-us-east-1a name: a encryptedVolume: true kmsKeyId: full-arn-of-your-kms-key name: events ...应用配置两种方案修改完成后都执行相同的更新命令kops update cluster ${CLUSTER_NAME} # 先审查变更确认无误后再应用 kops update cluster ${CLUSTER_NAME} --yeskops update cluster会先输出将要应用的变更清单务必逐项审查确认 EBS 卷加密属性已进入变更列表确认后再加--yes实际应用。总结备份kOps 通过 etcd-manager 每 15 分钟自动备份main与events两个 etcd 集群到对象存储备份间隔与保留天数可通过backupInterval、backupRetentionDays调整字段定义见 pkg/apis/kops/cluster.go恢复使用etcd-manager-ctl下发恢复指令并重启各 master 的 etcd-manager 容器即可完成恢复注意恢复会造成停机且会丢失备份之后的数据一致性修复apiserver endpoints 地址数异常时可通过etcdctl清理/registry/masterleases下的残留租约并配合kops rolling-update cluster --force --yes完成全集群滚动更新加密务必在集群创建前通过encryptedVolume可选配kmsKeyId为 etcd 卷启用 EBS 加密该配置在 pkg/model/master_volumes.go 中会转换为底层 EBSVolume 任务的加密属性。【免费下载链接】kopsKubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management项目地址: https://gitcode.com/gh_mirrors/kop/kops创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Lightweight Charts™ 系列类型(Series Types)全指南:Area、Bar、Baseline、Candlestick、Histogram、Line 的数据格式与样式定制

Lightweight Charts™ 系列类型(Series Types)全指南:Area、Bar、Baseline、Candlestick、Histogram、Line 的数据格式与样式定制

前端图表库金融科技数据可视化 【免费下载链接】lightweight-charts Performant financial charts built with HTML5 canvas 项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts 点击查看 免费下载 导读 Lightweight Charts™(lightweig…

2026/9/21 15:31:37 阅读更多 →
TiXL CrossVec3 运算符详解:用叉积驱动实时视觉的向量运算指南

TiXL CrossVec3 运算符详解:用叉积驱动实时视觉的向量运算指南

音视频图形学桌面应用 【免费下载链接】t3 TiXL is an open source software to create realtime motion graphics. 项目地址: https://gitcode.com/GitHub_Trending/t3/t3 点击查看 免费下载 导读 CrossVec3 是 TiXL(tooll3)开源实时动态图…

2026/9/21 15:31:37 阅读更多 →
blessed-contrib 256 色定制与故障排查:字符乱码等常见问题快速排查清单

blessed-contrib 256 色定制与故障排查:字符乱码等常见问题快速排查清单

blessed-contrib 256 色定制与故障排查:字符乱码等常见问题快速排查清单 【免费下载链接】blessed-contrib Build terminal dashboards using ascii/ansi art and javascript 项目地址: https://gitcode.com/gh_mirrors/bl/blessed-contrib blessed-contrib …

2026/9/21 15:31:37 阅读更多 →

最新新闻

Angular 状态管理实战指南:基于 Signals、NgRx 与 RxJS 的现代选型与实现(Agentic Awesome Skills 深度解析)

Angular 状态管理实战指南:基于 Signals、NgRx 与 RxJS 的现代选型与实现(Agentic Awesome Skills 深度解析)

AI 技能AI 插件 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, …

2026/9/21 16:05:10 阅读更多 →
OpenDesign 设计系统包的 Token 契约与证据链机制——以 Vodafone 源证据文档为例

OpenDesign 设计系统包的 Token 契约与证据链机制——以 Vodafone 源证据文档为例

OpenDesign 设计系统包的 Token 契约与证据链机制——以 Vodafone 源证据文档为例 【免费下载链接】open-design 🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ …

2026/9/21 16:05:10 阅读更多 →
电动汽车参与电网调度的多目标优化模型与实践

电动汽车参与电网调度的多目标优化模型与实践

1. 电动汽车参与电网调度的背景与挑战随着全球能源结构转型加速,电动汽车(EV)保有量呈现爆发式增长。根据国际能源署数据,2022年全球电动汽车存量已突破2600万辆,预计2030年将达到2.45亿辆。这种快速增长带来一个关键问…

2026/9/21 16:05:10 阅读更多 →
Open-WebUI 的后端不填官方 endpoint,改走 TaoToken 兼容通道行不行?

Open-WebUI 的后端不填官方 endpoint,改走 TaoToken 兼容通道行不行?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 16:05:10 阅读更多 →
合规指南:用Babysitter人类审批完整记录满足受监管行业审计要求

合规指南:用Babysitter人类审批完整记录满足受监管行业审计要求

合规指南:用Babysitter人类审批完整记录满足受监管行业审计要求 【免费下载链接】babysitter Babysitter enforces obedience on agentic workforces and enables them to manage extremely complex tasks and workflows through deterministic, hallucination-free…

2026/9/21 16:05:10 阅读更多 →
python-sdk 的 MCP 客户端 `Client`:连接、生命周期与全部协议操作实战指南

python-sdk 的 MCP 客户端 `Client`:连接、生命周期与全部协议操作实战指南

python-sdk 的 MCP 客户端 Client:连接、生命周期与全部协议操作实战指南 【免费下载链接】python-sdk The official Python SDK for Model Context Protocol servers and clients 项目地址: https://gitcode.com/gh_mirrors/pythonsd/python-sdk 本篇指南以…

2026/9/21 16:04:09 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →