Myluzh Blog

在使用Rancher2.5管理的K8S集群中,解决Rancher不可用时通过kubectl进行集群管理的问题

发布时间: 2023-12-15 文章作者: myluzh 分类名称: Kubernetes 朗读文章


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、然后把复制的kubecfg内容保存到master节点,并且切换默认上下文进行测试。
# 把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 

标签: rancher kubectl 授权集群访问地址 上下文

发表评论