2025年5月16日,开源分布式键值存储项目 etcd 发布了全新大版本 v3.6.0。本次版本不仅修复了大量已知问题,也带来了关键特性和性能优化,极大提升了系统的稳定性、安全性与易用性。
etcd作为云原生时代 Kubernetes 的核心组件之一,一直是分布式协调和服务注册发现的重要基石。本篇文章将为大家深度解读etcd v3.6.0的核心更新内容,提供最全的安装部署指南(Linux、macOS、Docker),以及升级建议,助你快速掌握这一重要版本。
etcd是一个分布式的可靠键值存储,设计上强调:
未来云原生时代,etcd依旧是分布式系统的中枢大脑,坚实运行etcd就是保障集群高效稳定运行的关键。
ETCD_VER=v3.6.0
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1 --no-same-owner
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version
/tmp/etcd-download-test/etcdutl version
# 启动etcd服务
/tmp/etcd-download-test/etcd
说明:此脚本便捷下载并解压v3.6.0版本二进制包,兼容32/64位Linux系统。
启动成功后,我们可以验证写入与读取:
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
ETCD_VER=v3.6.0
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}
rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf /tmp/etcd-${ETCD_VER}-darwin-amd64
/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version
/tmp/etcd-download-test/etcdutl version
完成后,mac用户也能体验到最新版本的etcd工具与服务,兼容M1/Intel架构。
etcd官方提供了基于Docker的镜像,方便用户快速部署和测试。
ETCD_VER=v3.6.0
# 清理旧数据目录及容器
rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp
docker rmi gcr.io/etcd-development/etcd:${ETCD_VER} || true
docker run \
-p 2379:2379 \
-p 2380:2380 \
--mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
--name etcd-gcr-${ETCD_VER} \
gcr.io/etcd-development/etcd:${ETCD_VER} \
/usr/local/bin/etcd \
--name s1 \
--data-dir /etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster s1=http://0.0.0.0:2380 \
--initial-cluster-token tkn \
--initial-cluster-state new \
--log-level info \
--logger zap \
--log-outputs stderr
启动完成后,执行命令检测服务健康:
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdctl endpoint health
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdctl put foo bar
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdctl get foo
在升级至v3.6.0之前,请务必查阅官方升级指南[1],部分旧版本可能存在不兼容的API变更,尤其是在集群配置和安全策略方面。
升级步骤一般包括:
新版etcd全面替换日志系统为Uber开源的 zap[2],该框架支持高性能、结构化日志,帮助用户更好地调试与运维。
用户可以通过配置更灵活地输出日志到标准错误、文件或其他系统,同时保持低延迟和高吞吐率。
同时支持:
用户不用担心平台兼容性,实现跨平台无缝体验。
针对Kubernetes、Docker等容器环境,etcd v3.6.0提升了数据目录持久化方案,支持绑定挂载卷,减少数据丢失风险。
[1]
官方升级指南: https://github.com/etcd-io/etcd/blob/master/Documentation/upgrades/upgrade_3_6.md
[2]
zap: https://github.com/uber-go/zap