關於修改docker的啟動參數cgroupfs為systemd


當某個 Linux 系統發行版使用 systemd 作為其初始化系統時,初始化進程會生成並使用一個 root 控制組 (cgroup), 並充當 cgroup 管理器。 Systemd 與 cgroup 集成緊密,並將為每個 systemd 單元分配一個 cgroup。 你也可以配置容器運行時和 kubelet 使用 cgroupfs。 連同 systemd 一起使用 cgroupfs 意味着將有兩個不同的 cgroup 管理器。

單個 cgroup 管理器將簡化分配資源的視圖,並且默認情況下將對可用資源和使用 中的資源具有更一致的視圖。 當有兩個管理器共存於一個系統中時,最終將對這些資源產生兩種視圖。 在此領域人們已經報告過一些案例,某些節點配置讓 kubelet 和 docker 使用 cgroupfs,而節點上運行的其余進程則使用 systemd; 這類節點在資源壓力下 會變得不穩定。

更改設置,令容器運行時和 kubelet 使用 systemd 作為 cgroup 驅動,以此使系統更為穩定。 對於 Docker, 設置 native.cgroupdriver=systemd 選項。

注意:更改已加入集群的節點的 cgroup 驅動是一項敏感的操作。 如果 kubelet 已經使用某 cgroup 驅動的語義創建了 pod,更改運行時以使用 別的 cgroup 驅動,當為現有 Pods 重新創建 PodSandbox 時會產生錯誤。 重啟 kubelet 也可能無法解決此類問題。 如果你有切實可行的自動化方案,使用其他已更新配置的節點來替換該節點, 或者使用自動化方案來重新安裝。

 

 

cat /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM