k8s学习-CKA真题-Etcd数据库备份恢复

简介: k8s学习-CKA真题-Etcd数据库备份恢复

题目

解析

针对存在的etcd实例https://127.0.0.1:2379,创建一个快照,保存到/srv/data/etcd-snapshot.db。在创建快照的过程中,如果卡住了,就键入ctrl+c终止,然后重试。

然后恢复一个已经存在的快照: /var/lib/backup/etcd-snapshot-previous.db

执行etcdctl命令的证书存放在:

ca证书:/opt/KUIN00601/ca.crt

客户端证书:/opt/KUIN00601/etcd-client.crt

客户端密钥:/opt/KUIN00601/etcd-client.key

本次实验时就不复制,使用本地的路径了,可以查看配置文件(我的是kubeadm安装的集群):

- --cert-file=/etc/kubernetes/pki/etcd/server.crt
- --key-file=/etc/kubernetes/pki/etcd/server.key
- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt

命令

环境搭建

安装etcdctl

敲一下etcdctl,没有的话会提示安装命令,安装后查看一下是否成功

解题

操作前先设置环境变量

export ETCDCTL_API=3

备份

无参数

etcdctl --endpoints="https://127.0.0.1:2379" snapshot save /srv/data/etcd-snapshot.db

有参数

etcdctl --endpoints="https://127.0.0.1:2379" --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /srv/data/etcd-snapshot.db

查看状态

无参数

etcdctl --endpoints="https://127.0.0.1:2379" snapshot status /srv/data/etcd-snapshot.db

有参数

etcdctl --endpoints="https://127.0.0.1:2379" --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot status /srv/data/etcd-snapshot.db

还原

还原之前可以删除一个资源,看看一会儿还原后资源是不是恢复了。

创建备份目录

mkdir -p /opt/backup/

移动集群文件,使apiserver等停止

mv /etc/kubernetes/manifests/kube-* /opt/backup

这里我也没有官方的etcd-snapshot-previous.db,就是把前面备份的改了个名字而已

无参数

etcdctl --endpoints="https://127.0.0.1:2379" snapshot restore /var/lib/backup/etcd-snapshot-previous.db --data-dir=/var/lib/etcd-restore

有参数

etcdctl --endpoints="https://127.0.0.1:2379" --endpoints="https://127.0.0.1:2379" --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot restore /var/lib/backup/etcd-snapshot-previous.db --data-dir=/var/lib/etcd-restore

修改配置文件

vim /etc/kubernetes/manifests/etcd.yaml
# 将volume配置的path: /var/lib/etcd改成/var/lib/etcd-restore
  volumes:
  - hostPath:
      path: /etc/kubernetes/pki/etcd
      type: DirectoryOrCreate
    name: etcd-certs
  - hostPath:
      path: /var/lib/etcd-restore

还原k8s组件

mv /opt/backup/* /etc/kubernetes/manifests
systemctl restart kubelet

结果

设置环境变量

如果配置文件中已经设置,命令行同时设置会有冲突

去除参数即可

删除一个pod,方便验证是否还原成功

还原结果如下图所示:

修改etcd配置如下图所示

还原后重启成功截图如下图所示:

可以看到还原前删除的foolbar

二进制安装时

博主是使用kubeadm安装的k8s,当使用二进制安装时,配置文件位置有所不同,其他一致。

二进制安装时,etcd不再是容器的方式。

查看etcd的配置,使用命令

systemctl status etcd

可以找到–config-file,例如/etc/etcd/etcd.config.yaml

或者使用ps命令查找

ps aux | grep "config.yaml"

模拟环境

题目

Make a backup of etcd running on cluster3-controlplane1 and save it on the controlplane node at /tmp/etcd-backup.db.

Then create a Pod of your kind in the cluster.

Finally restore the backup, confirm the cluster is still working and that the created Pod is no longer with us.

分析

备份运行在cluster3-controlplane1上的etcd,并将其保存在cluster3-controlplane1节点的 /tmp/ectd-backup.db 、上。

然后在集群中创建一个Pod。

最后恢复备份,确认集群仍在工作,并且创建的Pod已不在。

重点还是找到几个文件的位置。

解题

备份

ETCDCTL_API=3 etcdctl snapshot save /tmp/etcd-backup.db \
--cacert /etc/kubernetes/pki/etcd/ca.crt \
--cert /etc/kubernetes/pki/etcd/server.crt \
--key /etc/kubernetes/pki/etcd/server.key

创建一个pod

kubectl run test --image=nginx
kubectl geet po | grep test

移动组件

还原

etcdctl snapshot restore /tmp/etcd-backup.db \
--data-dir /var/lib/etcd-backup \
--cacert /etc/kubernetes/pki/etcd/ca.crt \
--cert /etc/kubernetes/pki/etcd/server.crt \
--key /etc/kubernetes/pki/etcd/server.key

修改etcd.yaml文件

移动组件配置文件

总结

  1. 查看etcd.yaml中的cert等文件路径,用于etcdctl命令的参数
  2. 备份
  3. 创建一个资源(可选,用于验证)
  4. 移动组件配置文件位置(包含etcd.yaml)
  5. 还原到指定目录
  6. 修改etcd.yaml配置文件,将挂载路径修改为还原时指定的目录
  7. 移动组件配置文件,恢复集群
  8. 查看之前创建的资源(可选,用于验证)

参考

k8s - 为 Kubernetes 运行 etcd 集群

k8s二进制安装

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
28天前
|
Kubernetes 网络协议 网络安全
提升你的云技能:深入了解CKA认证之k8s升级秘籍!
提升你的云技能:深入了解CKA认证之k8s升级秘籍!
19 0
|
1月前
|
SQL 存储 关系型数据库
【MySQL 数据库】11、学习 MySQL 中的【锁】
【MySQL 数据库】11、学习 MySQL 中的【锁】
78 0
|
2月前
|
存储 人工智能 Cloud Native
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
185 0
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL 数据库】4、MySQL 事务学习
【MySQL 数据库】4、MySQL 事务学习
44 0
|
26天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
6天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
6天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
28天前
|
Kubernetes 应用服务中间件 nginx
提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!
提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!
22 0
|
28天前
|
Kubernetes 应用服务中间件 数据安全/隐私保护
k8s 网络策略揭秘:CKA认证必备的网络知识全解析
k8s 网络策略揭秘:CKA认证必备的网络知识全解析
22 0

推荐镜像

更多