控制臺(tái)訪問集群異常問題排查
本文介紹控制臺(tái)訪問集群異常問題的問題現(xiàn)象、問題原因和解決方案。例如,當(dāng)前集群APIServer請(qǐng)求異常,訪問容器組日志時(shí)報(bào)錯(cuò)API Server請(qǐng)求異常,當(dāng)前賬號(hào)未被授予該操作所需的集群RBAC權(quán)限,當(dāng)前賬號(hào)未被授予該操作所需的RAM權(quán)限。
當(dāng)前集群API Server請(qǐng)求異常ErrorQueryClusterNamespace
或APIServer.500
問題現(xiàn)象
當(dāng)您在控制臺(tái)訪問集群資源時(shí),出現(xiàn)報(bào)錯(cuò)“當(dāng)前集群APIServer請(qǐng)求異常”,錯(cuò)誤碼:ErrorQueryClusterNamespace
或APIServer.500
。
問題原因
由API Server負(fù)載均衡配置或者狀態(tài)異常導(dǎo)致容器服務(wù)管控與集群API Server之間連接失敗。
解決方案
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁(yè)面中,單擊目標(biāo)集群。
在集群管理頁(yè),單擊基本信息頁(yè)簽,然后單擊API Server 負(fù)載均衡(SLB)后面的鏈接,跳轉(zhuǎn)到負(fù)載均衡管理控制臺(tái)。
如果界面提示負(fù)載均衡ID不存在,則說明APIServer的負(fù)載均衡實(shí)例被刪除或釋放。集群不可恢復(fù),您需要重新創(chuàng)建集群。詳細(xì)信息,請(qǐng)參見創(chuàng)建ACK托管集群。
否則,繼續(xù)執(zhí)行下一步。
查看該負(fù)載均衡實(shí)例的狀態(tài)是否為運(yùn)行中。
如果否,檢查實(shí)例是否處于欠費(fèi)停止(按量付費(fèi)實(shí)例)或到期鎖定狀態(tài)(包年包月實(shí)例)。請(qǐng)先完成續(xù)費(fèi),然后重新啟用實(shí)例。關(guān)于負(fù)載均衡的欠費(fèi)說明,請(qǐng)參見欠費(fèi)說明。
如果是,繼續(xù)執(zhí)行下一步。
查看該負(fù)載均衡實(shí)例的監(jiān)聽,確認(rèn)前端和后端是否均存在TCP:6443的監(jiān)聽,且運(yùn)行狀態(tài)是否為運(yùn)行中。
如果否,說明APIServer負(fù)載均衡監(jiān)聽被修改。
若監(jiān)聽存在,但處于停止狀態(tài),請(qǐng)選擇該項(xiàng)監(jiān)聽,然后單擊啟動(dòng)。
若監(jiān)聽不存在,請(qǐng)參考如下操作處理。
對(duì)于托管版集群,請(qǐng)提交工單咨詢。
對(duì)于專有版集群,請(qǐng)確保將集群Master節(jié)點(diǎn)都添加到默認(rèn)服務(wù)器組,然后創(chuàng)建前端、后端均為TCP:6443的監(jiān)聽,監(jiān)聽后端設(shè)置為默認(rèn)服務(wù)器組,并啟用該監(jiān)聽。添加監(jiān)聽的具體操作,請(qǐng)參見添加TCP監(jiān)聽。
如果是,繼續(xù)執(zhí)行下一步。
查看上述監(jiān)聽的健康檢查狀態(tài)是否為正常。
如果否,則說明APIServer的負(fù)載均衡后端異常。
對(duì)于托管版集群,請(qǐng)提交工單咨詢。
對(duì)于專有版集群,請(qǐng)參考如下內(nèi)容排查。如問題仍未解決,請(qǐng)提交工單處理。
在容器服務(wù)管理控制臺(tái)的集群詳情頁(yè)面,單擊集群資源頁(yè)簽。單擊Master實(shí)例后面的鏈接,跳轉(zhuǎn)至ECS管理控制臺(tái),檢查ECS實(shí)例是否處于運(yùn)行中狀態(tài)。
說明請(qǐng)對(duì)所有Master實(shí)例均做此檢查。
通過ECS管理控制臺(tái)遠(yuǎn)程登錄Master節(jié)點(diǎn),查看APIServer容器是否正常運(yùn)行。
登錄Master節(jié)點(diǎn),請(qǐng)參見ECS遠(yuǎn)程連接方式概述。
登錄Master節(jié)點(diǎn)后,可以通過以下方式檢查APIServer容器的運(yùn)行狀態(tài)。
對(duì)于使用Docker運(yùn)行時(shí)的集群,執(zhí)行
docker ps | grep kube-apiserver
命令,根據(jù)命令的輸出,使用docker inspect
命令檢查容器狀態(tài)。對(duì)于使用Containerd運(yùn)行時(shí)的集群,執(zhí)行
crictl ps | grep kube-apiserver
命令,根據(jù)命令的輸出,使用crictl inspect
命令檢查容器狀態(tài)。
如果是,繼續(xù)執(zhí)行下一步。
查看上述監(jiān)聽是否啟用了訪問控制。
如果是,則說明APIServer的負(fù)載均衡監(jiān)聽訪問控制白名單未正確配置。在訪問控制策略中將地址段
100.104.0.0/16
添加到白名單,該地址段為ACK管控內(nèi)部訪問APIServer的請(qǐng)求來源地址段。有關(guān)訪問控制的詳細(xì)信息,請(qǐng)參見訪問控制。如果否,繼續(xù)執(zhí)行下一步。
若以上均不符合,請(qǐng)提交工單咨詢。
訪問容器組日志時(shí)報(bào)錯(cuò)API Server請(qǐng)求異常
若您在查看容器組日志時(shí)遇到該問題,而集群其他資源均可正常訪問,您可以按以下步驟排查。
查看容器組運(yùn)行狀態(tài)是否為Running,若不是,請(qǐng)參見Pod異常問題排查。
在節(jié)點(diǎn)列表中找到該容器組所在節(jié)點(diǎn),單擊實(shí)例ID,跳轉(zhuǎn)到ECS管理控制臺(tái),單擊配置安全組規(guī)則。
檢查所有安全組規(guī)則,確認(rèn)是否開放了來自VPC私網(wǎng)、目標(biāo)端口為TCP/10250的入方向訪問,若未開放,請(qǐng)?zhí)砑由鲜霭踩M規(guī)則。詳細(xì)信息,請(qǐng)參見添加安全組規(guī)則。
若以上均不符合,請(qǐng)提交工單咨詢。
當(dāng)前賬號(hào)未被授予該操作所需的集群RBAC權(quán)限ForbiddenQueryClusterNamespace
或APISERVER.403
問題現(xiàn)象
當(dāng)您訪問控制臺(tái)時(shí),出現(xiàn)報(bào)錯(cuò)“當(dāng)前賬號(hào)未被授予該操作所需的集群RBAC權(quán)限”,錯(cuò)誤碼:ForbiddenQueryClusterNamespace
或APISERVER.403
。
問題原因
您使用的賬號(hào)未被授予當(dāng)前操作所需的集群RBAC權(quán)限。
解決方案
使用阿里云賬號(hào)或者具有管理員權(quán)限的賬號(hào)登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄中選擇授權(quán)管理。
在RAM用戶頁(yè)簽查找出現(xiàn)報(bào)錯(cuò)的用戶名,單擊用戶名右側(cè)的管理權(quán)限。
在權(quán)限管理頁(yè)面,單擊添加權(quán)限,選擇對(duì)應(yīng)集群、命名空間和權(quán)限管理,單擊提交授權(quán)。
當(dāng)前賬號(hào)未被授予該操作所需的RAM權(quán)限StatusForbidden
問題現(xiàn)象
當(dāng)您訪問控制臺(tái)時(shí),出現(xiàn)報(bào)錯(cuò)“當(dāng)前賬號(hào)未被授予該操作所需的RAM權(quán)限”,錯(cuò)誤碼:StatusForbidden
。
問題原因
您使用的賬號(hào)未被授予當(dāng)前操作所需的RAM權(quán)限。
解決方案
使用阿里云賬號(hào)或者具有RAM權(quán)限的賬號(hào)登錄RAM管理控制臺(tái)。
根據(jù)錯(cuò)誤提示頁(yè)面的CS信息為您的賬號(hào)添加相應(yīng)的授權(quán),例如cs:DescribeKubernetesVersionMetadata。詳細(xì)操作,請(qǐng)參見使用RAM授予集群及云資源訪問權(quán)限。