本文永久链接: https://www.xtplayer.cn/rancher/etcd-snapshots-showing-0kb-size-in-the-rancher-ui/

在 rancher 2.6.x 和 2.7.x 版本中,创建的下游集群可能存在集群 etcd 备份大小为 0 kb 的情况。根据 suse 知识库文档 https://www.suse.com/support/kb/doc/?id=000021447 说明,这个问题主要是 rke2 和 rke2-etcd、k3s 和 k3s-etcd 租约的租约持有者不匹配导致。

  • 对于 rke2 集群,可以使用以下命令去修复。

    kubectl -n kube-system get cm rke2-etcd-snapshots -oyaml > rke2-etcd-snapshots-cm-bak.yaml
    kubectl -n kube-system patch cm --type=json -p='[{"op": "remove", "path": "/data"}]' rke2-etcd-snapshots

    kubectl get lease -n kube-system -oyaml > rke2-lease-kube-system-bak.yaml;
    kubectl get lease -n kube-system rke2-etcd -o jsonpath='{.spec.holderIdentity}' | \
    xargs -I {} kubectl patch lease -n kube-system --patch='{"spec":{"holderIdentity":"{}"}}' --type=merge rke2; \
    kubectl get lease -n kube-system -o custom-columns='name:.metadata.name,holder:.spec.holderIdentity' | \
    grep rke2
  • 对于 k3s 集群,可以使用以下命令去修复。

    kubectl -n kube-system get cm k3s-etcd-snapshots -oyaml > k3s-etcd-snapshots-cm-bak.yaml
    kubectl -n kube-system patch cm --type=json -p='[{"op": "remove", "path": "/data"}]' k3s-etcd-snapshots

    kubectl get lease -n kube-system -oyaml > k3s-lease-kube-system-bak.yaml;
    kubectl get lease -n kube-system k3s-etcd -o jsonpath='{.spec.holderIdentity}' | \
    xargs -I {} kubectl patch lease -n kube-system --patch='{"spec":{"holderIdentity":"{}"}}' --type=merge k3s; \
    kubectl get lease -n kube-system -o custom-columns='name:.metadata.name,holder:.spec.holderIdentity' | \
    grep k3s

如果以上操作之后没有效果,那么请参考以下知识库文档,检查 Rancher server 日志和 rke2-server.service 日志,看是否有其他相对应的错误。