k8s Etcd版本号

# 下载etcdctl二进制并放入容器
curl -O  https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz
tar -zxvf etcd-v3.5.0-linux-amd64.tar.gz
docker cp etcd-v3.5.0-linux-amd64/etcdctl test-control-plane:/usr/bin
docker exec -it test-control-plane bash
chmod +x /usr/bin/etcdctl
alias myetcd="etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key --endpoints https://127.0.0.1:2379"

# 查询endpoints数据
# revision是最新的全局版本号,单调递增,与k8s对象resourceVersion无关
# create_revision是创建的全局版本号,保持不变,与k8s对象resourceVersion无关
# mod_revision是最近更新的全局版本号,单调递增,与k8s对象resourceVersion无关
# version在key创建时是1,每次更新+1,与k8s对象generation相同
# kvs里面key和value都是base64编码
myetcd get /registry/services/endpoints/default/kubernetes -w json
{
    "header": {
        "cluster_id": 15322685067764436105,
        "member_id": 2583549131277751082,
        "revision": 70869,
        "raft_term": 20
    },
    "kvs": [
        {
            "key": "L3JlZ2lzdHJ5L3NlcnZpY2VzL2VuZHBvaW50cy9kZWZhdWx0L2t1YmVybmV0ZXM=",
            "create_revision": 196,
            "mod_revision": 69405,
            "version": 21,
            "value": "azhzAAoPCgJ2MRIJRW5kcG9pbnRzEsACCpoCCgprdWJlcm5ldGVzEgAaB2RlZmF1bHQiACokNGJjNTI3NzktNjgyYS00MGZkLTk0YjMtY2ZmODM0YWU5MmE1MgA4AEIICLqIqMYGEABaLwonZW5kcG9pbnRzbGljZS5rdWJlcm5ldGVzLmlvL3NraXAtbWlycm9yEgR0cnVligGYAQoOa3ViZS1hcGlzZXJ2ZXISBlVwZGF0ZRoCdjEiCAjWwPnJBhAAMghGaWVsZHNWMTpkCmJ7ImY6bWV0YWRhdGEiOnsiZjpsYWJlbHMiOnsiLiI6e30sImY6ZW5kcG9pbnRzbGljZS5rdWJlcm5ldGVzLmlvL3NraXAtbWlycm9yIjp7fX19LCJmOnN1YnNldHMiOnt9fUIAEiEKDgoKMTcyLjE4LjAuMxoAGg8KBWh0dHBzEKsyGgNUQ1AaACIA"
        }
    ],
    "count": 1
}

# watch报错etcdserver: mvcc: required revision has been compacted,说明版本已经被压缩
# get时--rev表示获取小于或者等于指定版本的最新数据
# 从开始版本开始watch key
myetcd watch /registry/services/endpoints/default/kubernetes --rev=196
# 从最近更新版本开始watch key
myetcd watch /registry/services/endpoints/default/kubernetes --rev=69405
# 从revision开始watch key
myetcd watch /registry/services/endpoints/default/kubernetes --rev=70869

# 压缩版本
myetcd compact 70869
# etcd不支持通过key来查看所有历史版本号,通过使用版本号可以确认历史版本是否已经被压缩
myetcd get /registry/services/endpoints/default/kubernetes --rev=70869

 

posted on 2025-12-14 15:34  王景迁  阅读(1)  评论(0)    收藏  举报

导航