容器智能營運平台提供節點診斷功能,協助您診斷叢集中存在異常的節點。本文介紹節點診斷對應的檢查項以及修複方案。
容器智能營運平台構建了基於專家經驗的故障診斷系統,並基于海量資料訓練了AI智能故障診斷模型。基於專家經驗和AI智能診斷兩種診斷模式,節點診斷可以深入定位問題根因。節點診斷套件括診斷檢查項和診斷根因。
診斷檢查項:包括Node檢查、NodeComponent檢查、ClusterComponent檢查、ECSControllerManager檢查、GPUNode檢查。
診斷根因:包括定位到的根因以及修複建議。節點診斷會收集部分叢集和節點資訊並識別其中的異常,然後根據識別到的異常,進行深入的異常診斷。
使用故障診斷功能時,系統將在您的叢集節點上執行資料擷取程式並收集檢查結果。採集的資訊包括系統版本,以及負載、Docker、Kubelet等運行狀態及系統日誌中嚴重錯誤資訊。資料擷取程式不會採集您的商務資訊及敏感性資料。
診斷支援的異常情境
節點診斷覆蓋的典型異常情境和AI智能診斷支援情境如下表所示。
類別 | 支援的異常情境 |
節點診斷 | 節點NotReady:網路未就緒。 |
節點NotReady:PID數量不足。 | |
節點NotReady:記憶體不足。 | |
節點NotReady:磁碟空間不足。 | |
節點NotReady:運行時異常。 | |
節點NotReady:無心跳。 | |
節點上磁碟索引節點餘量不足。 | |
節點PID數量不足。 | |
節點時間不正確。 | |
節點檔案系統唯讀。 | |
節點核心發生死結。 | |
AI智能診斷 | 節點狀態異常。 |
節點ECS狀態異常。 | |
節點Kubelet組件異常。 | |
節點運行時狀態異常。 | |
節點磁碟儲存空間滿。 | |
節點CPU負載過高。 |
診斷流程
叢集診斷收集部分叢集和節點資訊並識別其中的異常,然後根據識別到的異常進行深入的異常診斷。診斷融合了基於專家經驗和AI智能診斷兩種診斷模式,進一步深入定位問題根因。發起診斷後,診斷會按照異常識別、資料擷取、檢查項評估以及根因分析四個階段,完成後給出診斷結果。
異常識別:採集基本資料,例如Node狀態、Pod狀態、叢集Event事件流等,並快速分析當前的異常。
資料擷取:根據異常識別結果採集和診斷上下文相關的資料。例如,節點診斷採集節點在K8s中的資訊、節點對應的ECS資訊、節點內Docker、Kubelet等進程運行狀態資訊。
檢查項評估:根據採集到的資料,判斷關鍵計量是否正常。例如,節點診斷檢查項包括Docker進程狀態、ECS狀態等。不同的診斷類型對應不同的檢查項,並將針對檢查結果提供對應的檢查項列表和每個檢查項的含義。
根因分析:根據採集的資料和檢查項,部分問題可自動分析導致問題的原因。
診斷結果
診斷結果包括根因結果與檢查項。根因診斷結果部分包括識別到的異常、異常根因和修複建議。檢查項則按不同的類別對可能引起異常的點進行檢查,覆蓋根因未包括的部分,並對異常原因進一步補充。
根據叢集配置,具體檢查項可能稍有不同。實際結果請以診斷頁面結果為準。
節點診斷對應的檢查項
診斷項分組 | 說明 |
檢查節點執行個體常見問題,檢查項包括節點狀態、網路狀態、核心日誌、核心進程和服務可用性等。 | |
檢查節點核心組件狀態,檢查項包括網路和儲存外掛程式。 | |
檢查叢集常見問題,檢查項包括APIService可用性、DNS可用性、NAT Gateway狀態等。 | |
檢查ECS執行個體常見問題,檢查項包括ECS執行個體狀態、網路鏈路、作業系統、磁碟IO等。 | |
檢查使用GPU裝置的節點,檢查項包括NVIDIA模組狀態、驅動配置等。 |
Node
檢查項名稱 | 檢查項說明 | 修複方案 |
叢集API Server串連狀態 | 檢查節點能否正常串連叢集API Server。 | 請檢查叢集相關配置。更多資訊,請參見Container ServiceACK叢集故障排查。 |
節點AUFS mount hung情況 | 檢查節點系統AUFS mount是否出現hung。 | 節點系統出現AUFS mount hung問題,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點核心BufferIOError情況 | 檢查節點核心是否出現BufferIOError。 | 節點核心出現BufferIOError情況,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點cgroup泄露檢查 | 檢查節點是否出現cgroup泄露情況。 | 節點出現cgroup泄露情況,可能導致監控採集出錯,甚至導致容器無法啟動。請先嘗試登入節點,刪除相應的cgroup目錄。若問題仍未解決,請提交工單處理。 |
節點Chronyd進程狀態 | 檢查節點Chronyd進程是否異常,該進程異常可能會影響系統時鐘同步。 | 節點Chronyd進程異常,可能影響節點系統時間同步。請嘗試通過命令 |
節點Containerd鏡像拉取狀態 | 檢查節點Containerd拉取鏡像是否正常。 | 請檢查節點網路及鏡像配置。 |
節點Containerd狀態 | 檢查節點Containerd狀態。 | 節點Containerd狀態異常,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
叢集CoreDNS Pod可用性 | 檢查節點能否正常訪問叢集CoreDNS的Pod IP地址。 | 請檢查節點能否正常訪問CoreDNS的Pod IP地址。具體操作,請參見CoreDNS Pod負載不均。 |
節點鏡像狀態 | 檢查節點是否出現鏡像損壞。 | 節點鏡像出現損壞。請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點鏡像overlay2狀態 | 檢查節點是否出現鏡像overlay2檔案系統損壞。 | 節點出現鏡像overlay2檔案系統損壞,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點系統時間 | 檢查節點系統時間是否異常。 | 無。 |
節點Docker容器啟動狀態 | 檢查節點Docker容器是否出現啟動失敗。 | 節點Docker啟動狀態異常,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點Docker鏡像拉取狀態 | 檢查節點Docker拉取鏡像是否正常。 | 請檢查節點網路及鏡像配置。 |
節點Docker狀態 | 檢查節點Dockerd狀態。 | 節點Docker狀態異常,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點Docker啟動時間 | 檢查節點Dockerd啟動時間。 | 無。 |
節點Docker hang情況 | 檢查節點是否出現Docker hang的情況。 | 請嘗試登入節點,通過命令 |
ECS執行個體是否存在 | 檢查ECS執行個體是否存在。 | 檢查ECS執行個體狀態。更多資訊,請參見節點與節點池FAQ。 |
ECS執行個體狀態 | 檢查ECS執行個體狀態。 | 檢查ECS執行個體狀態,更多資訊,請參見節點與節點池FAQ。 |
節點核心Ext4FsError情況 | 檢查節點核心是否出現Ext4FsError。 | 節點核心出現Ext4FsError情況,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點檔案系統唯讀狀態 | 節點出現檔案系統唯讀,通常是因為磁碟故障,會導致節點無法寫入資料,可能造成業務異常。 | 請嘗試在節點上使用fsck命令修複檔案系統,然後重啟節點。 |
節點硬體時間 | 檢查節點硬體時鐘與系統時間是否一致,時間相差超過2分鐘可能引起組件異常。 | 請嘗試登入節點,通過命令 |
節點DNS服務 | 檢查節點能否正常使用主機DNS服務。 | 請檢查主機DNS服務是否正常。更多資訊,請參見DNS解析異常問題排查。 |
節點核心Oops情況 | 檢查節點核心是否出現Oops。 | 節點核心出現Oops,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點核心版本 | 檢查節點核心版本是否過低,核心版本過低可能造成系統異常。 | 請嘗試更換節點升級核心。更多資訊,請參見節點與節點池FAQ。 |
叢集DNS服務可用性 | 檢查節點能否正訪問叢集kube-dns服務的Cluster IP,正常使用叢集的DNS服務。 | 請檢查CoreDNS Pod運行狀態和作業記錄。更多資訊,請參見DNS解析異常問題排查。 |
節點Kubelet狀態 | 檢查節點Kubelet狀態。 | 請檢查節點Kubelet日誌。更多資訊,請參見Container ServiceACK叢集故障排查。 |
節點Kubelet啟動時間 | 檢查節點Kubelet啟動時間。 | 無。 |
節點CPU使用率 | 檢查節點CPU負載是否過高。 | 無。 |
節點記憶體使用量率 | 檢查節點記憶體負載是否過高。 | 無。 |
節點記憶體片段化檢查 | 檢查節點是否出現記憶體片段化。 | 節點出現記憶體片段化,請先嘗試登入節點,執行命令 |
節點記憶體交換區開啟情況 | 檢查節點記憶體交換區 (Memory Swap) 功能是否開啟。 | 當前節點記憶體交換區 (Memory Swap) 功能不支援開啟,請登入節點關閉該功能。 |
節點網路裝置驅動載入情況 | 檢查節點的網路裝置virtio驅動載入情況。 | 節點的網路裝置出現virtio驅動載入異常,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點CPU水位過高 | 檢查節點過去一周CPU使用率。節點CPU水位過高時如部署較多Pod會導致資源爭搶,可能會影響業務的正常運行。 | 為避免業務受到影響,請設定合理的Pod request和limit,避免一個節點上啟動並執行Pod過多。 |
節點內網IP是否存在 | 檢查節點內網IP是否存在。 | 節點內網IP不存在,請嘗試移除節點後重新匯入,移除時需保留ECS。有關移除節點的操作,請參見移除節點。有關匯入添加節點操作,請參見添加已有節點。 |
節點記憶體水位過高 | 檢查節點過去一周記憶體利用率。節點記憶體水位過高時如部署較多Pod會導致資源爭搶,可能產生OOM影響業務的正常運行。 | 為避免業務受到影響,請設定合理的Pod request和limit,避免一個節點上啟動並執行Pod過多。 |
節點狀態 | 檢查叢集節點狀態是否Ready。 | 請嘗試重啟節點。更多資訊,請參見節點與節點池FAQ。 |
節點是否不可調度 | 檢查節點是否不可調度。 | 節點不可調度,請檢查節點調度設定。具體操作,請參見設定節點調度狀態。 |
節點OOM情況 | 檢查節點是否出現OOM。 | 節點出現OOM問題,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
叢集運行時檢查 | 檢查節點運行時和叢集運行時是否一致。 | 更多資訊,請參見建立叢集選擇了containerd容器運行時,是否可以改為Docker?。 |
節點OS版本過低 | 檢查是否使用已知缺陷的OS版本,作業系統版本過低,存在穩定性風險,可能導致Docker、Containerd等組件無法正常運行。 | 請及時更新作業系統版本。 |
節點公網訪問情況 | 檢查節點能否正常訪問公網。 | 請檢查叢集是否開啟SNAT公網訪問。具體操作,請參見為已有叢集開啟公網訪問能力。 |
節點核心RCUStallError情況 | 檢查節點核心是否出現RCUStallError。 | 節點核心出現RCUStallError情況,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點作業系統版本 | 檢查節點作業系統版本,系統版本過低可能造成叢集功能異常。 | 無。 |
節點runc進程泄露情況 | 檢查節點runc進程是否發生泄露,runc進程泄露可能會導致節點間歇性地處於NotReady狀態。 | 節點runc進程泄露,請檢查並手動關閉泄露的runc進程。 |
節點核心SoftLockupError情況 | 檢查節點核心是否出現SoftLockupError。 | 節點核心出現SoftLockupError情況,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
節點Systemd hung情況 | 檢查節點是否出現Systemd hung情況。 | 節點出現Systemd hung異常,請嘗試登入節點,通過命令 |
節點Systemd版本過低 | 檢查是否使用已知缺陷的Systemd版本。Systemd版本過低存在穩定性風險,可能導致docker/containerd等組件無法正常運行。 | 請及時更新Systemd版本。更多資訊,請參見Systemd。 |
節點進程Hung情況 | 檢查節點進程是否出現Hung。 | 節點出現進程Hung問題,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
存在unregister_netdevice | 檢查核心是否出現unregister_netdevice。 | 節點存在unregister_netdevice問題,請收集節點日誌並提交工單處理。關於收集節點日誌操作,請參見一鍵採集節點的診斷記錄。 |
NodeComponent
檢查項名稱 | 檢查項說明 | 修複方案 |
節點CNI組件狀態 | 檢查節點CNI組件是否正常。 | 請檢查叢集網路組件狀態。具體操作,請參見網路管理FAQ。 |
節點CSI組件狀態 | 檢查節點CSI組件是否正常。 | 請檢查叢集件儲存群組件狀態。具體操作,請參見儲存FAQ-CSI。 |
ClusterComponent
檢查項名稱 | 檢查項說明 | 修複方案 |
叢集免密外掛程式版本檢查 | 檢查叢集免密外掛程式版本是否過低。 | 叢集免密外掛程式版本檢查過低,請儘快升級版本。具體操作,請參見使用免密組件拉取容器鏡像。 |
叢集APIService可用狀態 | 檢查叢集APIService是否可用。 | 請嘗試通過命令 |
叢集Pod網段餘量緊張 | 檢查Flannel叢集剩餘可用PodCIDR網段是否少於5個。每個節點消耗一個PodCIDR網段,Pod網段耗盡後,新添加的節點將無法正常工作。 | 請提交工單處理。 |
DNS 服務後端服務端點 | 檢查叢集DNS服務Endpoints數。 | 請檢查CoreDNS Pod運行狀態和作業記錄。更多資訊,請參見DNS解析異常問題排查。 |
DNS 服務 ClusterIP | 檢查叢集DNS服務的Cluster IP是否正常分配,叢集DNS服務異常會造成叢集功能異常,影響業務。 | 請檢查CoreDNS Pod運行狀態和作業記錄。更多資訊,請參見DNS解析異常問題排查。 |
叢集NAT Gateway狀態 | 檢查叢集NAT Gateway狀態。 | 請登入NAT Gateway管理主控台,檢查叢集的NAT Gateway是否因欠費而處於欠費鎖定狀態。 |
叢集NAT Gateway並發超規格丟棄速率 | 檢查NAT Gateway會話並發超規格丟棄速率是否過高。 | 叢集NAT Gateway會話並發超規格丟棄速率過高,請嘗試通過升級NAT Gateway的規格解決該問題。更多資訊,請參見普通型公網NAT Gateway升級至增強型公網NAT GatewayFAQ。 |
ECSControllerManager
檢查項名稱 | 檢查項說明 | 修複方案 |
ECS執行個體的組件欠費情況 | 檢查ECS執行個體的雲端硬碟或網路頻寬是否因帳號欠費而無法正常使用。 | ECS執行個體的雲端硬碟或網路頻寬因帳號欠費而無法正常使用,您需要儲值進行恢複。更多資訊,請參見續約概述。 |
ECS執行個體欠費情況 | 檢查隨用隨付的ECS執行個體是否因為欠費導致停服。 | ECS執行個體服務欠費,您需要儲值後重新開機才能恢複執行個體。更多資訊,請參見續約概述。 |
ECS執行個體網卡鏈路層狀態 | 檢查ECS執行個體網卡鏈路層是否出現異常。 | ECS執行個體未正常啟動或網路設定有問題,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體啟動狀態 | 檢查ECS執行個體的boot操作是否能正常執行載入。 | ECS執行個體無法正常啟動,您需要建立一個新的執行個體。 |
ECS執行個體管控系統狀態 | 檢查ECS執行個體的後台管控系統是否正常工作。 | 後台管控系統未正常工作,可能會導致執行個體運行異常,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體CPU狀態 | 檢查ECS執行個體底層是否存在CPU爭搶或CPU綁定失敗。 | ECS執行個體存在CPU爭搶,可能導致執行個體無法獲得CPU或出現其他異常,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體CPU是否存在Split Lock問題 | 檢查ECS執行個體CPU是否存在Split Lock問題。 | ECS執行個體CPU出現Split Lock。更多資訊,請參見Split lock檢測與處理。 |
ECS執行個體DDos攻擊的防護狀態 | 檢查該執行個體的IP地址是否受到了DDoS攻擊。 | ECS執行個體的IP遭受DDoS攻擊,您可以視情況購買其他DDoS防護產品抵禦DDoS攻擊。更多資訊,請參見阿里雲DDoS防護方案對比。 |
ECS執行個體雲端硬碟讀寫受限情況 | 檢查執行個體雲端硬碟讀寫是否受限。 | ECS執行個體雲端硬碟讀寫IOPS超過上限讀寫受限,請您降低磁碟的讀寫頻率或升級為更高效能的雲端硬碟類型,有關雲端硬碟的讀寫效能指標,請參見Block Storage效能。 |
ECS執行個體磁碟載入情況 | 檢查ECS執行個體在啟動時雲端硬碟是否能正常掛載。 | 雲端硬碟掛載失敗,導致執行個體無法正常啟動,請停止執行個體後再次啟動執行個體。 |
ECS執行個體是否已到期 | 檢查以訂用帳戶方式購買的ECS執行個體是否已到期。 | ECS執行個體服務到期,您需要續約來恢複服務。更多資訊,請參見續約概述。 |
ECS執行個體作業系統Crash情況 | 檢查ECS執行個體內作業系統是否出現Crash。 | ECS執行個體的作業系統在過去48小時內出現了Crash情況,建議通過排查系統日誌分析原因。具體操作,請參見查看執行個體的系統日誌和螢幕截圖。 |
ECS執行個體所在宿主機狀態 | 檢查ECS執行個體所在的底層物理機是否有故障。 | ECS執行個體底層物理機存在故障,可能會影響執行個體的運行狀態或效能,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體鏡像載入狀態 | 檢查ECS執行個體在啟動時所使用的鏡像是否能正常載入。 | 鏡像可能因為系統原因、鏡像問題等載入失敗,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體磁碟IO hang情況 | 檢查ECS執行個體的系統硬碟是否存在IO hang的情況。 | ECS執行個體雲端硬碟出現IO hang,請查看雲端硬碟的效能指標。具體操作,請參見查看雲端硬碟監控資訊。如果您使用的是Alibaba Cloud Linux 2作業系統,檢測IO hang的操作,請參見檢測檔案系統和塊層的IO hang。 |
ECS執行個體網路頻寬是否到達上限 | 檢查ECS執行個體網路頻寬是否到達上限。 | ECS執行個體頻寬總量已超過執行個體規格對應的網路基礎頻寬上限,請您將執行個體升級至網路頻寬能力更高的執行個體規格。具體操作,請參見升降配方式概述。 |
ECS執行個體的突髮網絡頻寬是否受限 | 檢查ECS執行個體的網路突髮帶寬是否受到限制。 | ECS執行個體突髮網絡頻寬已超過執行個體規格對應的網路突髮帶寬上限,請您將執行個體升級至網路頻寬能力更高的執行個體規格。具體操作,請參見升降配方式概述。 |
ECS執行個體網卡載入狀態 | 檢查ECS執行個體的網卡是否能正常載入。 | 如果網卡無法正常載入,將影響執行個體的網路連通性,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體網卡會話建立檢查 | 檢查ECS執行個體的網卡是否能正常建立會話。 | 如果網卡無法建立會話或已建立的會話超過限制,將影響執行個體的網路連通性或網路吞吐,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體核心操作執行情況 | 檢查您對ECS執行個體最近執行的管理操作,例如,開機、關機、升配等是否執行成功。 | 您最近發起的管理操作,例如開機、關機、升配執行失敗,您需要重新發起該操作。 |
ECS執行個體網卡丟包檢查 | 檢查ECS執行個體的網卡入方向或出方向是否存在丟包現象。 | ECS執行個體發現網卡丟包現象,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體效能是否短暫受損 | 檢查執行個體是否存在因底層軟硬體問題導致的效能受損。 | 如果存在效能受損,會提示發生時間,請您檢查ECS執行個體的歷史系統事件或者系統日誌進行確認。具體操作,請參見查看歷史系統事件。 |
ECS執行個體效能是否受限 | 檢查ECS執行個體效能是否受限。 | ECS執行個體的CPU積分不足以支付維持高效能所需的積分,只能使用基準效能。 |
ECS執行個體磁碟擴縮容情況 | 檢查ECS執行個體的系統硬碟擴縮容情況。 | ECS執行個體磁碟擴縮容後,作業系統調整檔案系統的大小失敗。新擴縮容的磁碟無法使用,請重新發起擴縮容操作。 |
ECS執行個體資源申請 | 檢查ECS執行個體所需要的CPU、記憶體等實體資源是否充足。 | 實體資源不足導致執行個體無法啟動,您可以等待幾分鐘後重新嘗試開機,或者在其他地區或可用性區域嘗試重新建立執行個體。 |
ECS執行個體作業系統狀態 | 檢查ECS執行個體的作業系統是否存在核心Panic、OOM異常或內部宕機等故障。 | 此類故障可能是由於ECS執行個體配置不當或使用者空間的程式配置不當導致的,您可以嘗試通過重啟執行個體進行恢複。 |
ECS執行個體虛擬化狀態 | 檢查ECS執行個體底層虛擬化層核心服務是否出現異常。 | 出現此類異常可能會導致ECS執行個體崩潰或出現異常暫停,您可以嘗試通過重啟執行個體進行恢複。 |
GPUNode
檢查項名稱 | 檢查項說明 | 修複方案 |
容器運行時 | 檢查GPU節點上的容器運行時是否合法。 | 請檢查節點上的容器運行時(Docker或Containerd)狀態,ACK不支援除這兩種容器運行時之外的GPU節點。 |
NVIDIA-Container-Runtime版本 | 檢查GPU節點上的NVIDIA-Container-Runtime版本。 | 該節點上的NVIDIA-Container-Runtime版本存在問題或沒有安裝。請根據以下步驟操作。
|
CGPU模組狀態 | 檢查GPU節點上的CGPU狀態是否正常。 | 請檢查該節點是否為共用GPU節點。請根據以下步驟操作。
|
容器運行時配置是否正常 | 檢查GPU節點上的容器運行時配置是否正常。 | 該GPU節點上的容器運行時配置存在問題。請檢查運行時配置資訊,確認以下檔案中是否有nvidia-container-runtime配置欄位。
|
NVIDIA-Container-Runtime是否正常 | 檢查GPU節點上的NVIDIA-Container-Runtime是否正常。 | 該節點上的NVIDIA-Container-Runtime存在問題。請收集GPU節點診斷資訊並提交工單處理。收集診斷資訊的具體操作,請參見收集GPU節點的問題診斷資訊。 |
NVIDIA模組是否正常 | 檢查GPU節點上的NVIDIA模組是否正常。 | 該GPU節點上NVIDIA核心模組存在問題。請根據以下步驟操作。
|