4

cos-stable在 GCE 上使用容器优化的操作系统。微型实例,因此 ram 非常稀疏。尝试启用交换以防止在 docker pull 期间由于 OOM 锁定,但无法使其正常工作。

我意识到大多数文件夹都是无状态的,所以我把交换文件放在 home 下:

sudo fallocate -l 1G /home/user/swapfile
sudo chmod 600 /home/user/swapfile
sudo mkswap /home/user/swapfile

结果是:

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

sudo swapon /home/user/swapfile给出了错误:

swapon: /home/user/swapfile: swapon failed: Invalid argument

任何想法如何在 COS 上启用交换?

4

2 回答 2

10

COS 映像中禁用了基于磁盘的交换。您可以启用基于磁盘的交换

sysctl vm.disk_based_swap=1

我的 cloud-init 中有以下内容:

bootcmd:
- sysctl vm.disk_based_swap=1
- fallocate -l 1G /var/swapfile
- chmod 600 /var/swapfile
- mkswap /var/swapfile
- swapon /var/swapfile
于 2019-10-29T20:10:10.950 回答
3

容器优化操作系统不支持交换

交换将有效地破坏谷歌在容器之间提供的大部分行为隔离。

有保证的 pod 永远不需要交换。Burstable pod 应该在不需要交换的情况下满足它们的请求。BestEffort pod 无法保证。

我强烈建议您使用更大的实例,因为f1-micro只有 600MB 的 RAM,您仍然需要在它与容器一起添加的实例上运行操作系统

于 2019-10-03T15:18:14.420 回答