Версии Kubernetes
В разделе описаны ключевые особенности поддерживаемых сервисом версий Kubernetes.
Версия 1.31
Поддержка AppArmor объявлена общедоступной.
Для защиты контейнеров с помощью AppArmor необходимо указать appArmorProfile.type в securityContext объекта.
Улучшение надежности Ingress-подключения для kube-proxy объявлено общедоступным.
Функция реализует в kube-proxy механизм для балансировщиков нагрузки, который позволяет плавно закрывать соединения на узлах, открытых через службы с типом LoadBalancer и externalTrafficPolicy: Cluster. Чтобы использовать функцию, kube-proxy должен запускаться в кластере в качестве служебного прокси по умолчанию, а подсистема балансировки нагрузки должна поддерживать отключение соединения.
Функция записи времени последнего изменения статуса постоянных томов объявлена общедоступной.
Каждый объект PersistentVolume содержит новое поле .status.lastTransitionTime, фиксирующее время последнего изменения статуса. Поле будет заполняться при обновлении PersistentVolume и первом изменении статуса — Pending, Bound, Released.
Функция полезна для измерения времени перехода тома из состояния Pending в Bound и предоставления метрик и SLO.
Функция Always Honor PersistentVolume Reclaim Policy перешла в бета-тестирование.
Улучшение гарантирует, что Reclaim Policy для PersistentVolume (PV) будет соблюдаться даже после удаления связанного PersistentVolumeClaim (PVC), предотвращая утечку ресурсов.
Раньше Reclaim Policy, связанный с PV, мог игнорироваться в зависимости от того, был ли PV или PVC удален первым. Следовательно, соответствующий ресурс хранения во внешней инфраструктуре мог не быть удален, даже если Reclaim Policy было установлено на «Delete». Это приводило к потенциальным несоответствиям и утечкам ресурсов.
С введением функции Kubernetes гарантирует, что Reclaim Policy со значением «Delete» будет применен, обеспечивая удаление объекта хранения независимо от последовательности удаления PV и PVC.
Распределение трафика для Services переходит в бета-тестирование и включено по умолчанию.
Поле spec.trafficDistribution для Service позволяет устанавливать предпочтения по способу маршрутизации трафика. Например, значение PreferClose указывает предпочтительную маршрутизацию трафика на эндпоинты, находящиеся в той же зоне, что и клиент.
API VolumeAttributesClass находится в бета-тестировании.
VolumeAttributesClass предоставляет универсальный API, поддерживаемый Kubernetes, для динамического изменения параметров тома, таких как предоставленный IO. Это позволяет рабочим нагрузкам вертикально масштабировать свои тома в реальном времени для оптимизации затрат и производительности, если это поддерживается их провайдером.
Поддержка Image Volume в альфа-тестировании.
Сообщество Kubernetes стремится в будущем использовать больше возможностей искусственного интеллекта (AI) и машинного обучения (ML). Одним из требований, предъявляемых к этим вариантам использования, является поддержка образов и артефактов, совместимых с Open Container Initiative (OCI), непосредственно в качестве собственного источника тома. Это позволяет пользователям сосредоточиться на стандартах OCI, а также хранить и распространять любой контент с использованием реестров OCI.
Учитывая это, в версию Kubernetes 1.31 добавлена новая функция, позволяющая подключать OCI-образ в volume в объекте Pod. Пользователи могут указывать ссылку на образ в volume в объекте Pod и повторно использовать его для монтирования томов в контейнерах. Чтобы опробовать это, необходимо включить функцию увеличения объема изображения.
Ограничения на анонимный доступ к API в альфа-тестировании.
Включив функцию AnonymousAuthConfigurableEndpoints, пользователи могут использовать файл конфигурации аутентификации для настройки эндпоинтов, к которым можно получить доступ с помощью анонимных запросов. Это позволяет пользователям защитить себя от неправильных конфигураций RBAC, которые могут предоставить анонимным пользователям широкий доступ к кластеру.
Подробнее о версии 1.31 читайте в официальном блоге Kubernetes.
Версия 1.30
Поддержка SuccessPolicy для Job в альфа-тестировании.
Теперь при создании Indexed Job можно задать параметр .spec.successPolicy для определения, когда Job может быть объявлена успешной.
Определение минимального количества доменов в PodTopologySpread объявлено стабильным.
Теперь пользователь может задать минимальное число доменов, которые должны быть доступны, даже если они отсутствуют во время планирования запуска новых подов. Если необходимо, домены будут автоматически масштабироваться, и Cluster Autoscaler запросит добавление новых узлов в рамках этих доменов.
Функция Load balancer IP address mode находится в бета-тестировании и включена по умолчанию.
Эта функция позволяет устанавливать режим .status.loadBalancer.ingress.ipMode для Service с типом LoadBalancer. Режим определяет, как ведет себя IP-адрес балансировщика нагрузки. Его можно указать только, если также указано поле .status.loadBalancer.ingress.ip.
Миграция версий хранилища в альфа-тестировании.
Теперь доступен новый встроенный API для StorageVersionMigration.
Структурированная конфигурация для аутентификации находится в бета-тестировании.
Функция структурированной конфигурации для аутентификации — первый шаг к предоставлению более гибкого и расширяемого способа настройки аутентификации в Kubernetes.
Структурированная конфигурация для авторизации находится в бета-тестировании.
Теперь Kubernetes позволяет настраивать цепочки авторизации, которые могут включать несколько вебхуков. Элементы авторизации в этой цепочке могут иметь четко определенные параметры, которые проверяют запросы в определенном порядке, предлагая детальный контроль, например явное отклонение при сбоях.
Функциональность Pod Scheduling Readiness доступна как стабильная функция.
Pod Scheduling Readiness позволяет избегать попытки планирования пода, который определен до того, как кластер получит ресурсы для его размещения на узле. Настраиваемый контроль над разрешением планирования пода позволяет реализовывать механизмы квот, элементы управления безопасностью и другие функции.
Указав или удалив .spec.schedulingGates для kind: Pod, вы можете контролировать, когда под готов к рассмотрению для планирования.
Удален deprecated параметр prune-whitelist для kubectl apply.
Теперь вместо prune-whitelist для kubectl apply используйте prune-allowlist.
Подробнее о версии 1.30 читайте в официальном блоге Kubernetes.
Версия 1.29
Режим доступа ReadWriteOncePod для постоянных томов теперь доступен как стабильная функция.
Режим ReadWriteOncePod гарантирует, что под будет единственным подом в кластере, который может читать том или записывать в него.
Новый параметр matchLabelKeys в PodAffinity и PodAntiAffinity в стадии альфа-тестирования.
Использование параметра позволит контролировать применимость PodAffinity или PodAntiAffinity для подов и повысить точность вычислений во время скользящих обновлений.
Поддержка секретов при расширении тома узла в драйверах CSI объявлена стабильной.
Включение дополнительного поля секретов secretRef в запрос nodeExpandVolume позволяет безопасно и надежно взаимодействовать с системами хранения при расширении тома на узле.
Поддержка очистки устаревших токенов сервисных аккаунтов на основе секретов в стадии бета-тестирования.
LegacyServiceAccountTokenCleanUp помечает устаревшие автоматически сгенерированные секретные токены как недействительные, если они не использовались в течение длительного времени — по умолчанию один год.
Если такие токены не используются еще длительное время после маркировки — по умолчанию один год, они автоматически удаляются.
Шифрование KMS v2 доступно как стабильная функция.
Шифрование сохраняемых данных API в состоянии покоя — одна из мер безопасности кластера Kubernetes. Для этой цели KMS предлагает интерфейс, позволяющий использовать ключи из внешней системы управления ключами.
KMS v2 обеспечивает производительность, ротацию ключей, мониторинг состояния и наблюдаемость.
Рекомендуется использовать KMS v2, KMS v1 по умолчанию отключен.
Управление жизненным циклом узла и метками (taints) разделено на два контроллера.
NodeLifecycleController теперь отвечает за добавление меток (taints) к аварийным узлам, в то время как TaintManager выполняет удаление подов с узлов, помеченных эффектом NoExecute.
Функциональность CRD Validation Expression Language объявлена стабильной.
Теперь, кроме вебхуков, для описания правил можно использовать скриптовый язык CEL.
Подробнее о версии 1.29 читайте в официальном блоге Kubernetes.
- Версия 1.31
- Версия 1.30
- Версия 1.29