Docker
docker 不會執行 k8s 容器(包括控制平面):“無法找到使用者 0:無效參數”
我有一個 k8s 集群執行了一段時間沒有問題。幾天前,它不會啟動,當 kubelet 啟動時,它會創建許多控制平面容器(在明顯的無限循環中),所有這些容器都標記為 Created,在 Docker 中出現以下錯誤,並且每個創建的容器的 kubelet 日誌:
Handler for POST /v1.40/containers/<ID>/start returned error: unable to find user 0: invalid argument
背景資料:
- 當我注意到 kubelet 版本是 v1.19.1 時,集群仍在執行 v1.19.0
- docker 是 Debian 上的 19.03.12 版本(在測試中使用 Linux 5.7.0-3 和 5.8.0-1 進行了測試)
- 我最初懷疑升級到 kubelet v1.19.1(從 v1.19.0),但逆向升級並沒有解決問題
- 我嘗試了一些不同的圖像,但它們執行良好,包括在命令行上
docker run -it <image> sh -i
使用卷掛載-v
和轉發埠時;-p
這些容器執行良好- 即使在重新安裝之前刪除,重新安裝 docker
apt purge ... && apt install ...
也無法解決問題/var/lib/{docker,kubelet}
- 也沒有
kubeadm reset ... && kubeadm init
- docker 使用 overlay2 storage-driver 和 systemd cgroup-driver
- 我沒有從它開始時的日誌,因為我有幾天沒有使用這個(開發)集群,隨後的錯誤填滿了日誌
任何提示和建議表示讚賞。不幸的是,錯誤消息不足以找出問題所在,甚至是在依賴鏈中的哪個位置。
正如@mdaniel 在評論中提到的,這個問題可能與 docker 版本相關。
此問題已通過使用者ncresswell的此 github文章中的步驟解決。
好的,在 Debian 10 上執行良好,即使安裝了 AppArmour 並執行策略。
我從 Docker 官方 Repo 安裝了 Docker CE。 https://docs.docker.com/engine/install/debian/
請做同樣的事情並恢復。請注意,在 Debian 11 發佈為“穩定”之前,我們不會提供任何支持。
作為記錄,其他人也遇到過這種情況並在此處向 Debian 維護者報告:bugs.debian.org/cgi-bin/bugreport.cgi?bug=970525