news 2026/7/10 10:17:42

Kubernetes 运维实战:etcd 备份恢复、集群升级与证书更新

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kubernetes 运维实战:etcd 备份恢复、集群升级与证书更新

在 Kubernetes 集群的日常运维中,etcd 数据管理、版本升级和证书更新是确保集群稳定运行的三大核心任务。本文将基于实战经验,详细介绍这三项关键操作的具体步骤和注意事项。

一、etcd 备份与恢复操作

etcd 作为 Kubernetes 的数据存储核心,其数据安全性对集群至关重要。无论是单节点还是多节点集群,定期备份和掌握恢复演练都是必备的运维工作。

1.1 备份操作

单 master 集群备份

bash

运行

ETCDCTL_API=3 etcdctl snapshot save /opt/etcd-back/snap.db \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key

多 master 集群备份:需要在每个 master 节点执行备份命令:

bash

运行

# 在 k8s-01 节点 ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key \ snapshot save /snap-$(date +%Y%m%d%H%M).db # 在 k8s-02 节点执行相同命令

备份完成后,建议将快照文件复制到安全的外部存储,并验证备份文件完整性:

bash

运行

# 查看备份文件详情 etcdctl snapshot status snap.db -w table

1.2 恢复操作

单 master 集群恢复步骤

  1. 停止控制平面组件(通过移动静态 Pod 清单实现):

bash

运行

mv /etc/kubernetes/manifests/ /etc/kubernetes/manifests-backup/
  1. 备份现有数据目录:

bash

运行

mv /var/lib/etcd /var/lib/etcd.bak
  1. 从快照恢复数据:

bash

运行

ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" \ --cert="/etc/kubernetes/pki/etcd/server.crt" \ --key="/etc/kubernetes/pki/etcd/server.key" \ --cacert="/etc/kubernetes/pki/etcd/ca.crt" \ snapshot restore /opt/etcd-back/snap.db --data-dir=/var/lib/etcd/
  1. 重启控制平面组件:

bash

运行

mv /etc/kubernetes/manifests-backup /etc/kubernetes/manifests

多 master 集群恢复步骤

  1. 在所有 master 节点停止控制平面组件并备份数据目录(同单节点步骤 1-2)

  2. 分别在每个节点执行恢复命令(以两个节点为例):

bash

运行

# 在 k8s-01 节点 ETCDCTL_API=3 etcdctl snapshot restore /snap-202207182330.db \ --name=k8s-01 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key \ --initial-advertise-peer-urls=https://192.168.1.123:2380 \ --initial-cluster-token=etcd-cluster-0 \ --initial-cluster=k8s-01=https://192.168.1.123:2380,k8s-02=https://192.168.1.124:2380 \ --data-dir=/var/lib/etcd # 在 k8s-02 节点执行类似命令,注意修改节点名称和地址
  1. 在所有 master 节点重启控制平面组件

二、Kubernetes 集群升级指南

集群升级需要遵循严格的步骤,确保升级过程中业务不受影响。以下是从 v1.28.15 升级到 v1.29.15 的示例流程。

2.1 升级前准备

  1. 检查集群状态,确保所有节点健康:

bash

运行

kubectl get nodes kubectl get pods --all-namespaces
  1. 备份重要数据:
  • etcd 数据备份(参考第一节)
  • 关键配置文件备份:/etc/kubernetes/目录
  1. 检查可升级版本:

bash

运行

kubeadm upgrade plan

2.2 升级控制平面节点

  1. 验证升级计划差异:

bash

运行

kubeadm upgrade diff 1.29.15
  1. 执行升级:

bash

运行

kubeadm upgrade apply v1.29.15
  1. 升级 kubelet 和 kubectl:

bash

运行

yum update -y kubelet systemctl daemon-reload systemctl restart kubelet

2.3 升级工作节点

  1. 标记节点不可调度:

bash

运行

kubectl drain <node-name> --ignore-daemonsets
  1. 在工作节点执行升级:

bash

运行

kubeadm upgrade node yum update -y kubelet systemctl daemon-reload systemctl restart kubelet
  1. 恢复节点调度:

bash

运行

kubectl uncordon <node-name>

2.4 升级验证

升级完成后,验证集群状态:

bash

运行

kubectl get nodes # 确认所有节点版本已更新且状态为 Ready kubectl get pods --all-namespaces # 确认所有系统组件正常运行

三、Kubernetes 证书更新流程

Kubernetes 证书默认有效期为 1 年,需要定期更新以避免集群故障。

3.1 使用 kubeadm 自动更新(推荐)

  1. 检查证书过期时间:

bash

运行

kubeadm certs check-expiration
  1. 更新所有证书:

bash

运行

sudo kubeadm certs renew all
  1. 验证更新结果:

bash

运行

kubeadm certs check-expiration
  1. 重启控制平面组件:

bash

运行

# 对于静态 Pod 管理的组件,删除 Pod 使其重建 kubectl delete pods -n kube-system kube-apiserver-<node-name> kubectl delete pods -n kube-system kube-controller-manager-<node-name> kubectl delete pods -n kube-system kube-scheduler-<node-name>

3.2 手动更新证书(非 kubeadm 部署)

  1. 检查证书过期时间:

bash

运行

sudo openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "Not After"
  1. 生成新证书(以 apiserver 为例):

bash

运行

openssl genrsa -out apiserver.key 2048 openssl req -new -key apiserver.key -out apiserver.csr -subj "/CN=kube-apiserver" openssl x509 -req -in apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ -out apiserver.crt -days 365
  1. 替换旧证书并重启组件:

bash

运行

# 替换证书 cp apiserver.crt apiserver.key /etc/kubernetes/pki/ # 重启服务 sudo systemctl restart kube-apiserver kube-controller-manager kube-scheduler

3.3 注意事项

  1. 证书更新前务必备份:

bash

运行

tar -czvf /root/kubernetes-pki-backup.tar.gz /etc/kubernetes/pki
  1. 确保所有节点时间同步,避免因时间差异导致证书验证失败

  2. 更新后全面检查集群状态,包括节点、Pod 和服务可用性

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 9:53:20

EmotiVoice情感编码技术揭秘:语音合成如何传递情绪

EmotiVoice情感编码技术揭秘&#xff1a;语音合成如何传递情绪 在虚拟助手机械地念出“今天天气不错”的时候&#xff0c;你是否会感到一丝疏离&#xff1f;而在某款游戏中&#xff0c;NPC因你的靠近突然语气警觉、语速加快——那一刻&#xff0c;沉浸感悄然建立。这种差异背后…

作者头像 李华
网站建设 2026/7/10 9:53:08

Kotaemon与Hugging Face模型无缝集成教程

Kotaemon与Hugging Face模型无缝集成实战指南 在企业智能化转型的浪潮中&#xff0c;构建一个既能理解专业领域知识、又能安全可控地生成准确回答的对话系统&#xff0c;已成为众多行业的迫切需求。通用大模型虽然语言流畅&#xff0c;但在面对“我们公司上季度的差旅报销政策是…

作者头像 李华
网站建设 2026/7/10 4:37:40

实测Kotaemon在多轮对话中的表现,结果令人震惊!

实测Kotaemon在多轮对话中的表现&#xff0c;结果令人震惊&#xff01; 在一次为某金融客户搭建智能投顾助手的项目中&#xff0c;我们遇到了一个典型难题&#xff1a;用户连续提问“上个月收益如何&#xff1f;”“那债券类呢&#xff1f;”“推荐什么产品&#xff1f;”&…

作者头像 李华
网站建设 2026/7/10 0:05:55

微信小程序分账系统技术解析:从官方接口到合规架构的选型指南

在小程序生态开发中&#xff0c;分账功能是平台型应用&#xff08;如多商户电商、知识付费分销&#xff09;的核心模块。开发者常面临三重技术困境&#xff1a;官方分账接口灵活性不足、第三方系统合规性存疑、多支付通道整合难度大。本文从技术视角拆解微信小程序分账的实现逻…

作者头像 李华
网站建设 2026/7/9 13:50:40

Kotaemon实体抽取能力在客户工单中的应用

Kotaemon实体抽取能力在客户工单中的应用 在某电信运营商的客服中心&#xff0c;一线坐席每天要处理上千条客户报障信息&#xff1a;从“我家路由器连不上网”到“打印机一直卡纸”&#xff0c;描述五花八门、术语混杂。传统方式下&#xff0c;坐席需手动提取设备型号、故障现象…

作者头像 李华
网站建设 2026/7/10 13:31:44

EmotiVoice语音合成引擎的自动化测试框架介绍

EmotiVoice语音合成引擎的自动化测试框架设计与实践 在AI语音技术飞速发展的今天&#xff0c;用户对语音合成的要求早已超越“能说话”这一基本功能。从虚拟偶像直播到游戏NPC对话系统&#xff0c;再到个性化有声读物生成&#xff0c;人们期待的是富有情感、具备人格化特征、音…

作者头像 李华