Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье перечислены поддерживаемые параметры конфигурации пользовательских узлов для пулов узлов Azure Kubernetes Service (AKS). Сведения о создании и применении файлов конфигурации см. в статье "Настройка конфигурации узла для пулов узлов AKS".
Параметры настраиваемой конфигурации Kubelet
Important
Если включить небезопасные sysctl, вы несете ответственность за стабильность узла и поведение рабочих нагрузок. Небезопасные sysctl параметры могут потенциально вызвать нестабильность узла или потенциальные уязвимости безопасности, если они неправильно настроены. Убедитесь, что вы понимаете последствия включения определенных небезопасных sysctl параметров и внимательно следите за состоянием кластера после внесения изменений.
Настраиваемая конфигурация kubelet для Linux
| Parameter | Допустимые значения или интервал | По умолчанию | Description |
|---|---|---|---|
cpuManagerPolicy |
нет, статический | нет | Статическая политика позволяет контейнерам в гарантированных модулях с целочисленными запросами ЦП получить доступ к эксклюзивным ЦП на узле. |
cpuCfsQuota |
истина, ложь | true | Включение и отключение применения квот ЦП CFS для контейнеров, определяющих ограничения ЦП. |
cpuCfsQuotaPeriod |
Интервал в миллисекундах (мс) | 100ms |
Задает значение периода квоты CFS для центрального процессора. |
imageGcHighThreshold |
0–100 | 85 | Процент использования дискового пространства, после достижения которого всегда выполняется очистка ненужных данных образов. Минимальное использование диска, которое активирует сборку мусора. Для отключения автоматического удаления изображений установите 100. |
imageGcLowThreshold |
0–100, не больше imageGcHighThreshold |
80 | Процент дискового пространства, до достижения которого сборка ненужных образов никогда не выполняется. Минимальное заполнение диска, которое может активировать сборку мусора. |
topologyManagerPolicy |
отсутствует, прилагается максимум усилий, ограниченный, один узел NUMA | нет | Оптимизация согласования узлов NUMA. Дополнительные сведения см. в разделе "Политики управления топологией" на узле. |
allowedUnsafeSysctls |
kernel.shm*, , kernel.msg*kernel.sem, fs.mqueue.*net.* |
Нет | Разрешенный список ненадежных sysctls или ненадежных шаблонов sysctls. |
containerLogMaxSizeMB |
Размер в мегабайтах (МБ) | 50 | Максимальный размер (например, 10 МБ) файла журнала контейнера перед ротацией. |
containerLogMaxFiles |
2 или больше | 5 | Максимальное количество файлов журнала контейнеров для хранения контейнера. |
podMaxPids |
— от -1 до предела PID ядра | -1 (бесконечно) | Максимальное количество идентификаторов процессов, которые могут выполняться в модуле pod. |
seccompDefault |
Unconfined, RuntimeDefault |
Unconfined |
Задает профиль seccomp по умолчанию для всех рабочих нагрузок.
RuntimeDefault использует профиль seccomp по умолчанию контейнера, ограничивающий определенные системные вызовы для повышения безопасности. Сбой в работе ограниченных системных вызовов.
Unconfined не устанавливает ограничений на системные вызовы, разрешая все системные вызовы и снижая безопасность. Дополнительные сведения см. в профиле seccomp по умолчанию для контейнеров. Этот параметр находится в предварительной версии.
Зарегистрируйте флаг компонента KubeletDefaultSeccompProfilePreview с помощью az feature register команды --namespace "Microsoft.ContainerService". |
kubeReserved.cpuMillicores |
1 к вычислительной мощности ЦП пула узлов в миллиядрах | Нет | Резервирует ресурсы ЦП для системных демонов Kubernetes в пулах узлов Linux. Этот параметр доступен в режиме предварительной версии, и для него требуется флаг функции CustomNodeConfigPreview. |
kubeReserved.memoryMB |
1 к объему памяти пула узлов в MiB | Нет | Резервирует память для системных демонов Kubernetes в пулах узлов Linux. Этот параметр доступен в режиме предварительной версии, и для него требуется флаг функции CustomNodeConfigPreview. |
hardEvictionThreshold.memoryAvailable |
<number>Ki, , <number>Mi<number>Giили <number>% где процент не более 100 |
Нет | Задает порог жесткого вытеснения kubelet для доступной памяти в пулах узлов Linux. Этот параметр доступен в режиме предварительной версии, и для него требуется флаг функции CustomNodeConfigPreview. |
hardEvictionThreshold.nodeFsAvailable |
<number>Ki, , <number>Mi<number>Giили <number>% где процент не более 100 |
Нет | Задает пороговое значение жесткого вытеснения kubelet для доступного пространства файловой системы узла в пулах узлов Linux. Этот параметр доступен в режиме предварительной версии, и для него требуется флаг функции CustomNodeConfigPreview. |
hardEvictionThreshold.nodeFsInodesFree |
<number> или <number>% где процент не превышает 100 |
Нет | Задает порог жесткого вытеснения kubelet для свободных inode файловой системы узла в пулах узлов Linux. Этот параметр доступен в режиме предварительной версии, и для него требуется флаг функции CustomNodeConfigPreview. |
Конфигурация Windows kubelet по умолчанию
| Parameter | Допустимые значения или интервал | По умолчанию | Description |
|---|---|---|---|
imageGcHighThreshold |
0–100 | 85 | Процент использования дискового пространства, после достижения которого всегда выполняется очистка ненужных данных образов. Минимальное использование диска, которое активирует сборку мусора. Для отключения автоматического удаления изображений установите 100. |
imageGcLowThreshold |
0–100, не больше imageGcHighThreshold |
80 | Процент дискового пространства, до достижения которого сборка ненужных образов никогда не выполняется. Минимальное заполнение диска, которое может активировать сборку мусора. |
containerLogMaxSizeMB |
Размер в мегабайтах (МБ) | 10 | Максимальный размер (например, 10 МБ) файла журнала контейнера перед ротацией. |
containerLogMaxFiles |
2 или больше | 5 | Максимальное количество файлов журнала контейнеров для хранения контейнера. |
Параметры конфигурации пользовательской ОС Linux
Important
Чтобы упростить поиск и удобочитаемость, параметры ОС отображаются в этой статье по их имени, но их следует добавить в JSON-файл конфигурации или API AKS с помощью соглашения о написании в формате camelCase.
Например, если изменить vm.max_map_count параметр, необходимо переформатировать его vmMaxMapCount в JSON-файл конфигурации.
Ограничения дескриптора файлов Linux
При обслуживании большого количества трафика этот трафик обычно поступает из большого количества локальных файлов. Вы можете настроить следующие параметры ядра и встроенные ограничения, чтобы обрабатывать больше задач, за счёт некоторого объёма системной памяти.
В следующей таблице перечислены ограничения дескриптора файлов, которые можно настроить для каждого пула узлов:
| Setting | Допустимые значения или интервал | По умолчанию Ubuntu 22.04 | По умолчанию Ubuntu 24.04 | Azure Linux 3.0 по умолчанию | Description |
|---|---|---|---|---|---|
fs.file-max |
8192 - 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | Максимальное количество файловых дескрипторов, которые выделяет ядро Linux. Это значение имеет максимально возможное значение (2^63-1), чтобы предотвратить исчерпание дескриптора файлов и обеспечить неограниченные системные дескрипторы файлов для контейнерных рабочих нагрузок. |
fs.inotify.max_user_watches |
781250–2097152 | 1048576 | 1048576 | 1048576 | Максимальное количество наблюдений за файлами, разрешенное системой. Каждое контрольное значение занимает примерно 90 байт на 32-разрядном ядре и примерно 160 байт на 64-разрядном ядре. |
fs.aio-max-nr |
65536–6553500 | 65536 | 65536 | 65536 | В aio-nr отображается текущее системное число асинхронных запросов ввода-вывода. Значение aio-max-nr определяет максимальное значение, до которого может увеличиться aio-nr. |
fs.nr_open |
8192–20000500 | 1048576 | 1048576 | 1073741816 | Максимальное число дескрипторов файлов, которые может выделить процесс. |
Note
Параметр fs.file-max имеет значение 9223372036854775807 (максимальное значение для подписанного 64-разрядного целого числа) в Ubuntu и Azure Linux на основе вышестоящих значений по умолчанию. Эта конфигурация:
- Предотвращает атаки типа "отказ в обслуживании ", основанные на исчерпании дескрипторов на уровне системы.
- Гарантирует, что рабочие нагрузки контейнеров никогда не перегружены ограничениями на количество дескрипторов файлов на уровне системы.
-
Обеспечивает безопасность с помощью ограничений для каждого процесса (
fs.nr_openиulimit), которые по-прежнему применяются к отдельным процессам. - Оптимизирует платформы контейнеров , где одновременно может выполняться множество контейнеров, каждый из которых может открывать множество файлов и сетевых подключений.
Настройка сокета Linux и сети
Для узлов агента, которые, как ожидается, обрабатывают большое количество одновременных сеансов, можно использовать следующие параметры TCP и сети и настроить их на пул узлов:
| Setting | Допустимые значения или интервал | По умолчанию Ubuntu 22.04 | По умолчанию Ubuntu 24.04 | Azure Linux 3.0 по умолчанию | Description |
|---|---|---|---|---|---|
net.core.somaxconn |
4096–3240000 | 16384 | 16384 | 16384 | Максимальное количество запросов на подключение, которые могут быть поставлены в очередь для любого заданного слушающего сокета. Верхний предел значения параметра невыполненной работы, передаваемого в функцию listen(2). Если аргумент невыполненной работы больше somaxconn, то он усекается до этого предела без уведомления. |
net.core.netdev_max_backlog |
1000–3240000 | 1000 | 1000 | 1000 | Максимальное количество пакетов, поставленных в очередь на стороне ввода, когда интерфейс получает пакеты быстрее, чем ядро может их обработать. |
net.core.rmem_max |
212992–134217728 | 1048576 | 1048576 | 212992 | Максимальный размер буфера сокета приема в байтах. |
net.core.wmem_max |
212992–134217728 | 212992 | 212992 | 212992 | Максимальный размер буфера сокета отправки в байтах. |
net.core.optmem_max |
20480–4194304 | 20480 | 131072 | 20480 | Максимальный размер вспомогательного буфера (буфера памяти параметров) для каждого сокета. Память параметров сокета используется в некоторых случаях для хранения дополнительных структур, относящихся к использованию сокета. |
net.ipv4.tcp_max_syn_backlog |
128–3240000 | 16384 | 16384 | 16384 | Максимальное количество запросов на подключение в очереди, которые не получили подтверждение от подключающегося клиента. Если это число превышено, ядро начинает удаление запросов. |
net.ipv4.tcp_max_tw_buckets |
8000–1440000 | 262144 | 262144 | 131072 | Максимальное количество TIME-WAIT сокетов, удерживаемых системой одновременно. Если это число превышено, сокет TIME-WAIT немедленно уничтожается и выводится предупреждающее сообщение. |
net.ipv4.tcp_fin_timeout |
5–120 | 60 | 60 | 60 | Время, в течение которого осиротевшее соединение (более не используемое ни одним приложением) остается в состоянии FIN_WAIT_2, прежде чем оно будет прервано на локальной стороне. |
net.ipv4.tcp_keepalive_time |
30–432000 | 7200 | 7200 | 7200 | Частота отправки сообщений keepalive протоколом TCP, если включена функция keepalive. |
net.ipv4.tcp_keepalive_probes |
1–15 | 9 | 9 | 9 | Число проб keepalive, отправляемых протоколом TCP, пока он не определит, что подключение разорвано. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | 75 | 75 | Частота отправки проб. Если умножить это значение на tcp_keepalive_probes, получится время завершения подключения, которое не отвечает, после запуска проб. |
net.ipv4.tcp_tw_reuse |
2 | 2 | 2 | Разрешает повторное использование TIME-WAIT сокетов для новых подключений, когда оно безопасно с точки зрения протокола. |
|
net.ipv4.ip_local_port_range |
Первое: 1024 - 60999 и Последний: 32768 - 65535] | Первый: 32768, последний: 60999 | Первый: 32768, последний: 60999 | Первый: 32768, последний: 60999 | Диапазон локальных портов, используемых для выбора локального порта при передаче трафика TCP и UDP. Диапазон состоит из двух чисел: первый локальный порт, разрешенный для трафика TCP и UDP на узле агента, а также последний номер локального порта. |
net.ipv4.neigh.default.gc_thresh1 |
128–80000 | 4096 | 4096 | 4096 | Минимальное количество записей, которые могут находиться в кэше ARP. Сборка мусора не активируется, если количество записей ниже этого параметра. |
net.ipv4.neigh.default.gc_thresh2 |
512–90000 | 8192 | 8192 | 8192 | Максимальное мягкое количество записей, которые могут находиться в ARP кэше. Этот параметр, возможно, является наиболее важным, так как сборка мусора ARP инициируется примерно через 5 секунд после достижения этого мягкого предела. |
net.ipv4.neigh.default.gc_thresh3 |
1024–100000 | 16384 | 16384 | 16384 | Строгое максимальное количество записей в кэше ARP. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | Динамическое вычисление | Динамическое вычисление | Динамическое вычисление |
nf_conntrack — это модуль, отслеживающий записи подключения для NAT в Linux. Модуль nf_conntrack использует хэш-таблицу для сохранения записи установленного подключения протокола TCP.
nf_conntrack_max — максимальное количество узлов в хэш-таблице, то есть максимальное число подключений, поддерживаемое модулем nf_conntrack, или размер таблицы отслеживания подключений.
Значение по умолчанию динамически вычисляется на основе системной памяти с помощью формулы: RAM_in_bytes / 16384 (или RAM_in_MB * 64). Например, виртуальная машина с 8 ГБ ОЗУ по умолчанию имеет приблизительно 524 288 подключений. Фактические значения зависят от размера виртуальной машины и доступной памяти. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | Динамическое вычисление | Динамическое вычисление | Динамическое вычисление |
nf_conntrack — это модуль, отслеживающий записи подключения для NAT в Linux. Модуль nf_conntrack использует хэш-таблицу для сохранения записи установленного подключения протокола TCP.
nf_conntrack_buckets — размер хэш-таблицы.
Значение по умолчанию динамически вычисляется на основе системной памяти с помощью формулы: RAM_in_bytes / 16384с не менее чем 1024 контейнерами и максимум 262 144 контейнерами. По умолчанию nf_conntrack_max обычно установлено на nf_conntrack_buckets * 4. Фактические значения зависят от размера виртуальной машины и доступной памяти. |
Ограничения рабочей роли Linux
Как и в случае с пределами дескрипторов файлов, количество рабочих процессов или потоков, которые может создать процесс, ограничено параметром ядра и предельным числом пользователей. Предельное число пользователей в AKS не ограничено. В следующей таблице перечислены параметры ядра, которые можно настроить для каждого пула узлов:
| Setting | По умолчанию Ubuntu 22.04 | По умолчанию Ubuntu 24.04 | Azure Linux 3.0 по умолчанию | Description |
|---|---|---|---|---|
kernel.threads-max |
Динамическое вычисление | Динамическое вычисление | Динамическое вычисление | Процессы могут запускать рабочие потоки. Максимальное число создаваемых потоков задается параметром ядра kernel.threads-max.
Значение по умолчанию вычисляется динамически на основе системной памяти с помощью формулы( total_ram_pages / 4 где каждая страница обычно составляет 4 КБ). Фактические значения зависят от размера виртуальной машины и доступной памяти. |
Виртуальная память Linux
В следующей таблице перечислены параметры ядра, которые можно настроить для каждого пула узлов, чтобы оптимизировать работу подсистемы виртуальной памяти (VM) ядра Linux и writeout переноса грязных данных на диск:
| Setting | Допустимые значения или интервал | По умолчанию Ubuntu 22.04 | По умолчанию Ubuntu 24.04 | Azure Linux 3.0 по умолчанию | Description |
|---|---|---|---|---|---|
vm.max_map_count |
65530 | 1048576 | 1048576 | Этот файл содержит максимальное количество областей карты памяти, которые может иметь процесс. Области таблицы распределения памяти используются как следствие вызова malloc непосредственно функциями mmap, mprotect и madvise, а также при загрузке общих библиотек. |
|
vm.vfs_cache_pressure |
1 - 100 | 100 | 100 | 100 | Это процентное значение управляет тенденцией освобождения ядром памяти, которая используется для кэширования объектов directory и inode. |
vm.swappiness |
0–100 | 60 | 60 | 60 | Этот элемент управления используется для определения того, насколько агрессивно ядро переключает страницы памяти. Более высокие значения повышают агрессивность, более низкие значения уменьшают объем обмена. Значение 0 указывает ядру не начинать своп, пока количество свободных и сохраненных в файл страниц не будет меньше порога в зоне. |
swapFileSizeMB |
1 МБ — размер временного диска (/dev/sdb) | Нет | Нет | Нет | SwapFileSizeMB указывает размер в МБ файла буфера, который необходимо создать на узлах агента из этого пула узлов. |
transparentHugePageEnabled |
always, madvise, never |
always |
always |
madvise |
Прозрачные огромные страницы — это функция ядра Linux, предназначенная для повышения производительности благодаря более эффективному использованию аппаратного обеспечения для сопоставления памяти вашего процессора. Если включено, ядро пытается выделить hugepages всякий раз, когда возможно, и любой процесс Linux получает страницы размером 2 МБ, если регион размером 2 МБ имеет естественное выравнивание. В некоторых случаях, когда hugepages включены по всей системе, приложения могут в конечном итоге выделять больше ресурсов памяти. Приложение может mmap выделять большой регион, но использовать только 1 байт из него; в таком случае страница размером 2 МБ может быть выделена вместо страницы размером 4 КБ без серьезной необходимости. В этом сценарии можно отключить функцию hugepages для всей системы или использовать ее только в регионах MADV_HUGEPAGE madvise. |
transparentHugePageDefrag |
always, , deferdefer+madvise, madvisenever |
madvise |
madvise |
madvise |
Это значение определяет, должно ли ядро агрессивно применять сжатие памяти для повышения доступности hugepages. |