1. 配置
go
export ETCDCTL_API=3 # Kubernetes 1.13+ 使用 API v3
export ETCDCTL_ENDPOINTS=https://[2023:145:246:270::3]:2379 # etcd API endpoint,通常为集群内的 etcd 服务地址
export ETCDCTL_CACERT=/etc/kubernetes/certs/ca.crt # CA 证书文件
export ETCDCTL_CERT=/etc/kubernetes/certs/kubectl.crt # 客户端证书文件
export ETCDCTL_KEY=/etc/kubernetes/certs/kubectl.key # 客户端私钥文件
source export.sh
参数来源:
-
ETCDCTL_API 执行etcdctl version
$etcdctl version: 3.5.13 API version: 3.5 Go Version: go1.22.5 Go OS/Arch: linux/amd64
-
ETCDCTL_ENDPOINTS
直接查看api-server进程参数 ps -ef|grep /usr/local/bin/kube-apiservergo--etcd-servers=https://[2023:145:246:270::3]:2379
因为 api-server也需要和etcd打交道
-
证书
使用/etc/kubernetes/certs/etcd
和/etc/kubernetes/certs/
好像都可以,可能默认值相同的
2. 常用命令
go
etcdctl get --prefix / --keys-only # 获取所有键
etcdctl get /registry/pods/{namespace}/{pod-name}:存储 Pod 对象数据。
etcdctl get /registry/nodes/{node-name}:存储节点信息。 未验证过
etcdctl get /registry/secrets/{namespace}/{secret-name}:存储 Secret 对象。未验证过
Kubernetes 在存储数据时默认使用 protobuf 编码,因为它比 JSON 更紧凑且高效。如果你的集群设置了加密配置(例如使用 EncryptionConfiguration),数据可能会被加密存储,但原始格式仍然是 protobuf。
etcdctl get --prefix / --keys-only 表示匹配以/开头的所有条目 ,
etcdctl get / --keys-only 精确匹配一条 /路劲的条目