在使用Rancher2.5管理的K8S集群中,解决Rancher不可用时通过kubectl进行集群管理的问题
作者:myluzh 分类: Kubernetes 长度:2060 阅读:589
0x00 前言
最近在管理Rancher2.5部署的K8S集群发现一个问题,一旦Rancher Server不可用,直接在K8S master通过kubectl管理集群也会提示连接不到api提示不可用。
分析Rancher UI生成的kubeconfig文件可以发现,当kubectl访问K8S API SERVER的时候,请求是先发送到Rancher,然后再通过cluster agent转发给 K8S API SERVER。
所以需要开启"授权集群访问地址",这样就算Rancher不可用,也可以通过kubectl --context切换上下文,直接对集群直接进行管理。
0x01 启用Rancher授权集群访问地址
在rancher web面板中,找到集群,编辑,授权集群访问地址,启用,保存。
0x02 复制kubecfg配置
1、进入rancher面板
选择集群,在右上角打开"Kubeconfig文件",复制kubeconfig文件内容。
可以看到kubecfg文件里面有两个上下文,第一个上下文就是先到rancher,再通过cluster agent转发到k8s api server的。
第二个上下文就是直接到master节点api server的,就算rancher不可用也可以使用第二个上下文对集群进行管理。
2、保存并切换上下文测试
# 把Rancher面板保存的kubecfg文件写入/root/.kube/config
root@iZbp12bkuvg20e1j3y9gtxZ:~# vi /root/.kube/config
# 切换默认上下文
root@iZbp12bkuvg20e1j3y9gtxZ:~# kubectl config use-context xfsh-cloud-iZbp12bkuvg20e1j3y9gtxZ
Switched to context "xfsh-cloud-iZbp12bkuvg20e1j3y9gtxZ".
# 查看当前默认上下文
root@iZbp12bkuvg20e1j3y9gtxZ:~# kubectl config current-context
xfsh-cloud-iZbp12bkuvg20e1j3y9gtxZ
# 模拟Ranche Sserver不可用时,kubectl是否可以连接到apiserver
root@iZbp12bkuvg20e1j3y9gtxZ:~# kubectl get node
NAME STATUS ROLES AGE VERSION
izbp12bkuvg20e1j3y9gtxz Ready controlplane,etcd 668d v1.20.14
参考文章:
Rancher K8S集群怎样恢复丢失的kubeconfig配置文件
超详细实战教程丨多场景解析如何迁移Rancher Server