久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Rancher K8S集群怎樣恢復(fù)丟失的kubeconfig配置文件

165次閱讀
沒有評論

共計 2941 個字符,預(yù)計需要花費 8 分鐘才能閱讀完成。

這篇文章給大家介紹 Rancher K8S 集群怎樣恢復(fù)丟失的 kubeconfig 配置文件,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

分析 Rancher UI 生成的 kubeconfig 文件可以發(fā)現(xiàn),第一個 server 對應(yīng)的是 Rancher Server 的 url 或者 IP。當(dāng) kubectl 訪問 K8S API SERVER 的時候,請求是先發(fā)送到 Rancher,然后再通過 cluster agent 轉(zhuǎn)發(fā)給 K8S API SERVER。

在 Rancher v2.2.2 以前的版本,Rancher UI 生成的 kubecfg 文件中只設(shè)置了一個 server。從 Rancher v2.2.2 開始,從 Rancher UI 創(chuàng)建的集群默認開啟授權(quán)集群訪問地址。創(chuàng)建好集群后 Rancher UI 生成的 kubecfg 文件中將顯示多個 master 節(jié)點 IP 對應(yīng)的 server。

因此,Rancher v2.2.2 以及之后版本通過 Rancher UI 創(chuàng)建的集群,如果 Rancher Server 無法訪問,那么可以通過 kubectl –kubeconfig=xxx –context=xxx 來切換 server,但是前提是需要提前從 Rancher UI 保存 kubeconfig 文件。

如果 Rancher Server 無法訪問,對于 Rancher v2.2.2 之前的版本或者未提前保存 kubeconfig 的,可通過以下腳本找回 kube-admin 配置文件。

注意: 以下腳本需要在業(yè)務(wù)集群上執(zhí)行,任意一個節(jié)點即可。保存以下文本為 restore-kube-config.sh

#!/bin/bash

help ()
{
   echo   ================================================================
   echo   --master-ip: 指定 Master 節(jié)點 IP,任意一個 K8S Master 節(jié)點 IP 即可。
   echo   使用示例:bash restore-kube-config.sh --master-ip=1.1.1.1
   echo   ================================================================
}

case $1 in
   -h|--help) help; exit;;
esac

if [[$1 ==]]; then
   help;
   exit;
fi

CMDOPTS= $*
for OPTS in $CMDOPTS;
do
   key=$(echo ${OPTS} | awk -F = {print $1} )
   value=$(echo ${OPTS} | awk -F = {print $2} )
   case $key in
       --master-ip) K8S_MASTER_NODE_IP=$value ;;
   esac
done

# 獲取 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} )

if [[-d /etc/kubernetes/ssl]]; then
 K8S_SSLDIR=/etc/kubernetes/ssl
else
 echo /etc/kubernetes/ssl 目錄不存在
 exit 1
fi

CHECK_CLUSTER_STATE_CONFIGMAP=$(docker run --rm --entrypoint bash --net=host \
-v $K8S_SSLDIR:/etc/kubernetes/ssl:ro $RANCHER_IMAGE -c \
if kubectl --kubeconfig /etc/kubernetes/ssl/kubecfg-kube-node.yaml \
-n kube-system get configmap full-cluster-state | grep full-cluster-state /dev/null; then \
echo yes else echo no fi )

if [[$CHECK_CLUSTER_STATE_CONFIGMAP != yes]]; then

 docker run --rm --net=host \
 --entrypoint bash \
 -e K8S_MASTER_NODE_IP=$K8S_MASTER_NODE_IP \
 -v $K8S_SSLDIR:/etc/kubernetes/ssl:ro \
 $RANCHER_IMAGE \
 -c \
 kubectl --kubeconfig /etc/kubernetes/ssl/kubecfg-kube-node.yaml \
 -n kube-system \
 get secret kube-admin -o jsonpath={.data.Config} | base64 --decode | \
 sed -e /^[[:space:]]*server:/ s_:.*_: \ https://${K8S_MASTER_NODE_IP}:6443\ _ kubeconfig_admin.yaml
 
 if [[-s kubeconfig_admin.yaml]]; then
   echo 恢復(fù)成功,執(zhí)行以下命令測試:
   echo
   echo kubectl --kubeconfig kubeconfig_admin.yaml get nodes
 else
   echo kubeconfig 恢復(fù)失敗。
 fi

else

 docker run --rm --entrypoint bash --net=host \
 -e K8S_MASTER_NODE_IP=$K8S_MASTER_NODE_IP \
 -v $K8S_SSLDIR:/etc/kubernetes/ssl:ro \
 $RANCHER_IMAGE \
 -c \
 kubectl --kubeconfig /etc/kubernetes/ssl/kubecfg-kube-node.yaml \
 -n kube-system \
 get configmap full-cluster-state -o json | \
 jq -r .data.\ full-cluster-state\ | \
 jq -r .currentState.certificatesBundle.\ kube-admin\ .config | \
 sed -e /^[[:space:]]*server:/ s_:.*_: \ https://${K8S_MASTER_NODE_IP}:6443\ _ kubeconfig_admin.yaml
 
 if [[-s kubeconfig_admin.yaml]]; then
   echo 恢復(fù)成功,執(zhí)行以下命令測試:
   echo
   echo kubectl --kubeconfig kubeconfig_admin.yaml get nodes
 else
   echo kubeconfig 恢復(fù)失敗。
 fi
fi

關(guān)于 Rancher K8S 集群怎樣恢復(fù)丟失的 kubeconfig 配置文件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計2941字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 吴川市| 安化县| 吉木萨尔县| 射阳县| 绥化市| 武穴市| 苗栗县| 临邑县| 鄢陵县| 安岳县| 岳西县| 金山区| 承德县| 通州市| 南郑县| 抚州市| 徐闻县| 铁岭县| 龙海市| 方山县| 沂南县| 宾川县| 获嘉县| 邛崃市| 枝江市| 通江县| 天台县| 合江县| 开封市| 昌邑市| 交口县| 辽中县| 丹巴县| 绍兴县| 新竹县| 伊吾县| 盱眙县| 福州市| 都昌县| 西乌| 商丘市|