第九章 Kubernetes集群维护
1、Etcd数据库备份与恢复
所有 Kubernetes 对象都存储在 etcd 上。 定期备份 etcd 集群数据对于在灾难场景(例如丢失所有控制平面节点)下恢复 Kubernetes 集群非常重要。 快照文件包含所有 Kubernetes 状态和关键信息。为了保证敏感的 Kubernetes 数据的安全,可以对快照文件进行加密。备份 etcd 集群可以通过两种方式完成:etcd 内置快照和卷快照。
1)内置快照
etcd 支持内置快照。快照可以从使用 etcdctl snapshot save 命令的活动成员中获取, 也可以通过从 etcd 数据目录 复制 member/snap/db 文件,该 etcd 数据目录目前没有被 etcd 进程使用。获取快照不会影响成员的性能。
下面是一个示例,用于获取 $ENDPOINT 所提供的键空间的快照到文件 snapshotdb:
ETCDCTL_API=3 etcdctl --endpoints $ENDPOINT snapshot save snapshotdb
验证快照:
ETCDCTL_API=3 etcdctl --write-out=table snapshot status snapshotdb
+----------+----------+------------+------------+
| HASH | REVISION | TOTAL KEYS | TOTAL SIZE |
+----------+----------+------------+------------+
| fe01cf57 | 10 | 7 | 2.1 MB |
+----------+----------+------------+------------+
2)卷快照
如果 etcd 运行在支持备份的存储卷(如 Amazon Elastic Block 存储)上,则可以通过获取存储卷的快照来备份 etcd 数据。
补充:
1)Etcd数据库的Pod的启动方式为静态Pod
2)在Etcd数据库的 /etc/kubernetes/manifests/etcd.yaml 中映射了共享宿主机2个目录
-
/etc/kubernetes/pki/etcd 存放etcd相关crt证书
-
/var/lib/etcd 存放数据目录
3)Etcd开启了 hostNetwork 功能,即共享宿主机网络
[root@k8s-master-1-71 ~]# ss -nlptu | grep 2379
tcp LISTEN 0 128 192.168.1.71:2379 *:* users:(("etcd",pid=2151,fd=9))
tcp LISTEN 0 128 127.0.0.1:2379 *:* users:(("etcd",pid=2151,fd=8))
2、使用 etcdctl 选项的快照
使用 etcdctl 提供的各种选项来制作快照。例如:
# 需要使用etcdctl工具,需提前安装
yum -y install etcd ETCDCTL_API=3 etcdctl -h
2.1 备份 etcd 集群
通过指定端点、证书等来制作快照(备份),如下所示:
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \ # 指定连接etcd的端口,且是https方式
--cace