本文介紹使用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_A100
≥1.20.11-aliyunedge.1
AMD64/x86_64
Nvidia_Tesla_A10
≥1.20.11-aliyunedge.1
AMD64/x86_64
Nvidia_L20
≥1.26.3-aliyun.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
診斷資訊檔。