全部產品
Search
文件中心

Container Service for Kubernetes:診斷邊緣節點問題

更新時間:Nov 06, 2024

在管理邊緣節點過程中,可能會遇到一些問題,包括接入失敗和升級失敗的問題。本文介紹邊緣節點會遇到的常見問題和對應的解決方案。

如何處理邊緣節點接入失敗的問題?

當指令碼執行時出現問題,請參考以下常見問題列表進行處理。若出現以下表格中不存在的問題,請收集節點診斷資訊後,提交工單排查處理。關於如何收集邊緣節點診斷資訊,請參見如何收集ACK Edge叢集節點的診斷資訊?

接入失敗資訊

失敗原因

處理建議

The os XXX unsupport

當前邊緣節點的系統版本不支援。

關於支援的邊緣節點的系統列表,請參見添加邊緣節點

invalid nodeName

節點名稱不合法。

  • 節點名稱只能由英文小寫字母、中劃線(-)和半形句號(.)組成。

  • 節點名稱不能超過253個字元。

  • 節點名稱不能以localhost開頭。

Node route overlaps with service cidr

節點的路由表網段與叢集建立時配置的Pod CIDR或Service CIDR衝突。

重新建立叢集,請注意配置Pod CIDR與Service CIDR,需避免與邊緣節點的NameServer地址以及路由表網段衝突。

response error msg: TOKEN_EXPIRED

接入Token到期。

  • 重建節點接入指令碼。

  • 檢查節點系統時間是否正常。

A node named XXX is already exist in the cluster

叢集中已存在同名的節點。

下線叢集中的同名節點。

error run phase join-node: failed to get cluster info: failed to get cluster-info configmap, Get "https://xx.xxx.xx.xx:6443/api/v1/namespaces/kube-public/configmaps/cluster-info": dial tcp xx.xxx.xx.xx:6443: i/o timeout

擷取叢集cluster-info失敗。

edgeadm接入邊緣節點時需要通過該地址訪問APIServer, 請檢查API Server負載平衡(SLB)ACL規則是否限制了該地址的訪問。

error run phase join-node: Install edge-hub failed: Copy file /tmp/edge-hub to /usr/bin/edge-hub fail: open /usr/bin/edge-hub: text file busy | 40009 | 40009

安裝edge-hub失敗,節點上已經存在edge-hub的二進位檔案。

執行edgeadm reset命令清理節點後重新接入。

error run phase post-check: timed out waiting for the condition

系統組件啟動失敗。

  1. 請重新下載edgeadm工具,並執行edgeadm reset後重新接入,確保您使用的是最新版本的edgeadm。

  2. 檢查邊緣節點是否能正常訪問依賴的公網地址。相關地址清單請參見邊緣節點接入訪問網域名稱和IP路由網段配置

  3. 收集邊緣節點診斷資訊,並提交工單排查,關於如何收集診斷資訊,請參見如何收集ACK Edge叢集節點的診斷資訊?

如何處理邊緣節點升級失敗的問題?

升級邊緣節點池時,若未返回升級成功結果This node has been upgraded successfully,請參考以下內容排查處理。

升級失敗資訊

可能原因

處理建議

edgeadm version xxxx does not match cluster version

升級工具版本與叢集版本不匹配。

  1. 檢查叢集控制面是否已經完成升級。

  2. 檢查TARGET_CLUSTER_VERSION參數是否填寫正確。

node has already been upgraded to xxx

節點已經是升級後的目標版本。

如果確認節點上還有組件沒有完成升級,請保留日誌並提交工單處理。

kubelet target version xxxx does not match cluster version xxxx

指定的kubelet升級的版本與叢集控制面版本不匹配。

  1. 如果指定了kubelet-version參數,請檢查該參數是否填寫正確(與叢集控制面版本一致)。

  2. 如果沒有指定該參數,請提交工單處理。

Parameter currentVersion cann't null

使用了老版本的edgeadm。

  1. 請檢查edgeadm版本是否為最新版本。

  2. 當前支援的叢集升級範圍為1.18升級到1.20版本、1.20升級到1.22版本。

upgrade kubelet failed at phase install, recover to previous state.

error run phase upgrade: xxxx

升級失敗,且已自動復原到之前的狀態,節點狀態不受影響。

請保留日誌並提交工單處理。

upgrade kubelet failed at phase install, recover to previous state

recover kubelet failed, err: xxx

error run phase upgrade: xxxx

升級失敗,且自動復原失敗,節點狀態會受到影響。

請保留日誌並提交工單處理。

如何收集ACK Edge叢集節點的診斷資訊?

ACK Edge叢集的節點出現異常時,您可以參見以下步驟收集叢集節點的診斷資訊,以供資料分析使用。

  1. 登入到ACK Edge叢集的異常節點。

  2. 執行如下命令,下載診斷指令碼。

    curl -o /usr/local/bin/diagnose_edge_node.sh https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_k8s.sh
  3. 執行如下命令,給診斷指令碼添加執行許可權。

    chmod u+x /usr/local/bin/diagnose_edge_node.sh
  4. 執行如下命令,進入指定目錄。

    cd /usr/local/bin/
  5. 執行如下命令,運行診斷指令碼。

    ./diagnose_edge_node.sh

    預期輸出如下。每次執行診斷指令碼產生的診斷資訊檔名稱不同,本樣本以diagnose_1578310147.tar.gz為例,具體以實際環境為準。

    ......
    + echo 'please get diagnose_1578310147.tar.gz for diagnostics'
    please get diagnose_1578310147.tar.gz for diagnostics
    + echo '請提交 diagnose_1578310147.tar.gz 給支援人員'
    請提交 diagnose_1578310147.tar.gz 給支援人員
  6. 執行ll命令,確認存在diagnose_1578310147.tar.gz診斷資訊檔。