etcd 与 2379 端口
2379 是 etcd 的客户端通信端口,2380 用于节点之间的对等通信。etcd 存放 Kubernetes 的全部集群状态:对象定义、服务账号令牌、RBAC 规则与部分配置数据,写入 etcd 等同于直接改写集群。未授权的 2379 可以被读取全部 Secret,因此它和控制面一样属于必须严格限制来源的端口。
基本信息
| 服务 | etcd(客户端监听端口) |
|---|---|
| 协议 | TCP,推荐启用 TLS(https) |
| 相邻端口 | 2380 为节点间对等通信 |
| 存放内容 | K8s 全部对象、服务账号与 Secret 数据 |
| 权限要求 | 只允许控制面节点与 kube-apiserver 访问 |
| 常用工具 | etcdctl、kubectl 进入控制面容器 |
典型使用场景
- 承载 Kubernetes 集群状态,apiserver 的唯一持久化后端
- 集群运维:查看成员健康、领导节点与数据库大小
- 备份与恢复演练,带外保存快照并定期验证可恢复
- 故障排查:确认是否因磁盘延迟或配额触发告警
- 独立使用:部分系统把 etcd 当作强一致的配置中心
健康与成员检查
健康与成员检查
etcdctl --endpoints=https://10.0.0.11:2379 --cacert=/etc/etcd/ca.crt --cert=/etc/etcd/client.crt --key=/etc/etcd/client.key endpoint health # 逐节点看健康
etcdctl --endpoints=https://10.0.0.11:2379 endpoint status --write-out=table # 看数据库大小与版本
etcdctl --endpoints=https://10.0.0.11:2379 member list -w table # 成员与领导节点
ss -lntp | grep -E '2379|2380' # 确认监听地址是内网而非全网卡输出逐列读法
| 输出项 | 含义 | 正常/异常 |
|---|---|---|
| health | 节点健康结论 | unhealthy 需查磁盘延迟与进程状态 |
| DB SIZE | 数据库文件大小 | 持续快速增长需评估压缩与历史版本配置 |
| IS LEADER | 是否领导节点 | 集群中应恰好有一个 true |
| RAFT TERM | 选举任期 | 频繁跳变说明网络或磁盘不稳定 |
| ERROR | 错误信息 | 出现超时说明对端或网络已异常 |
快照备份与恢复要点
快照备份与恢复要点
etcdctl snapshot save /backup/etcd-$(date +%F).db --endpoints=https://10.0.0.11:2379 # 定期做带外备份
etcdctl snapshot status /backup/etcd-$(date +%F).db -w table # 校验快照可读,确认 revision
# 恢复必须停掉 etcd 并指定新数据目录,恢复完成后核对成员与数据版本
ls -l /backup/ # 备份文件权限应收紧,快照内含全部 Secret 明文2379 未授权可达等于集群被接管:攻击者可直接读取 Secret 中的令牌与密钥,或写入恶意对象实现持久化,务必用证书认证并只放行控制面来源。
高可用部署至少三节点,磁盘建议用低延迟 SSD;etcd 对磁盘写入延迟非常敏感,一旦触发慢盘告警,apiserver 会连带出现请求超时与选主抖动。
备份除集群数据外别忘证书与配置文件:只恢复快照而漏掉证书,新集群可能起不来;快照文件本身包含敏感数据,存储位置与权限要和数据库备份同等对待。