Командата ви е леко неправилна:echo
работи като root, но самото пренасочване (>
) работи като потребител, така че не може да пише /sys/
.
Следната команда работи добре и двете на container-vm (базирано на debian) и gci (базирано на chromeos):
sudo sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
Тази настройка се запазва на container-vm
Добавете този параметър на командния ред на ядрото в /etc/default/grub
(не забравяйте да стартирате sudo update-grub
и sudo reboot
след това):
GRUB_CMDLINE_LINUX="... transparent_hugepage=never"
Тази настройка се запазва на gci
Първо, с помощта на облачната конзола копирайте шаблона на екземпляра, който се използва от пула от възли.
Второ, под метаданни променете стойността за потребителски данни:
#cloud-config
write_files:
- path: /etc/systemd/system/hugepage.service
permissions: 0644
owner: root
content: |
[Unit]
Description=Disable THP
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
[Install]
WantedBy=kubernetes.target
...
runcmd:
- ...
- systemctl enable hugepage.service
- systemctl start kubernetes.target
Трето, променете шаблона на екземпляра с новосъздадения:
gcloud compute instance-groups managed set-instance-template \
gke-YOUCLUSTER-YOURPOOL-grp \
--template=YOURNEWTEMPLATENAME \
--zone=...
Четвърто, създайте отново екземпляра(ите):
gcloud compute instance-groups managed recreate-instances \
gke-YOUCLUSTER-YOURPOOL-grp \
--zone=... \
--instances=...
Екземплярите ще загубят всички данни и излезе с деактивиран THP. Всички нови екземпляри също ще имат деактивиран THP (в този пул от възли).