温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何恢复rkestate状态文件

发布时间:2021-12-24 09:54:00 阅读:230 作者:柒染 栏目:云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇文章为大家展示了如何恢复rkestate状态文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Kubernetes 集群状态由 Kubernetes 集群中的集群配置文件 cluster.yml组件证书组成。由 RKE 生成,但根据 RKE 版本不同,集群状态的保存方式不同。

  • 在 v0.2.0 之前,RKE 将 Kubernetes 集群状态保存为secret。更新状态时,RKE 会提取 secret更新/更改 状态并保存新 secret

  • 从 v0.2.0 开始,RKE 在集群配置文件 cluster.yml 的同一目录中创建 cluster.rkestate 文件。该 .rkestate 文件包含集群的当前状态,包括RKE 配置和证书。需要保留此文件以更新集群或通过 RKE 对集群执行任何操作。

状态文件转换

如果是通过rke v0.2.0之前版本创建的 Kubernetes 集群,那么建议升级 rke 版本到最新版本。

rke v0.2.0以前的版本,是通过pki.bundle.tar.gz来保存组件证书。而rke v0.2.0及以后的版本通过.rkestate来保存组件证书。

在 rke 升级到最新版本后,需要有一个过渡操作。通过原始是 rke 配置文件,重新运行rke up将会自动生成.rkestate文件。

找回 .rkestate

假如 .rkestate 无意间丢失或者损坏,可以通过集群中的配置映射文件恢复 .rkestate。

通过 kubectl 配置文件找回

如果 .rkestate 丢失,但 kubecfg 未丢失, kubectl 还可以正常连接集群,可以运行以下命令找回 .rkestate:

注意: rke 在创建集群时,会自动创建 .rkestate 和 kubecfg 文件。.rkestate 和 kubecfg 文件的命名规则与 rke 配置文件名有一定关系。比如 rke 配置文件名为 cluster.yml,那么生成的 .rkestatecluster.rkestate,生成的 kubecfg 为 kube_config_cluster.yml
可以总结为:
1、kubecfg 命名规则:kube_config_<rke-cfg-name>.yml
2、.rkestate 命名规则:<rke-cfg-name>.rkestate

# 定义 rke 配置文件名称,如果还存在则按存在的文件名填写;如果不存在,则随便填写,比如名为 rancher-cluster,文件后缀 yaml/yml 不用填写。rke_config_name=rancher-clusterkubecfg=kube_config_cluster.ymlkubectl --kubeconfig=${kubecfg} -n kube-system \  get configmap full-cluster-state -o json | \  jq -r .data.\"full-cluster-state\" | \  jq -r . > ${rke_config_name}.rkestate

通过 master 节点找回

如果本地的 .rkestate 和 kubecfg 文件一并丢失,则需要登录到 master 节点进行恢复,在 master 节点运行以下脚本:

if [[ -f /etc/kubernetes/ssl/kubecfg-kube-node.yaml ]]; then  kubecfg=/etc/kubernetes/ssl/kubecfg-kube-node.yamlelif [[ -f /etc/kubernetes/ssl/kubecfg-kube-node.yml ]]; then  kubecfg=/etc/kubernetes/ssl/kubecfg-kube-node.ymlelse  echo 'kubecfg 配置文件不存在'  exit 1fi# 获取 Rancher Agent 镜像RANCHER_IMAGE=$( docker images --filter=label=io.cattle.agent=true | grep 'v2.' | \  grep -v -E 'rc|alpha|<none>' | head -n 1 | awk '{print $3}' )# 定义 rke 配置文件名称,如果还存在则按存在的文件名填写;如果不存在,则随便填写,比如名为 rancher-cluster,文件后缀 yaml/yml 不用填写。rke_config_name=rancher-clusterdocker run --rm --net=host \  -v $(docker inspect kubelet --format \  '{{ range .Mounts }}{{ if eq .Destination "/etc/kubernetes" }}{{ .Source }}{{ end }}{{ end }}')/ssl:/etc/kubernetes/ssl:ro \  --entrypoint bash ${RANCHER_IMAGE} \  -c 'kubectl --kubeconfig=${kubecfg} \  -n kube-system get configmap full-cluster-state -o json | \  jq -r .data.\"full-cluster-state\" | \  jq -r .' > ${rke_config_name}.rkestate

上述内容就是如何恢复rkestate状态文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/hxl2013/blog/4928250

AI

开发者交流群×