本篇文章为大家展示了如何恢复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,那么生成的 .rkestate
为 cluster.rkestate
,生成的 kubecfg 为 kube_config_cluster.yml
。
可以总结为:
1、kubecfg 命名规则:kube_config_.yml
2、.rkestate 命名规则:.rkestate
# 定义 rke 配置文件名称,如果还存在则按存在的文件名填写;如果不存在,则随便填写,比如名为 rancher-cluster,文件后缀 yaml/yml 不用填写。 rke_config_name=rancher-cluster
kubecfg=kube_config_cluster.yml
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
|
通过 master 节点找回
如果本地的 .rkestate 和 kubecfg 文件一并丢失
,则需要登录到 master 节点进行恢复,在 master 节点运行以下脚本:
if [[ -f /etc/kubernetes/ssl/kubecfg-kube-node.yaml ]]; then kubecfg=/etc/kubernetes/ssl/kubecfg-kube-node.yaml elif [[ -f /etc/kubernetes/ssl/kubecfg-kube-node.yml ]]; then kubecfg=/etc/kubernetes/ssl/kubecfg-kube-node.yml else echo 'kubecfg 配置文件不存在' exit 1 fi
# 获取 Rancher Agent 镜像 RANCHER_IMAGE=$( docker images --filter=label=io.cattle.agent=true | grep 'v2.' | \ grep -v -E 'rc|alpha|' | head -n 1 | awk '{print $3}' )
# 定义 rke 配置文件名称,如果还存在则按存在的文件名填写;如果不存在,则随便填写,比如名为 rancher-cluster,文件后缀 yaml/yml 不用填写。 rke_config_name=rancher-cluster
docker 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状态文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
文章名称:如何恢复rkestate状态文件
URL分享:
http://jkwzsj.com/article/pcgdis.html