使用Alibaba Cloud Linux 3作為K8s節點,在擴容後有可能引起Pod初始化失敗。本文主要介紹Alibaba Cloud Linux 3系統中Systemd導致Pod初始化失敗的原因及解決方案。
問題描述
在Pod初始化過程中,擴容節點在重新整理K8s相關的配置時調用的指令碼執行了systemctl daemon-reload命令,導致Pod初始化失敗,報錯cgroup設定失敗或cgroup.proc檔案不存在。
影響範圍
Alibaba Cloud Linux 3系統中,Systemd的版本低於systemd-239-82.0.3.4.al8.2。
問題原因
執行
systemctl daemon-reload命令將重建所有的單元。當該操作與Pod初始化流程並發執行時會導致race,從而引發dbus通訊失敗或unit檔案找不到的問題。執行
systemctl daemon-reload過程中未儲存和未寫入cgroup中的進程ID與Pod初始化流程並發執行時,可能發生cgroup empty事件,從而導致cgroup被刪除。
解決方案
升級Systemd至systemd-239-82.0.3.4.al8.2及以上版本。
查看當前系統中Systemd版本。
rpm -q systemd升級Systemd版本。
如需升級為其他版本,替換
systemd-239-82.0.3.4.al8.2.x86_64為所需版本。sudo dnf upgrade -y systemd-239-82.0.3.4.al8.2.x86_64重啟系統使配置生效。
警告重啟執行個體將導致您的執行個體暫停運行,這可能引發業務中斷和資料丟失。因此,建議您在執行此操作之前備份關鍵資料,並選擇在非業務高峰期進行。
sudo reboot