“Hack”阿里雲Kubernetes的Scheduler的日誌級別
問題
阿里雲的Kubernetes容器服務,預設已經根據生產的要求建立好了3個master的高可用叢集。每個master節點都部署了對應的apiserver, controller, scheduler。對於一些高階使用者,特別是在開發測試階段,或許需要調整這些元件的日誌級別來dubug其執行的行為,則需要手工做一下日誌級別的調整。那麼我們需要了解阿里雲的kubernetes是如何配置,從而“hack”它。
瞭解阿里雲Kubernetes的部署方式
Docker的部署
Docker是通過systemd部署,可以登入到一臺master,通過
systemctl status docker
檢視docker daemon的狀態,從而知道docker的配置在/usr/lib/systemd/system/docker.service
可以檢視改檔案知道,docker的日誌配置:
那麼可以知道容器的stdout的日誌將存在容器的目錄裡,檔案為/var/lib/docker/containers/<container-id>/<container-id>-json.log
Kubelet的部署方式
Kubelet也是通過systemd部署,可以登入到一臺master,通過
systemctl status kubelet
檢視kubelet的執行狀態,從而知道kubelet的配置在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
可以檢視改檔案知道,kubelet的執行配置為:
紅色框是配置static pod的對應的yaml檔案所在的路徑:/etc/kubernetes/manifests
Static Pod的使用和原理可以參見:https://kubernetes.io/docs/tasks/administer-cluster/static-pod/
scheduler的日誌啟動引數
進入/etc/kubernetes/manifests
目錄,可以看到有三個檔案,這個就是apiserver, scheduler, controller的pod的執行yaml檔案
對雲的scheduler的podyaml檔案是:kube-scheduler.yaml
,相關的配置就在這裡面。從配置可以知道,該scheduler pod是直接輸出到stdout的,那麼它的日誌對應檔案就在之前說的容器的目錄裡。
Kubernetes scheduler的日誌級別配置
Kubernetes的scheduler的日誌配置第一反應就是去改配置引數,但是比較坑的是kube-scheduler --help
輸出的提示是:
盡然沒有說配置的可選值是什麼,然後官網的文件也沒有說怎麼配置,連-v引數都不說
不得不去google,最後找到一下文件:
https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md
Hack scheduler日誌級別實踐
從上面的資訊我們已經知道了scheduler的執行方式,以及瞭解了日記級別的配置,那麼hack就簡單多了
- 修改
/etc/kubernetes/manifests/kube-scheduler.yaml
增加.-v=4
的配置
- 等待kubelet重啟對應的pod,可以通過
docker ps | grep scheduler
來看對應的pod是否已經重啟 -
docker ps | grep scheduler
獲得對應的container id - 檢視對應的
/var/lib/docker/containers/<container-id>/<container-id>-json.log
就可以獲得對應的日誌了
總結
如果需要“hack”其它元件也是類似的原理。不過提醒大家,這個只能是作為開發/測試需要時才使用。在生產環境還是要保留原有的方式,畢竟那個是經過生產檢驗過的配置方式。
相關文章
- 阿里雲 PB 級 Kubernetes 日誌平臺建設實踐阿里
- 【Logback日誌級別】動態調整Logback的日誌級別
- Redis日誌級別Redis
- 更便捷 阿里雲DCDN離線日誌轉存全新升級阿里
- Hyperf 下使用阿里雲日誌 SLS阿里
- 阿里雲Kubernetes容器服務Istio實踐之整合日誌服務Log Service阿里
- 自定義Egg.js的請求級別日誌JS
- 阿里雲日誌服務sls的典型應用場景阿里
- Kubernetes日誌的6個最佳實踐
- Kubernetes日誌採集
- Kubernetes Scheduler淺析
- logback接入到阿里雲sls日誌服務阿里
- Golang:手擼一個支援六種級別的日誌庫Golang
- Kubernetes 叢集日誌 和 EFK 架構日誌方案架構
- log4j日誌級別以及配置
- Confluence 6 log4j 日誌級別
- 阿里雲 Serverless Kubernetes 的落地實踐分享阿里Server
- 日誌架構演進:從集中式到分散式的Kubernetes日誌策略架構分散式
- Java日誌:您需要了解的4種日誌型別Java型別
- 最全 Kubernetes 審計日誌方案
- Kubernetes叢集日誌詳解
- log4j日誌輸出級別(轉)
- Kubernetes 漫遊:kube-scheduler
- Kubernetes scheduler學習筆記筆記
- 如何開關資料庫告警日誌及修改日誌級別資料庫
- Kubernetes 日誌傳輸中的四大挑戰
- Kubernetes Ingress 日誌分析與監控的最佳實踐
- logback日誌級別動態切換的終極方案(Java ASM使用)JavaASM
- 常見的錯誤日誌型別型別
- fluentd收集kubernetes 叢集日誌分析
- 【MySQL日誌】MySQL日誌檔案初級管理MySql
- Logback中使用TurboFilter實現日誌級別等內容的動態修改Filter
- 阿里雲IoT物聯網平臺-日誌服務詳解阿里
- log4j日誌列印級別動態調整
- Kubernetes 中 搭建 EFK 日誌搜尋中心
- 深度揭祕阿里雲 Serverless Kubernetes阿里Server
- MySQL 日誌之 binlog 格式 → 關於 MySQL 預設隔離級別的探討MySql
- k8s各元件啟動時, -v引數指定的日誌級別K8S元件