kubernetes支持swap了储玫,但是cgroup v2
結(jié)論:
Container-Optimized OS(從 M97 開始)侍筛、Ubuntu(從 21.10 開始,推薦 22.04+)撒穷、Debian GNU/Linux(從 Debian 11 Bullseye 開始)匣椰、Fedora(從 31 開始)、Arch Linux(從 2021 年 4 月開始)端礼、RHEL 和類似 RHEL 的發(fā)行版(從 9 開始)支持使用swap但是要配置禽笑,未配置前先用sudo swapoff -a
暫時(shí)關(guān)閉。
其他系統(tǒng)要手動在內(nèi)核配置cgroup v2
來自官方文檔:
交換分區(qū)的配置蛤奥。kubelet 的默認(rèn)行為是在節(jié)點(diǎn)上檢測到交換內(nèi)存時(shí)無法啟動佳镜。 kubelet 自 v1.22 起已開始支持交換分區(qū)。自 v1.28 起凡桥,僅針對 cgroup v2 支持交換分區(qū)蟀伸; kubelet 的 NodeSwap 特性門控處于 Beta 階段,但默認(rèn)被禁用唬血。
- 如果 kubelet 未被正確配置使用交換分區(qū)望蜡,則你必須禁用交換分區(qū)。 例如拷恨,
sudo swapoff -a
將暫時(shí)禁用交換分區(qū)脖律。要使此更改在重啟后保持不變,請確保在如/etc/fstab
腕侄、systemd.swap
等配置文件中禁用交換分區(qū)小泉,具體取決于你的系統(tǒng)如何配置芦疏。
cgroup v2
要檢查你的發(fā)行版使用的是哪個(gè) cgroup 版本,請?jiān)谠摴?jié)點(diǎn)上運(yùn)行 stat -fc %T /sys/fs/cgroup/
命令:
stat -fc %T /sys/fs/cgroup/
對于 cgroup v2微姊,輸出為 cgroup2fs
酸茴。
對于 cgroup v1,輸出為 tmpfs
兢交。
cgroup v2 具有以下要求:
操作系統(tǒng)發(fā)行版啟用 cgroup v2
Linux 內(nèi)核為 5.8 或更高版本
-
容器運(yùn)行時(shí)支持 cgroup v2薪捍。例如:
- containerd v1.4 和更高版本
- cri-o v1.20 和更高版本
kubelet 和容器運(yùn)行時(shí)被配置為使用 systemd cgroup 驅(qū)動
Linux 發(fā)行版 cgroup v2 支持
有關(guān)使用 cgroup v2 的 Linux 發(fā)行版的列表, 請參閱 cgroup v2 文檔配喳。
- Container-Optimized OS(從 M97 開始)
- Ubuntu(從 21.10 開始酪穿,推薦 22.04+)
- Debian GNU/Linux(從 Debian 11 Bullseye 開始)
- Fedora(從 31 開始)
- Arch Linux(從 2021 年 4 月開始)
- RHEL 和類似 RHEL 的發(fā)行版(從 9 開始)
要檢查你的發(fā)行版是否使用 cgroup v2, 請參閱你的發(fā)行版文檔或遵循識別 Linux 節(jié)點(diǎn)上的 cgroup 版本中的指示說明晴裹。
你還可以通過修改內(nèi)核 cmdline 引導(dǎo)參數(shù)在你的 Linux 發(fā)行版上手動啟用 cgroup v2被济。 如果你的發(fā)行版使用 GRUB,則應(yīng)在 /etc/default/grub
下的 GRUB_CMDLINE_LINUX
中添加 systemd.unified_cgroup_hierarchy=1
涧团, 然后執(zhí)行 sudo update-grub
只磷。不過,推薦的方法仍是使用一個(gè)默認(rèn)已啟用 cgroup v2 的發(fā)行版泌绣。