etcd在k8s集群中的身份以及重要性介绍
在Kubernetes(K8s)集群中,etcd扮演着至关重要的角色,它是集群状态存储的核心组件。以下是etcd在K8s集群中的角色、作用及其重要性的详细说明:
角色:etcd是K8s集群的“大脑”,存储和管理了整个集群的状态信息。
重要性:
etcd是K8s集群中不可或缺的组件之一。没有etcd,K8s将无法存储和管理集群的状态信息,也无法实现集群的配置和状态的动态更新。
etcd的高可靠性和一致性保证了K8s集群的稳定性和可用性。即使某个节点发生故障,其他节点也可以从etcd中获取最新的集群状态信息,并继续提供服务。
etcd的分布式锁和领导选举机制为K8s集群提供了资源管理和调度的基础。这些功能使得K8s能够高效地调度和管理集群中的资源,以满足不同的工作负载和场景。
这里说一下,k8s集群有一个故障机制,就是整个集群不管你是成百上千台的节点,只要故障率达到整个集群的1/2,那么整个集群都得崩溃
但是etcd集群不一样,一个etcd集群不管有多少节点故障,只要有一个节点存活,那都不影响工作。并且,故障的etcd节点恢复后还会自动同步etcd主节点的数据
etcd数据备份和恢复
1.安装etcdctl(每个master节点都要安装)
# 这个etcdctl指令的版本取决于你的k8s所部署的etcd版本,在 '/etc/kubernetes/manifests' 目录下能看到许多重要组件的信息
cat /etc/kubernetes/manifests/etcd.yaml
# 从github官网找到对应版本的etcd下载
wget https://mirror.ghproxy.com/https://github.com/etcd-io/etcd/releases/download/v3.5.6/etcd-v3.5.6-linux-amd64.tar.gz
# 下载完成后,解压该文件
tar -zxvf etcd-v3.5.6-linux-amd64.tar.gz
cp -a etcd-v3.5.6-linux-amd64/etcdctl /usr/local/bin/
2.编写脚本备份etcd数据
# 因为etcd集群各节点之间数据是同步的,所以备份的时候就只需要在一个节点备份etcd数据即可,但是恢复的时候需要到每个master节点执行etcd数据恢复命令
mkdir /opt/etcd_backup/
vim etcd-backup.sh
#! /bin/bash
# 配置etcd服务证书的目录
ETCD_PATH=/etc/kubernetes/pki
CACERT=$ETCD_PATH/etcd/ca.crt
CERT=$ETCD_PATH/etcd/server.crt
KEY=