Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Настройка конфигурации узла позволяет настраивать параметры операционной системы или параметры kubelet в соответствии с потребностями рабочих нагрузок. При создании кластера AKS или добавлении пула узлов в кластер можно настроить подмножество часто используемых параметров ОС и kubelet. Чтобы настроить параметры за пределами этого подмножества, можно использовать демон-сет для настройки необходимых конфигураций без потери поддержки AKS для узлов.
Создание кластера AKS с настраиваемой конфигурацией узла
Создание файлов конфигурации
Изменения конфигурации ОС и kubelet требуют создания нового файла конфигурации с параметрами и вашими желаемыми настройками. Если значение параметра не указано, значение по умолчанию будет задано.
Конфигурация Kubelet
Создайте файл linuxkubeletconfig.json
со следующим содержимым.
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
Конфигурация ОС
Создайте файл linuxosconfig.json
со следующим содержимым.
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
Создание кластера с помощью пользовательских файлов конфигурации
При создании кластера можно использовать настраиваемые файлы конфигурации, созданные на предыдущих шагах, чтобы указать конфигурацию kubelet, конфигурацию ОС или оба.
Примечание.
Если при создании кластера указать конфигурацию, то эта конфигурация будет применена только к узлам в начальном пуле узлов. Для всех параметров, не настроенных в JSON-файле, будет использовано значение по умолчанию.
CustomLinuxOsConfig
не поддерживается для типа ОС: Windows.
Создайте новый кластер с помощью пользовательских файлов конфигурации с помощью az aks create
команды и укажите файлы конфигурации. В следующем примере команды создается новый кластер с пользовательскими ./linuxkubeletconfig.json
и ./linuxosconfig.json
файлами:
az aks create --name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
Добавление пула узлов с помощью пользовательских файлов конфигурации
При добавлении пула узлов в кластер можно использовать настраиваемый файл конфигурации, созданный на предыдущем шаге, чтобы указать конфигурацию kubelet.
CustomKubeletConfig
поддерживается для пулов узлов Linux и Windows.
Примечание.
При добавлении пула узлов Linux в существующий кластер можно указать конфигурацию kubelet, конфигурацию ОС или оба. При добавлении пула узлов Windows в существующий кластер можно указать только конфигурацию kubelet. Если при добавлении пула узлов указать конфигурацию, то эта конфигурация будет применена только к узлам в новом пуле узлов. Для всех параметров, не настроенных в JSON-файле, будет использовано значение по умолчанию.
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json
Устранение неполадок конфигураций пользовательских узлов
Подтвердите, что параметры применены
После применения настраиваемой конфигурации узла можно подтвердить применение параметров к узлам, подключившись к узлу и убедившись sysctl
, что изменения конфигурации были сделаны в файловой системе.
Поддерживаемые параметры конфигурации пользовательского узла
Пользовательская конфигурация kubelet
Настраиваемая конфигурация Kubelet поддерживается для пулов узлов Linux и Windows. Поддерживаемые параметры отличаются и описаны ниже.
Настраиваемая конфигурация Linux Kubelet
Параметр | Допустимые значения или интервал | По умолчанию. | Описание |
---|---|---|---|
cpuManagerPolicy |
none, static | ничего | Статическая политика позволяет контейнерам в гарантированных pod с запросами целочисленных ресурсов ЦП обращаться к ЦП с монопольным доступом на узле. |
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 по умолчанию containerD. Этот параметр находится в предварительной версии.
Зарегистрируйте флаг функции "KubeletDefaultSeccompProfilePreview" с помощью команды az feature register с пространством имен --namespace "Microsoft.ContainerService". |
Настраиваемая конфигурация Windows Kubelet
Параметр | Допустимые значения или интервал | По умолчанию. | Описание |
---|---|---|---|
imageGcHighThreshold |
0–100 | 85 | Процент дискового пространства, после заполнения которого всегда выполняется сборка мусора образов. Минимальное использование диска, активирующее сборку мусора. Для отключения автоматической очистки образов установите значение 100. |
imageGcLowThreshold |
0–100, не больше imageGcHighThreshold |
80 | Процент дискового пространства, до заполнения которого сборка мусора образов не вообще выполняется. Минимальное заполнение диска, которое может активировать сборку мусора. |
containerLogMaxSizeMB |
Размер в мегабайтах (МБ) | 10 | Максимальный размер (например, 10 МБ) файла журнала контейнера до его ротации. |
containerLogMaxFiles |
≥ 2 | 5 | Максимальное количество файлов журнала контейнера, которое может присутствовать для контейнера. |
Параметры конфигурации пользовательской ОС Linux
Внимание
Чтобы упростить поиск и удобочитаемость, параметры ОС отображаются в этой статье по их именам, но их следует добавлять в JSON-файл конфигурации или API AKS, используя соглашение верблюжьего регистра.
Например, если изменить параметр vm.max_map_count, необходимо переформатировать значение vmMaxMapCount в файле JSON конфигурации.
Ограничения для дескрипторов файлов
При обслуживании большого количества трафика трафик обычно поступает из большого количества локальных файлов. Вы можете настроить приведенные ниже параметры ядра и встроенные ограничения, чтобы обрабатывать больше процессов или задач за счёт использования части памяти системы.
Настройка | Допустимые значения или интервал | По умолчанию. | Описание |
---|---|---|---|
fs.file-max |
8192–12000500 | 709620 | Максимальное количество дескрипторов файлов, выделяемых ядром Linux. Увеличение этого значения позволяет увеличить максимально допустимое число открытых файлов. |
fs.inotify.max_user_watches |
781250–2097152 | 1048576 | Максимальное количество наблюдений за файлами, разрешенное системой. Каждое контрольное значение занимает примерно 90 байт на 32-разрядном ядре и примерно 160 байт на 64-разрядном ядре. |
fs.aio-max-nr |
65536–6553500 | 65536 | Значение aio-nr показывает текущее количество асинхронных запросов на ввод-вывод в системе. Значение aio-max-nr определяет максимальное значение, до которого может увеличиться aio-nr. |
fs.nr_open |
8192–20000500 | 1048576 | Максимальное число дескрипторов файлов, которые может выделить процесс. |
Настройка сокетов и сети
Для узлов агента, которые должны обрабатывать очень большое количество одновременных сеансов, можно использовать приведенное ниже подмножество параметров TCP и сети, которые можно настроить для каждого пула узлов.
Настройка | Допустимые значения или интервал | По умолчанию. | Описание |
---|---|---|---|
net.core.somaxconn |
4096–3240000 | 16384 | Максимальное количество запросов на подключение, которые могут быть поставлены в очередь для любого заданного слушающего сокета. Верхний предел значения параметра невыполненной работы, передаваемого в функцию listen(2). Если аргумент невыполненной работы больше somaxconn , то он усекается до этого предела без уведомления. |
net.core.netdev_max_backlog |
1000–3240000 | 1000 | Максимальное количество пакетов, поставленных в очередь на стороне ввода, когда интерфейс получает пакеты быстрее, чем ядро может их обработать. |
net.core.rmem_max |
212992–134217728 | 212992 | Максимальный размер буфера сокета приема в байтах. |
net.core.wmem_max |
212992–134217728 | 212992 | Максимальный размер буфера сокета отправки в байтах. |
net.core.optmem_max |
20480–4194304 | 20480 | Максимальный размер вспомогательного буфера (буфера памяти параметров) для каждого сокета. Память параметров сокета используется в некоторых случаях для хранения дополнительных структур, относящихся к использованию сокета. |
net.ipv4.tcp_max_syn_backlog |
128–3240000 | 16384 | Максимальное количество запросов на подключение в очереди, которые еще не получили подтверждение от подключающегося клиента. При превышении этого числа ядро начнет удалять запросы. |
net.ipv4.tcp_max_tw_buckets |
8000–1440000 | 32768 | Максимальное число сокетов timewait , поддерживаемых системой одновременно. Если это число превышено, сокет TIME-WAIT немедленно уничтожается и выводится предупреждающее сообщение. |
net.ipv4.tcp_fin_timeout |
5–120 | 60 | Период времени, в течение которого потерянное (т. е. не указанное ни в одном из приложений) подключение остается в состоянии FIN_WAIT_2, прежде чем оно будет прервано на локальной стороне. |
net.ipv4.tcp_keepalive_time |
30–432000 | 7200 | Частота отправки сообщений keepalive протоколом TCP, если включена функция keepalive . |
net.ipv4.tcp_keepalive_probes |
1–15 | 9 | Число проб keepalive , отправляемых протоколом TCP, пока он не определит, что подключение разорвано. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | Частота отправки проб. Если умножить это значение на tcp_keepalive_probes , получится время завершения подключения, которое не отвечает, после запуска проб. |
net.ipv4.tcp_tw_reuse |
0 или 1 | 0 | Разрешение повторно использовать сокеты TIME-WAIT для новых подключений, если они безопасны с точки зрения протокола. |
net.ipv4.ip_local_port_range |
Первое: 1024 - 60999 и Последний: 32768 - 65535] | Первый: 32768, последний: 60999 | Диапазон локальных портов, используемых для выбора локального порта при передаче трафика TCP и UDP. Состоит из двух чисел: первое число — это первый локальный порт, разрешенный для трафика TCP и UDP на узле агента, а второе число — номер последнего локального порта. |
net.ipv4.neigh.default.gc_thresh1 |
128–80000 | 4096 | Минимальное число записей, которые могут находиться в кэше ARP. Сборка мусора не будет активирована, если число записей меньше значения этого параметра. |
net.ipv4.neigh.default.gc_thresh2 |
512–90000 | 8192 | Мягкий максимум количества записей, которые могут находиться в кэше ARP. Этот параметр является наиболее важным, так как сборка мусора ARP будет активирована примерно через 5 секунд после достижения этого нестрогого максимума. |
net.ipv4.neigh.default.gc_thresh3 |
1024–100000 | 16384 | Строгое максимальное количество записей в кэше ARP. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | 131072 |
nf_conntrack — это модуль, отслеживающий записи подключения для NAT в Linux. Модуль nf_conntrack использует хэш-таблицу для сохранения записи установленного подключения протокола TCP.
nf_conntrack_max — максимальное количество узлов в хэш-таблице, то есть максимальное число подключений, поддерживаемое модулем nf_conntrack , или размер таблицы отслеживания подключений. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | 65536 |
nf_conntrack — это модуль, отслеживающий записи подключения для NAT в Linux. Модуль nf_conntrack использует хэш-таблицу для сохранения записи установленного подключения протокола TCP.
nf_conntrack_buckets — размер хэш-таблицы. |
Ограничения работников
Как и в случае с пределами дескрипторов файлов, количество рабочих процессов или потоков, которые может создать процесс, ограничено параметром ядра и предельным числом пользователей. Предельное число пользователей в AKS не ограничено.
Настройка | Допустимые значения или интервал | По умолчанию. | Описание |
---|---|---|---|
kernel.threads-max |
20–513785 | 55601 | Процессы могут запускать рабочие потоки. Максимальное число создаваемых потоков задается параметром ядра kernel.threads-max . |
Виртуальная память
Приведенные ниже параметры можно использовать для настройки работы подсистемы виртуальной памяти ядра Linux и сброса writeout
измененных данных на диск.
Настройки | Допустимые значения или интервал | По умолчанию. | Описание |
---|---|---|---|
vm.max_map_count |
65530–262144 | 65530 | Этот файл содержит максимальное число областей таблицы распределения памяти для процесса. Области таблицы распределения памяти используются как следствие вызова malloc непосредственно функциями mmap , mprotect и madvise , а также при загрузке общих библиотек. |
vm.vfs_cache_pressure |
1 - 100 | 100 | Это процентное значение управляет тенденцией освобождения ядром памяти, которая используется для кэширования объектов directory и inode. |
vm.swappiness |
0–100 | 60 | Этот элемент управления позволяет определить, насколько агрессивно ядро будет перемещать страницы памяти. Более высокие значения увеличивают агрессивность, а низкие значения снижают объем переключения. Значение 0 указывает ядру не начинать своп, пока количество свободных и сохраненных в файл страниц не будет меньше порога в зоне. |
swapFileSizeMB |
1 МБ — размер временного диска (/dev/sdb) | нет | SwapFileSizeMB указывает размер файла подкачки (в мегабайтах), который будет создан на узлах агента из этого пула узлов. |
transparentHugePageEnabled |
always , madvise , never |
always |
Transparent Hugepages — это компонент ядра Linux, предназначенный повысить производительность за счет более эффективного использования аппаратных средств распределения памяти процессора. Если этот параметр включен, то ядро пытается выделять память hugepages по мере возможности, и любой процесс Linux получает страницы по 2 МБ, если для области mmap задано естественное выравнивание по 2 МБ. В некоторых случаях, когда функция hugepages включена для всей системы, приложения могут в конечном итоге выделить больше ресурсов памяти. Приложение может выделить большую область с помощью mmap , но использовать в ней только 1 байт. В этом случае может быть выделена страница размером в 2 МБ вместо 4 КБ без должной причины. В этом сценарии можно отключить функцию hugepages для всей системы или использовать ее только в регионах MADV_HUGEPAGE madvise . |
transparentHugePageDefrag |
always , , defer defer+madvise , madvise never |
madvise |
Это значение определяет, должно ли ядро агрессивно применять сжатие памяти для повышения доступности hugepages . |
Следующие шаги
- Узнайте, как настроить кластер AKS.
- Узнайте, как обновить образы узлов в кластере.
- Сведения о том, как обновить кластер до последней версии Kubernetes, см. в статье Обновление кластера Службы Azure Kubernetes (AKS).
- Посмотрите список часто задаваемых вопросов об AKS, чтобы найти ответы на некоторые распространенные вопросы об AKS.
Azure Kubernetes Service