etcd概念

etcd就是个分布式非关系型数据库.
3 个节点组成的集群,可以容忍 1 个节点故障。
生成环境中,不推荐使用单个节点的 etcd 集群。

  • etcd 支持存储多个版本的数据,允许查询指定 key 历史版本的数据。
  • etcd 为了控制数据总空间,会周期性的清理数据的历史版本。
  • etcd 不支持修改旧版本的数据。
  • etcd 中,数据以二进制的方式存储在磁盘中。
  1. etcd 创建 lease 对象时,需要指定一个时间作为其超时时间。
  2. 将 key 关联到 lease 对象上,当 lease 对象超时后,key 会被系统自动回收。
  3. etcd 支持将多个 key 关联到同一个 lease 对象上,从而大幅降低刷新 lease 的性能开销。

安装etcd

只在master节点上安装

# yum安装etcd
yum install -y etcd

# 开机自启动并现在启动etcd
systemctl enable --now etcd

修改配置文件

vim /etc/etcd/etcd.conf

# 修改大约第6行
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

在这里插入图片描述


etcd键值管理

在这里插入图片描述

查看pod网段

参考: https://jimmysong.io/kubernetes-handbook/concepts/flannel.html

pod网段是在etcd数据库中定义的.

# 查看etcd 中的注册的宿主机的 pod 地址网段信息
[root@node1 ~]# etcdctl ls /kube-centos/network/subnets
/kube-centos/network/subnets/172.33.68.0-24
/kube-centos/network/subnets/172.33.31.0-24
/kube-centos/network/subnets/172.33.96.0-24

每个 node 上的 Pod 子网是根据我们在安装 flannel 时配置来划分的,在 etcd 中查看该配置:

[root@node1 ~]# etcdctl get /kube-centos/network/config
{"Network":"172.33.0.0/16","SubnetLen":24,"Backend":{"Type":"host-gw"}}

etcdctl命令行工具


etcdctl命令行客户端常用命令

在这里插入图片描述


创建配置和查看配置

在这里插入图片描述

# 创建配置
etcdctl mk /atomic.io/network/config '{"Network":"10.254.0.0/16","Backend":{"Type":"vxlan"}}'

# 查看配置信息
etcdctl get /atomic.io/network/config

在这里插入图片描述


etcdctl配置指定授权文件

参考: https://blog.51cto.com/u_7682110/4845904
在执行etcdctl命令时需要指定认证授权文件, 所以将认证授权步骤 别名至 etcdctl 简化操作

# 指定ETCDCTL_API版本为3
$ export ETCDCTL_API=3

# 创建etcdctl别名,指定监听地址,和证书
$ alias etcdctl='etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key'

etcdctl常用的命令

# 查看etcd集群的成员节点
$ etcdctl member list -w table

# 查看etcd集群节点状态:
$ etcdctl endpoint status -w table
$ etcdctl endpoint health -w table

备份数据

# 字符串拼接用于定时任务
etcdctl snapshot save `hostname`-etcd_`date +%Y%m%d%H%M`.db

恢复快照

单机

#停止etcd和apiserver
## 移走当前数据目录
mv /var/lib/etcd/ /var/lib/etcd.bak

#恢复快照
etcdctl snapshot restore `hostname`-etcd_`date +%Y%m%d%H%M`.db --data-dir=/var/lib/etcd/

二进制部署的ETCD恢复快照

在这里插入图片描述


etcd故障排查


etcd起不来

journalctl -u etcd > a.log导出日志慢慢分析

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐