etcd
环境信息
- etcd v3.5
wget https://github.com/etcd-io/etcd/releases/download/v3.5.9/etcd-v3.5.9-linux-amd64.tar.gz |
启动 etcd
etcd |
常用管理命令
etcd
查看版本信息
etcd --version |
创建集群
etcd
创建集群涉及参数说明
name | 说明 | 命令行参数 |
---|---|---|
name |
每个集群成员的唯一名称 | --name=etcd0 |
initial-advertise-peer-urls |
群成员广播给集群其他成员(用于连接本节点)的 URL 默认为 http://IP:2380 |
--initial-advertise-peer-urls=http://10.0.0.10:2380 |
listen-peer-urls |
在这些(一个或多个) URL 上监听其他集群成员的连接请求 通信包括了集群管理任务、数据同步和心跳检测等 |
http://10.0.0.10:2380,http://127.0.0.1:2380 |
listen-client-urls |
该成员监听客户端连接的 URL。 默认端口 2379 | --listen-client-urls=http://10.0.0.10:2379,http://127.0.0.1:2379 |
advertise-client-urls |
该成员广播给客户端的 URL | --advertise-client-urls=http://10.0.0.10:2379 |
initial-cluster |
所有 etcd 成员的初始列表 |
--initial-cluster=etcd0=http://10.0.0.10:2380,etcd1=http://10.0.0.11:2380,etcd2=http://10.0.0.12:2380 |
data-dir |
etcd 数据的存储目录。 |
--data-dir=/var/lib/etcd |
initial-cluster-token |
初始集群的唯一标识符,用于区分不同的 etcd 集群 |
--initial-cluster-token=my-etcd-token |
initial-cluster-state |
初始集群状态,可以是 new 或 existing 。通常在引导新集群时使用 new ,而在添加或删除成员时使用 existing 。 |
--initial-cluster-state=new |
quota-backend-bytes |
etcd 的后端数据库大小的硬限制,默认是 2GB |
--quota-backend-bytes=3000000000 |
cert-file key-file |
用于 HTTPS 的证书和私钥 | --cert-file=/etc/kubernetes/pki/etcd/server.crt --key-file=/etc/kubernetes/pki/etcd/server.key |
trusted-ca-file |
客户端和对等体的验证所需的 CA 证书 | --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt |
client-cert-auth |
启用客户端证书验证,默认为 false |
--client-cert-auth |
listen-peer-urls
和 initial-advertise-peer-urls
的区别说明:
listen-peer-urls
这个参数指定了
etcd
成员应该在哪些地址和端口上监听来自其他etcd
成员的请求(数据同步、领导选举、集群更改等相关)主要用途是定义哪个网络接口和端口号应该被
etcd
服务绑定,以便它可以接收来自其他成员的连接initial-advertise-peer-urls
这个参数告诉
etcd
该如何 通告自己 给集群中的其他成员。这是其他集群成员用来联系此etcd
成员的地址。主要用途是 当新成员加入集群时,它需要通知其他成员自己的存在,以及如何与自己通信,因此它必须是个其他节点可达的 Endpoints,如
http://0.0.0.0:2380
就不行。listen-client-urls
和advertise-client-urls
的区别同理
示例环境说明
主机 | IP | 角色 |
---|---|---|
etcd1 | 172.17.0.2/16 | etcd node |
etcd2 | 172.17.0.3/16 | etcd node |
etcd3 | 172.17.0.4/16 | etcd node |
分别在 3 个节点上执行以下 3 条命令,创建集群
etcd1
执行命令:
etcd --data-dir=data.etcd --name etcd1 \ |
etcd2
执行命令:
etcd --data-dir=data.etcd --name etcd2 \ |
etcd3
执行命令:
etcd --data-dir=data.etcd --name etcd3 \ |
检查节点健康状态
ENDPOINT=http://172.17.0.3:2380,http://172.17.0.2:2380,http://172.17.0.4:2380 |
etcdctl
查看版本信息
etcdctl version |
etcd 集群管理
查看 etcd 集群成员列表
Kubernetes 中查看 etcd
集群成员列表使用如下命令
kubectl exec -n kube-system -it etcd-k8s-master1 -- sh -c "ETCDCTL_API=3 etcdctl member list --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key" |
指定输出格式为 table
etcdctl member list --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --write-out=table |
输出内容说明如下:
3c087bf12db7a0f
: 集群中每一个成员的唯一 ID。started
: 集群成员的当前状态。started
表示活动的。k8s-master2
:etcd
集群成员的名字,通常与其主机名或节点名相对应https://172.31.30.115:2380
:Peer URLs
,其他etcd
成员用于与该成员通信的 URL。默认为 本地 IP 的 2380 端口https://172.31.30.123:2379
:Client URLs
,客户端用于与etcd
成员通信的 URL。默认为 本地 IP 的 2379 端口Is Learner
: 表示该成员是否是一个learner
。Learner 是etcd
的一个新功能,允许一个成员作为非投票成员加入集群,直到它准备好成为一个完全参与的成员。false
表示它们都不是learners
检查集群状态
检查单个节点的集群配置状态
etcdctl --write-out=table endpoint status --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key |
查看所有节点的集群配置状态
ENDPOINTS=https://172.31.30.115:2379,https://172.31.29.250:2379,https://172.31.30.123:2379 |