Технология

Обзор нововведений Kubernetes 1.27

Автор: PlaysDev
Опубликовано: 18.07.2023

В этом кратком обзоре мы расскажем об основных улучшениях и нововведениях. В конце каждого пункта будут ссылки на KEPы для более детального ознакомления.

Режим stable

Заморозка реестра образов k8s.gcr.io

Проект Kubernetes создал и запускает реестр образов registry.k8s.io, который полностью контролируется сообществом. Это означает, что старый реестр k8s.gcr.io будет заморожен и никакие образы для Kubernetes и связанных с ним подпроектов не будут публиковаться в старом реестре.

Какие изменения это вносит для разработчиков и участников проекта?

Если вы являетесь контрибьютором подпроекта, вам необходимо обновить свои манифесты и Helm-чарты, чтобы использовать новый реестр. Детальнее вы можете ознакомиться здесь.

Какие изменения это вносит для пользователей?

  • Релиз Kubernetes v1.27 не будет опубликован в реестре k8s.gcr.io.
  • Патч-релизы для v1.24, v1.25 и v1.26 больше не будут добавляться в старый реестр.
  • Начиная с версии v1.25, реестр образов по умолчанию установлен как registry.k8s.io. Это значение можно изменить в kubeadm и kubelet, но установка его как k8s.gcr.io не будет работать для новых релизов, так как они не будут доступны в старом реестре.
  • Если вы хотите повысить надежность вашего кластера и избавиться от зависимости от реестра, принадлежащего сообществу, рекомендуется рассмотреть возможность создания локальных зеркал реестров. Некоторые облачные провайдеры могут предоставлять готовые решения для этого.

SeccompDefault переходит в режим stable

Для использования профиля по умолчанию seccomp необходимо запускать kubelet с включенным флагом командной строки —seccomp-default на каждом узле, где вы планируете его использовать. При включении этого флага, kubelet будет использовать RuntimeDefault seccomp профиль по умолчанию, который определяется контейнерным рантаймом, вместо режима Unconfined (seccomp отключен).

Профили по умолчанию направлены на обеспечение надежных настроек безопасности, сохраняя при этом функциональность рабочей нагрузки. Важно отметить, что профили по умолчанию могут отличаться в зависимости от контейнерных рантаймов и их версий.

Детальнее вы можете ознакомиться здесь.

Бета-версия

Pod Scheduling Readiness переходит в бета-версию

Поды считаются готовыми к планированию сразу после того, как созданы. Планировщик Kubernetes находит узлы для размещения всех ожидающих подов. Однако в реальности некоторые поды могут находиться в состоянии miss-essential-resources (“отсутствия необходимых ресурсов”) в течение длительного времени. Эти поды «сбивают с толку» планировщик и компоненты типа Cluster Autoscaler.

Путем указания/удаления поля .spec.schedulingGates вы можете контролировать, когда под будет готов для рассмотрения планирования.

Поле schedulingGates (значение по умолчанию nil) содержит список строк, и каждая строка воспринимается как условие, которое должно быть выполнено, чтобы под был готов для планирования. Это поле может быть установлено только при создании пода . После создания, каждое schedulingGate может быть удалено в произвольном порядке, но добавление нового scheduling gate запрещено.

Доступ к логам узлов через Kubernetes API

Чтобы посмотреть логи сервисов на узле, например, containerd, kubelet’а и т.п., администратор кластера Kubernetes должен подключиться к узлу по SSH и смотреть файлы логов напрямую. Более простым способом было бы задействование CLI kubectl для просмотра логов на узле по аналогии с тем, как это делается при других взаимодействиях с кластером.

Для использования этой функции убедитесь, что включена опция NodeLogQuery на узле, а также, что опции конфигурации kubelet enableSystemLogHandler и enableSystemLogQuery установлены в значение true. Администратор кластера может опробовать эту альфа-версию функции на всех узлах своего кластера или на их подмножестве.

Режим доступа ReadWriteOncePod для PersistentVolume переходит в бета-версию

В Kubernetes v1.22 был введен новый режим доступа ReadWriteOncePod для PersistentVolume (PV) и PersistentVolumeClaim (PVC). Этот режим доступа позволяет ограничить доступ к томам только одному поду в кластере, гарантируя, что только один под может записывать данные в том в определенный момент времени. Это особенно полезно для состояний, требующих единственного доступа к хранилищу для записи.

Бета-версия ReadWriteOncePod добавляет поддержку приоритетного планировщика для подов, использующих PVC с режимом доступа ReadWriteOncePod. Приоритетный планировщик позволяет более приоритетным подам вытеснять поды с более низким приоритетом. Например, если для под (A), запланированного с использованием PVC ReadWriteOncePod, найден другой под (B), также использующий тот же PVC и под (A) имеет более высокий приоритет, планировщик вернет статус «Невозможно запланировать» и попытается вытеснить под (B).

Учет PodTopologySpread после выполнения rolling upgrades

С помощью matchLabelKeys пользователям не нужно обновлять поле pod.spec между разными версиями. Контроллер просто должен устанавливать различные значения для одного и того же ключа лейбла для разных версий. Планировщик автоматически будет использовать значения, опираясь на matchLabelKeys. Например, если пользователи используют Deployment, они могут использовать метку, связанную с pod-template-hash, которая автоматически добавляется контроллером развертывания, для отличия разных версий в рамках одного развертывания.

Ускоренное монтирование тома с применением меток SELinux

В этом релизе функция применения лейблов SELinux к томам, используемым подами, переходит в бета-версию. Функция позволяет пропустить этап переназначения лейблов и тем самым ускорить монтирование тома и , соответственно, ускорить запуск контейнера.

Ядро Linux с поддержкой SELinux позволяет при первом монтировании всего тома установить метку SELinux на весь том с помощью опции монтирования -o context=. Таким образом, все файлы на томе получают правильную метку, без необходимости рекурсивного обхода и переназначения.

Реконструкция VolumeManager переходит в бета-версию

Цель — уменьшить время, необходимое kubelet’у для восстановления информации о примонтированных томах после перезапуска.

Такая информация теряется после перезапуска kubelet’а, и для ее восстановления ему приходится сопоставлять данные сервера API и ОС хоста. Kubelet проверяет, какие поды должны быть запущены и какие тома примонтированы на самом деле.

Однако этот процесс несовершенен и лишен некоторой ключевой информации, например, о том, какие опции для монтирования томов использовал прежний kubelet.

Этот KEP снабжен отдельным переключателем функциональности (feature flag) NewVolumeManagerReconstruction, при включении которого на узле вы получаете улучшенное обнаружение смонтированных томов при запуске kubelet.

Поддержка gRPC для проб контейнеров

Liveness, Readiness и Startup probes — три разных типа проверки состояния пода. Сейчас они работают по протоколам HTTP(S) и TCP. Новая фича добавляет поддержку gRPC — открытого фреймворка для удаленного вызова процедур, который часто используется в микросервисной архитектуре.

Возможность использовать встроенный gRPC среди прочего избавляет от необходимости использовать сторонние инструменты для проверки состояния контейнеров вроде grpc_health_probe.

Добавление аннотации для определения контейнера по умолчанию

В поды была добавлена аннотация kubectl.kubernetes.io/default-container для определения контейнера по умолчанию.

Это упрощает использование таких инструментов, как kubectl logs или kubectl exec на подах с sidecar-контейнерами.

Список устаревших или удаленных фичей

Ниже приведен список переключателей функциональности, флагов и т.п., которые признаны устаревшими в Kubernetes 1.27:

Устаревшие версии API:

  • Kubeadm v1beta2; миграцию на v1beta3 можно провести с помощью kubeadm config migrate.
  • resource.k8s.io / v1alpha1.PodScheduling: переход на resource.k8s.io / v1alpha2.PodSchedulingContext.
  • DynamicResourceManagement v1alpha1: переход на v1alpha2.
  • CSIStorageCapacity: Storage.k8s.io/v1beta1: переход на v1.

Устаревшие примитивы — перейти на альтернативу до выхода следующего релиза:

  • Аннотации seccomp.security. alpha.kubernetes.io/pod и container.seccomp.security. alpha.kubernetes.io: вместо них используйте поле securityContext.seccompProfile.
  • Плагин допуска SecurityContextDeny.
  • Аннотация service.kubernetes.io/ topology-aware-hints: переход на service.kubernetes.io/ topology-mode.

Удаленные примитивы — перейти на альтернативу до обновления:

Вместо k8s.gcr.io используйте registry.k8s.io.

Переключатели функциональности:

  • IPv6DualStack
  • ExpandCSIVolumes
  • ExpandInUsePersistentVolumes
  • ExpandPersistentVolumes
  • ControllerManagerLeaderMigration
  • Миграция CSI
  • CSIInlineVolume
  • EphemeralContainers
  • LocalStorageCapacityIsolation
  • NetworkPolicyEndPort
  • StatefulSetMinReadySeconds
  • IdentifyPodOS
  • DaemonSetUpdateSurge

appProtocol: kubernetes.io/grpc.

Флаг kube-apiserver’а: —master-service-namespace.

Флаги CLI: —enable-taint-manager и —pod-eviction-timeout.

Флаги kubelet’а: —container-runtime, —master-service-namespace.

In-tree-плагин дискового хранилища Azure.

Поставщик учетных данных kubelet’а AWS: используйте ecr-credential-provider.

Метрики:

  • node_collector_ evictions_number заменена на node_collector_ evictions_total
  • scheduler_e2e_scheduling _duration_seconds заменена на scheduler_scheduling_attempt _duration_seconds

Вам также может понравиться

Экспертиза
15 августа, 2023
PlaysDev
Идеальный разработчик в понимании заказчика
В этой статье мы рассмотрим как выглядит идеальный разработчик в понимании заказчика: за какими soft-скиллами охотятся клиенты
Читать
Технология
29 февраля, 2024
PlaysDev
Google Gemma — новая нейросеть с открытым кодом
Обзор свежего релиза Google Gemma. Чем Gemma отличается от Gemini и в чем ее ключевые преимущества? Какие технологии использует Gemma и почему разработчикам стоит попробовать ее использовать?
Читать
Индустрия
20 марта, 2024
PlaysDev
Тренды мобильной разработки в 2024: обзор рынка и популярных технологий
Расходы на мобильные приложения стабильно растут на протяжении последних 5 лет согласно отчету Statista, при этом увеличивается и количество новых мобильных пользователей. Главными тенденциями 2024 года стали блокчейн технологии, мультиплатформенная разработка, использование биометрический данных, и др.
Читать
Индустрия
2 марта, 2023
PlaysDev
Аутстаффинг и Аутсорсинг в 2023: Обзор рынка, тенденции и ожидания
В этой статье мы рассмотрим, что такое ИТ-аутстаффинг и аутсорсинг что ждет эти направления в 2023 году.
Читать
Экспертиза
12 апреля, 2024
PlaysDev
Онбординг или адаптация сотрудников — что это такое, этапы и методы
Что такое онбординг? Как не потерять нового коллегу после адаптационного периода и помочь влиться в коллектив без потерь. Рассказываем про практику Google в области онбординга и другие современные способы удержать сотрудника.
Читать
Технология
5 июня, 2024
PlaysDev
Тренды ИИ 2024: подробно про область применения
Почему бизнесы инвестируют в ИИ? Рассказываем, какие достижения удалось реализовать с помощью искусственных помощников. Оцениваем основные тренды использования ИИ по отраслям.
Читать
Экспертиза
22 мая, 2024
PlaysDev
Аутстаффинг ИТ-специалистов: когда заказчику выгодно привлечь разработчиков извне?
Что такое аутстаффинг? Разбираемся, почему аутстаффинг это выгодно и рассказываем про основные модели аутстафф-сотрудничества. Когда бизнесу может потребоваться временный сотрудник?
Читать
Индустрия
3 мая, 2024
PlaysDev
Грейды в IT — Как Devops инженеру оценить свой грейд?
Как IT-специалисты оценивают свой опыт и почему грейд – очень размытое понятие? Рассказываем про грейдирование на примерах Google, Meta, Amazon.
Читать
Технология
30 августа, 2023
PlaysDev
Будущее Terraform: переход с публичной лицензии на лицензию Business Source (BSL) v1.1
В данной статье будет рассмотрено будущее Terraform: переход с публичной лицензии на лицензию Business Source (BSL) v1.1.
Читать
Экспертиза
8 ноября, 2023
PlaysDev
Софт скиллы ИТ-специалиста: что это и почему они важны?
Термин применяется для обозначения уровня профессионализма: «high skills» - делаем что-то хорошо или «low skills» - недостаточно компетентны.
Читать