您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Rancher K8S集群怎样恢复丢失的kubeconfig配置文件
## 前言
在Kubernetes集群管理中,`kubeconfig`文件是连接集群的关键凭证。当使用Rancher管理的K8S集群时,若因误删除、系统故障或配置错误导致该文件丢失,将直接影响集群管理能力。本文将详细介绍5种恢复方案,涵盖从Rancher UI到底层ETCD的全链路操作。
---
## 一、理解kubeconfig文件结构
### 1.1 核心组成部分
```yaml
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: LS0t... # 集群CA证书
server: https://<cluster-api-endpoint>
name: <cluster-name>
users:
- name: <user-name>
user:
client-certificate-data: LS0t... # 客户端证书
client-key-data: LS0t... # 私钥
contexts:
- context:
cluster: <cluster-name>
user: <user-name>
name: <context-name>
current-context: <context-name>
cluster-admin
角色绑定实现权限控制kubectl-shell
容器作为代理端点~/.kube/config
或指定路径Cluster Owner
或Cluster Member
角色
kubectl get clusterrolebindings -A | grep <username>
Rotate Certificates
功能更新# 导出当前配置
kubectl config view --raw > new_kubeconfig.yaml
# 测试连通性
kubectl --kubeconfig=new_kubeconfig.yaml get nodes
# 创建管理员ServiceAccount
kubectl -n kube-system create serviceaccount kubeconfig-recovery
# 绑定cluster-admin角色
kubectl create clusterrolebinding kubeconfig-recovery \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:kubeconfig-recovery
# 获取Token
SECRET=$(kubectl -n kube-system get sa kubeconfig-recovery -o jsonpath='{.secrets[0].name}')
TOKEN=$(kubectl -n kube-system get secret $SECRET -o jsonpath='{.data.token}' | base64 -d)
# 生成kubeconfig
cat <<EOF > recovered-config
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: $(kubectl get secret $SECRET -o jsonpath='{.data.ca\.crt}')
server: $(kubectl config view -o jsonpath='{.clusters[0].cluster.server}')
name: recovered-cluster
users:
- name: service-account
user:
token: $TOKEN
contexts:
- context:
cluster: recovered-cluster
user: service-account
name: default
current-context: default
EOF
# 查找Rancher部署的ETCD Pod
kubectl -n cattle-system get pods -l app=rancher
# 导出CA证书
kubectl -n cattle-system exec rancher-xxx -- cat /var/lib/rancher/management-state/tls/ca.crt > rancher-ca.crt
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority: rancher-ca.crt
server: https://<rancher-server-ip>:6443
name: direct-access
users:
- name: etcd-recovery
user:
client-certificate: /path/to/client.crt
client-key: /path/to/client.key
docker run --rm -v /var/lib/etcd:/var/lib/etcd \
quay.io/coreos/etcd:v3.5.4 etcdctl snapshot save snapshot.db
CLUSTER_ID="c-xxxxx"
RANCHER_URL="https://your-rancher.com"
API_TOKEN="token-xxxx:yyyy"
curl -u "$API_TOKEN" \
"$RANCHER_URL/v3/clusters/$CLUSTER_ID?action=generateKubeconfig" \
-X POST -H 'Content-Type: application/json' \
--data-raw '{}' | jq -r .config > recovered.conf
velero restore create --from-backup rancher-backup-20231101 \
--include-resources secrets,configmaps
当Rancher自身故障时:
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-v /opt/rancher:/var/lib/rancher \
--privileged \
rancher/rancher:latest \
--acme-domain yourdomain.com
rancher certificates rotate
gpg --encrypt --recipient admin@company.com kubeconfig.yaml
通过上述方法,可应对不同场景下的kubeconfig丢失问题。建议企业用户: - 至少保留两种恢复途径 - 定期测试恢复流程 - 建立凭证管理SOP
附:Rancher官方文档参考链接
备份恢复指南
Kubernetes认证文档 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。