Kubernetes官方分布式键值存储镜像,为K8s集群提供高可用、一致性的数据存储服务,用于保存集群状态和配置信息,是Kubernetes核心组件之一。
下载次数: 269001
类型:

dyrnq/etcdregistry.k8s.io/etcd 是 Kubernetes 官方维护的 etcd 容器镜像。etcd 是一个分布式、高可用的键值存储系统,基于 Raft 一致性算法实现,主要用于存储分布式系统的关键数据(如配置信息、集群状态等)。该镜像专为 Kubernetes 集群设计,作为其核心组件之一,负责存储集群的状态数据(如 Pod 配置、服务信息、节点状态等),同时也可独立部署用于其他分布式系统的配置管理或服务发现场景。
/kube-system/config)。pods、services、namespaces 等资源的元数据)。通过以下命令拉取最新版本镜像:
bashdocker pull registry.k8s.io/etcd:latest
如需指定版本(如 3.5.10),可替换标签:
bashdocker pull registry.k8s.io/etcd:3.5.10
单节点模式适合本地开发或测试,无需集群配置:
bashdocker run -d \ --name etcd-single \ --publish 2379:2379 \ # 客户端通信端口 --publish 2380:2380 \ # 集群间通信端口 --volume etcd-data:/var/lib/etcd \ # 数据持久化目录 registry.k8s.io/etcd:latest \ etcd \ --name=etcd-node-1 \ # 节点名称 --data-dir=/var/lib/etcd \ # 数据存储目录 --listen-client-urls=[***] \ # 监听客户端请求的地址 --advertise-client-urls=http://localhost:2379 \ # 对外暴露的客户端地址(供其他节点访问) --listen-peer-urls=[***] \ # 监听集群节点间通信的地址 --initial-advertise-peer-urls=http://localhost:2380 \ # 对外暴露的集群通信地址 --initial-cluster=etcd-node-1=http://localhost:2380 \ # 初始集群配置(单节点仅包含自身) --initial-cluster-token=etcd-cluster-token \ # 集群标识 token(集群内所有节点需一致) --initial-cluster-state=new # 集群初始化状态(new 表示新建集群)
验证运行状态:
bash# 进入容器 docker exec -it etcd-single sh # 查看集群健康状态 etcdctl endpoint health --endpoints=http://localhost:2379 # 写入测试数据 etcdctl put /test/key "hello etcd" # 读取测试数据 etcdctl get /test/key
生产环境需部署多节点集群(至少 3 节点,确保高可用)。以下为 3 节点集群示例(假设节点 IP 分别为 192.168.1.101、192.168.1.102、192.168.1.103):
节点 1(192.168.1.101)启动命令:
bashdocker run -d \ --name etcd-node-1 \ --publish 2379:2379 \ --publish 2380:2380 \ --volume etcd-data-1:/var/lib/etcd \ registry.k8s.io/etcd:latest \ etcd \ --name=etcd-node-1 \ --data-dir=/var/lib/etcd \ --listen-client-urls=[***] \ --advertise-client-urls=[***] \ --listen-peer-urls=[***] \ --initial-advertise-peer-urls=[***] \ --initial-cluster=etcd-node-1=[***] \ --initial-cluster-token=etcd-cluster-token \ --initial-cluster-state=new
节点 2(192.168.1.102)启动命令:
bashdocker run -d \ --name etcd-node-2 \ --publish 2379:2379 \ --publish 2380:2380 \ --volume etcd-data-2:/var/lib/etcd \ registry.k8s.io/etcd:latest \ etcd \ --name=etcd-node-2 \ --data-dir=/var/lib/etcd \ --listen-client-urls=[***] \ --advertise-client-urls=[***] \ --listen-peer-urls=[***] \ --initial-advertise-peer-urls=[***] \ --initial-cluster=etcd-node-1=[***] \ --initial-cluster-token=etcd-cluster-token \ --initial-cluster-state=new
节点 3(192.168.1.103)启动命令:
bashdocker run -d \ --name etcd-node-3 \ --publish 2379:2379 \ --publish 2380:2380 \ --volume etcd-data-3:/var/lib/etcd \ registry.k8s.io/etcd:latest \ etcd \ --name=etcd-node-3 \ --data-dir=/var/lib/etcd \ --listen-client-urls=[***] \ --advertise-client-urls=[***] \ --listen-peer-urls=[***] \ --initial-advertise-peer-urls=[***] \ --initial-cluster=etcd-node-1=[***] \ --initial-cluster-token=etcd-cluster-token \ --initial-cluster-state=new
验证集群状态:
bash# 任意节点执行,检查集群成员 etcdctl member list --endpoints=[***] # 检查集群健康状态 etcdctl endpoint health --endpoints=[***]
etcd 支持通过环境变量配置核心参数,常用变量如下:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
ETCD_NAME | 节点名称(集群内唯一) | default |
ETCD_DATA_DIR | 数据存储目录 | ./default.etcd |
ETCD_LISTEN_CLIENT_URLS | 监听客户端请求的地址(支持 HTTP/HTTPS) | [***] |
ETCD_ADVERTISE_CLIENT_URLS | 对外暴露的客户端地址(供其他节点/客户端访问) | [***] |
ETCD_LISTEN_PEER_URLS | 监听集群节点间通信的地址 | [***] |
ETCD_INITIAL_ADVERTISE_PEER_URLS | 对外暴露的集群通信地址(供其他节点访问) | [***] |
ETCD_INITIAL_CLUSTER | 初始集群配置,格式为 <节点名1>=<节点1通信地址>,<节点名2>=<节点2通信地址> | default=[***] |
ETCD_INITIAL_CLUSTER_TOKEN | 集群标识 token(所有节点必须一致,用于区分不同集群) | etcd-cluster |
ETCD_INITIAL_CLUSTER_STATE | 集群初始化状态(new 表示新建集群,existing 表示加入现有集群) | new |
除环境变量外,etcd 支持通过命令行参数配置,常用参数与环境变量对应关系如下:
| 命令行参数 | 对应环境变量 | 描述 |
|---|---|---|
--name | ETCD_NAME | 节点名称 |
--data-dir | ETCD_DATA_DIR | 数据存储目录 |
--listen-client-urls | ETCD_LISTEN_CLIENT_URLS | 监听客户端请求的地址 |
--advertise-client-urls | ETCD_ADVERTISE_CLIENT_URLS | 对外暴露的客户端地址 |
--listen-peer-urls | ETCD_LISTEN_PEER_URLS | 监听集群节点间通信的地址 |
--initial-advertise-peer-urls | ETCD_INITIAL_ADVERTISE_PEER_URLS | 对外暴露的集群通信地址 |
--initial-cluster | ETCD_INITIAL_CLUSTER | 初始集群配置 |
--initial-cluster-token | ETCD_INITIAL_CLUSTER_TOKEN | 集群标识 token |
--initial-cluster-state | ETCD_INITIAL_CLUSTER_STATE | 集群初始化状态 |
docker-compose.yml)yamlversion: '3' services: etcd: image: registry.k8s.io/etcd:latest container_name: etcd-single ports: - "2379:2379" # 客户端端口 - "2380:2380" # 集群通信端口 volumes: - etcd-data:/var/lib/etcd # 数据持久化 environment: - ETCD_NAME=etcd-node-1 - ETCD_DATA_DIR=/var/lib/etcd - ETCD_LISTEN_CLIENT_URLS=[***] - ETCD_ADVERTISE_CLIENT_URLS=http://localhost:2379 - ETCD_LISTEN_PEER_URLS=[***] - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://localhost:2380 - ETCD_INITIAL_CLUSTER=etcd-node-1=http://localhost:2380 - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-token - ETCD_INITIAL_CLUSTER_STATE=new volumes: etcd-data: # 声明持久化卷
启动命令:docker-compose up -d
docker-compose.yml)yamlversion: '3' services: etcd-node-1: image: registry.k8s.io/etcd:latest container_name: etcd-node-1 ports: - "2379:2379" - "2380:2380" volumes: - etcd-data-1:/var/lib/etcd environment: - ETCD_NAME=etcd-node-1 - ETCD_DATA_DIR=/var/lib/etcd - ETCD_LISTEN_CLIENT_URLS=[***] - ETCD_ADVERTISE_CLIENT_URLS=[***] - ETCD_LISTEN_PEER_URLS=[***] - ETCD_INITIAL_ADVERTISE_PEER_URLS=[***] - ETCD_INITIAL_CLUSTER=etcd-node-1=[***] - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-token - ETCD_INITIAL_CLUSTER_STATE=new networks: - etcd-cluster-net etcd-node-2: image: registry.k8s.io/etcd:latest container_name: etcd-node-2 ports: - "2381:2379" # 避免端口冲突,映射到主机 2381 端口 - "2382:2380" volumes: - etcd-data-2:/var/lib/etcd environment: - ETCD_NAME=etcd-node-2 - ETCD_DATA_DIR=/var/lib/etcd - ETCD_LISTEN_CLIENT_URLS=[***]
以下是 dyrnq/etcd 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务