本文介紹使用ACK Edge叢集的邊緣節點時可能遇到的常見問題以及對應的解決方案。
ACK Edge組件如何區分雲上節點和雲下節點(邊緣節點)?
ACK Edge通過節點的label alibabacloud.com/is-edge-worker來判斷是否是邊緣節點。
節點加入雲端節點池或邊緣節點池時,會自動攜帶is-edge-worker標籤。若is-edge-worker取值為true,表示該節點為邊緣節點;取值為false,則表示該節點為雲上節點。
專線環境下如何接入邊緣節點?
ACK Edge叢集在專線環境下接入邊緣節點,請注意以下要求。更多資訊,請參見ACK Edge叢集專線情境下的特殊配置說明。
GPU節點如何接入?
-
在接入節點前,需要先安裝好GPU Driver。
-
驅動版本相關資訊,請參見ACK支援的NVIDIA驅動版本列表。
-
產生節點接入指令碼時,需配置
gpuVersion參數。當前支援的GPU版本如下:系統架構
GPU型號
邊緣Kubernetes叢集版本
AMD64/x86_64
Nvidia_Tesla_T4
≥1.16.9-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_P4
≥1.16.9-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_P100
≥1.16.9-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_V100
≥1.18.8-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_A10
≥1.20.11-aliyunedge.1
AMD64/x86_64
Nvidia_L40
≥1.26.3-aliyun.1

-
該參數配置完成後,接入工具會自動安裝nvidia-containerd-runtime,關於nvidia-containerd-runtime更多資訊,請參見nvidia-containerd-runtime。
如何處理接入指令碼執行失敗的問題?
當指令碼執行時出現問題,請參考以下常見問題列表進行處理。若出現以下表格中不存在的問題,請收集節點診斷資訊後,提交工單排查處理。關於如何收集邊緣節點診斷資訊,請參見如何收集ACK Edge叢集節點的診斷資訊?
|
接入失敗資訊 |
失敗原因 |
處理建議 |
|
The os XXX unsupport |
當前邊緣節點的系統版本不支援。 |
關於支援的邊緣節點的系統列表,請參見添加邊緣節點。 |
|
invalid nodeName |
節點名稱不合法。 |
|
|
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的二進位檔案。 |
執行 |
|
error run phase post-check: timed out waiting for the condition |
系統組件啟動失敗。 |
|
升級ACK Edge叢集時,邊緣節點升級失敗如何處理?
升級邊緣節點池時,若未返回升級成功結果This node has been upgraded successfully,請參考以下內容排查處理。
|
升級失敗資訊 |
可能原因 |
處理建議 |
|
edgeadm version xxxx does not match cluster version |
升級工具版本與叢集版本不匹配。 |
|
|
node has already been upgraded to xxx |
節點已經是升級後的目標版本。 |
如果確認節點上還有組件沒有完成升級,請保留日誌並提交工單處理。 |
|
kubelet target version xxxx does not match cluster version xxxx |
指定的kubelet升級的版本與叢集控制面版本不匹配 |
|
|
Parameter currentVersion cann't null |
使用了老版本的edgeadm。 |
|
|
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叢集的節點出現異常時,您可以參見以下步驟收集叢集節點的診斷資訊,以供資料分析使用。
-
登入到ACK Edge叢集的異常節點。
-
執行如下命令,下載診斷指令碼。
curl -o /usr/local/bin/diagnose_edge_node.sh https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_k8s.sh -
執行如下命令,給診斷指令碼添加執行許可權。
chmod u+x /usr/local/bin/diagnose_edge_node.sh -
執行如下命令,進入指定目錄。
cd /usr/local/bin/ -
執行如下命令,運行診斷指令碼。
./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 給支援人員 -
執行
ll命令,確認存在diagnose_1578310147.tar.gz診斷資訊檔。