【Azure K8S | AKS】分享從AKS叢集的Node中檢視日誌的方法(/var/log)

路邊兩盞燈發表於2023-03-15

問題描述

使用Azure Kubernetes服務(AKS),可以透過kubectl連線 pod 中檢視日誌,但是如何來檢視節點的系統日誌呢?如是否有ubuntu系統升級的記錄?

 

問題解答

是的,可以進入AKS的節點檢視系統檔案,如日誌檔案(/var/log) 或者由應用生產的其他日誌。

 

具體的操作步驟如下:

第一步: 登入到AKS叢集,並獲取節點資訊

## 設定 az cli命令的執行環境為 中國區Azure AzureChinaCloud
az cloud set --name AzureChinaCloud
## 登入到Azure,在彈出的對話方塊中輸入使用者名稱和密碼 az login # get the credentials for the cluster ## -g 後面輸入您aks服務所在的resource group名稱 ## -n 表示aks服務的名稱 az aks get-credentials -g 'aks-rg' -n myaks001 ## 獲取節點資訊 kubectl get node

獲取節點的結果示意圖:

【Azure K8S | AKS】分享從AKS叢集的Node中檢視日誌的方法(/var/log)

第二步:建立一個Debug Pod, 透過它檢視日誌檔案

kubectl debug node/<替換成第一步查詢出來的Node ID> -it --image=mcr.azk8s.cn/dotnet/runtime-deps:6.0

【Azure K8S | AKS】分享從AKS叢集的Node中檢視日誌的方法(/var/log)

第三步:chroot /host 提升許可權 

## 提升許可權 
chroot /host

如果不提升許可權,則很多日誌檔案無法檢視。對比效果如下:

【Azure K8S | AKS】分享從AKS叢集的Node中檢視日誌的方法(/var/log)

第四步:使用 grep 進行關鍵字查詢

如透過 cat dpkg.log | grep ubuntu 來檢視是否由系統級升級行為

【Azure K8S | AKS】分享從AKS叢集的Node中檢視日誌的方法(/var/log)

 也可以在這個資料夾中搜尋關鍵字:

# 在 /var/log 資料夾中檢視 包含“installed” 關鍵字的檔名和內容所在的行號
grep -r installed /var/log

【Azure K8S | AKS】分享從AKS叢集的Node中檢視日誌的方法(/var/log)

第五步:  檢視完日誌後,退出節點並刪除 Debug POD

exit

kubectl get pod

kubectl delete pod node-debugger-aks-agentpool-XXXXXXXXXXXXXXXXXXXXXXXXXXXX

命令執行示意圖:

【Azure K8S | AKS】分享從AKS叢集的Node中檢視日誌的方法(/var/log)

 

透過以上5步,完成檢視日誌並清理操作痕跡。

 

參考資料

安裝 Kubernetes CLI : https://docs.azure.cn/zh-cn/aks/tutorial-kubernetes-deploy-cluster?tabs=azure-cli#install-the-kubernetes-cli

在 Windows 上安裝 kubectl : https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/#install-kubectl-on-windows

 

 

相關文章