GOLANGPORTAL Telegram 699
Вертикальное масштабирование пода без перезапуска стало возможным начиная с Kubernetes v1.33.

Обычно, если вы хотели выдать приложению (Pod в Kubernetes) больше памяти или CPU, его приходилось перезапускать.

Это ок, если приложение спокойно относится к перезапускам, но есть такие, которым остановки/старты противопоказаны: базы данных, тяжёлые batch-задачи или штуки, которым нужна ровная непрерывная работа.

Бета

Новая фича «in-place Pod resize» позволяет менять объём памяти и CPU у Pod, пока он продолжает работать. Начиная с версии 1.33 она считается достаточно зрелой для обычного использования и включена по умолчанию. До этого нужно было включать фича-гейт InPlacePodVerticalScaling.

Как

Вместо обычного kubectl edit по Pod используется специальный подресурс /resize. Например, можно сделать patch так:

kubectl patch pod mypod --subresource=resize ....



Это похоже на то, как устроены другие возможности Kubernetes. Например:

🔹/status — подресурс, которым можно обновлять только поле status объекта, не трогая его spec.

🔹/scale — подресурс у Deployment или StatefulSet, позволяющий менять количество реплик без редактирования всего манифеста.

Аналогично, /resize — подресурс у Pod, который позволяет менять ресурсы на месте.

Важно: это применяется к отдельным Pod. Если запустить kubectl set resources на Deployment, StatefulSet или Job, это всё равно поменяет шаблон и породит новые Pod, а не сделает in-place изменение.

Увеличивать CPU просто, увеличение памяти обычно проходит, если на узле есть свободная ёмкость. Уменьшать CPU тоже легко, а вот уменьшение памяти — самый сложный кейс и может провалиться, быть отложено или потребовать перезапуск в зависимости от политики. Чтобы понимать, как идёт процесс, следите за полями status и conditions у Pod.

Политика ресайза

Каждый контейнер в спецификации Pod может задать resizePolicy. Внутри этого поля CPU и память перечисляются отдельно, и для каждого выбирается политика перезапуска. Доступны два значения:

🔹NotRequired: Kubernetes попытается изменить значения ресурсов на месте, пока контейнер работает. Это значение по умолчанию. Это best-effort: если рантайм не может безопасно применить изменение (особенно при уменьшении памяти), операция завершится ошибкой вместо принудительного перезапуска.

🔹RestartContainer: чтобы применить новые настройки ресурсов, Kubernetes обязан перезапустить контейнер. Полезно для приложений, которые читают лимиты ресурсов только при старте, например некоторые JVM-нагрузки.

Пример:
resizePolicy:
- resourceName: cpu
restartPolicy: NotRequired
- resourceName: memory
restartPolicy: RestartContainer


Источник

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5



tgoop.com/GolangPortal/699
Create:
Last Update:

Вертикальное масштабирование пода без перезапуска стало возможным начиная с Kubernetes v1.33.

Обычно, если вы хотели выдать приложению (Pod в Kubernetes) больше памяти или CPU, его приходилось перезапускать.

Это ок, если приложение спокойно относится к перезапускам, но есть такие, которым остановки/старты противопоказаны: базы данных, тяжёлые batch-задачи или штуки, которым нужна ровная непрерывная работа.

Бета

Новая фича «in-place Pod resize» позволяет менять объём памяти и CPU у Pod, пока он продолжает работать. Начиная с версии 1.33 она считается достаточно зрелой для обычного использования и включена по умолчанию. До этого нужно было включать фича-гейт InPlacePodVerticalScaling.

Как

Вместо обычного kubectl edit по Pod используется специальный подресурс /resize. Например, можно сделать patch так:

kubectl patch pod mypod --subresource=resize ....



Это похоже на то, как устроены другие возможности Kubernetes. Например:

🔹/status — подресурс, которым можно обновлять только поле status объекта, не трогая его spec.

🔹/scale — подресурс у Deployment или StatefulSet, позволяющий менять количество реплик без редактирования всего манифеста.

Аналогично, /resize — подресурс у Pod, который позволяет менять ресурсы на месте.

Важно: это применяется к отдельным Pod. Если запустить kubectl set resources на Deployment, StatefulSet или Job, это всё равно поменяет шаблон и породит новые Pod, а не сделает in-place изменение.

Увеличивать CPU просто, увеличение памяти обычно проходит, если на узле есть свободная ёмкость. Уменьшать CPU тоже легко, а вот уменьшение памяти — самый сложный кейс и может провалиться, быть отложено или потребовать перезапуск в зависимости от политики. Чтобы понимать, как идёт процесс, следите за полями status и conditions у Pod.

Политика ресайза

Каждый контейнер в спецификации Pod может задать resizePolicy. Внутри этого поля CPU и память перечисляются отдельно, и для каждого выбирается политика перезапуска. Доступны два значения:

🔹NotRequired: Kubernetes попытается изменить значения ресурсов на месте, пока контейнер работает. Это значение по умолчанию. Это best-effort: если рантайм не может безопасно применить изменение (особенно при уменьшении памяти), операция завершится ошибкой вместо принудительного перезапуска.

🔹RestartContainer: чтобы применить новые настройки ресурсов, Kubernetes обязан перезапустить контейнер. Полезно для приложений, которые читают лимиты ресурсов только при старте, например некоторые JVM-нагрузки.

Пример:
resizePolicy:
- resourceName: cpu
restartPolicy: NotRequired
- resourceName: memory
restartPolicy: RestartContainer


Источник

👉 @GolangPortal

BY Golang Portal




Share with your friend now:
tgoop.com/GolangPortal/699

View MORE
Open in Telegram


Telegram News

Date: |

bank east asia october 20 kowloon While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. While some crypto traders move toward screaming as a coping mechanism, many mental health experts have argued that “scream therapy” is pseudoscience. Scientific research or no, it obviously feels good.
from us


Telegram Golang Portal
FROM American