Что нового в Kubernetes v1.23? — CloudSavvy ИТ

Фотография логотипа Kubernetes на смартфонеПетр Сват / Shutterstock.com

Kubernetes v1.23 — последний крупный выпуск 2021 года. Последнее обновление ведущей платформы оркестровки контейнеров продвигает 11 функций в стабильный канал, помечая их как подходящие для общего использования. Вот что вам нужно знать перед обновлением.

Сеть с двойным стеком IPv4 / IPv6

Сеть с двойным стеком IPv4 / IPv6 обычно доступна в версии 1.23. Эта функция позволяет назначать модулю или службе адреса IPv4 и IPv6. Для этого вам потребуются сетевые интерфейсы с двойным стеком на ваших узлах и поддерживающий сетевой плагин CNI.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Поле .spec.ipFamilyPolicy определяет, получает ли Pod или Service интерфейс с одним или двумя стеками. Установите для него значение PreferDualStack или RequireDualStack, чтобы активировать поддержку двойного стека. По умолчанию используется SingleStack.

спецификация: ipFamilyPolicy: RequireDualStack

В режимах двойного стека IP-адреса сервисного кластера будут выделяться как из адресного пространства IPv4, так и из адресного пространства IPv6. Вы можете установить предпочтительный порядок стека с помощью поля .spec.ipFamilies. Это также позволяет указать IPv4 или IPv6 в качестве семейства для режима SingleStack.

Эфемерные объемы

Эфемерные тома — еще одна градация к статусу GA. Эфемерный том привязан к модулю и удаляется при завершении работы модуля. Он работает со всеми существующими драйверами хранилища, поддерживающими динамическое предоставление.

Эфемерные тома создаются путем вложения volumeClaimTemplate в новое эфемерное поле в разделе томов спецификации Pod. VolumeClaimTemplate должен напоминать обычный PersistentVolumeClaim.

spec: volume: — name: ephemeral-volume ephemeral: volumeClaimTemplate: metadata: labels: type: example-volume-type spec: accessModes: [«ReadWriteOnce»]
storageClassName: ресурсы класса-хранилища: запросы: хранилище: 1Gi

Хотя «эфемерный» объем поначалу может показаться странным, есть несколько вариантов использования этой функции. Тома часто используются для предоставления процессу пода значений конфигурации первого запуска, доступ к которым осуществляется только один раз. В этом сценарии идеален эфемерный модуль, так как он будет удален при остановке модуля вместо того, чтобы повторно присоединяться к будущим модулям, которые никогда не будут использовать данные. Другой возможный случай — это процессы, которые кэшируют большие объемы данных, но не нуждаются в том, чтобы они сохранялись между отдельными завершениями Pod.

Автоматическое масштабирование горизонтальных модулей v2

По прошествии пяти лет версия 2 API горизонтального автомасштабирования модулей достигла стабильного уровня. Автомасштабирование позволяет Kubernetes автоматически настраивать количество реплик ваших развертываний, ReplicaSets и StatefulSets, чтобы реагировать на изменения метрик в реальном времени.

В настоящее время эта акция не влияет на исходную реализацию автомасштабирования. API v1 по-прежнему можно использовать, и его поддержка не прекращается. Новый API автомасштабирования / v2 заменяет автоматическое масштабирование / v2beta2 предыдущих выпусков Kubernetes.

Использование API v2 выгодно, поскольку вы можете определять решения по автомасштабированию, основанные на пользовательских показателях. Контроллер автомасштабирования будет делать произвольные запросы API, чтобы информировать об изменениях реплик, вместо того, чтобы ограничивать вас условиями ЦП и памяти узла.

Пропуск изменений владения томом при запуске модуля

Использование поля fsGroup на томе для определения его владельца в настоящее время заставляет Kubernetes рекурсивно выполнять chown () и chmod () для содержимого тома каждый раз, когда он монтируется к поду. Это может стать серьезной проблемой для производительности при работе с большими томами, состоящими в основном из небольших файлов. Pod не запустится, пока не будут изменены разрешения.

Kubernetes поддерживает поле fsGroupChangePolicy, которое позволяет вам переопределить это поведение. Теперь он общедоступен через поле securityContextfield пода. Установка для политики изменения значения OnRootMismatch вызовет chown () только в том случае, если корень тома имеет неправильные разрешения. Это ускоряет запуск модуля, когда разрешения уже совместимы с объявлением fsGroup.

securityContext: fsGroupChangePolicy: OnRootMismatch

Другие основные моменты

Есть несколько примечательных дополнений к альфа- и бета-версиям API. Бета-канал теперь включает:

  • Структурированное ведение журнала — больше компонентов поддерживают формат ведения журнала структурированного текста, который обеспечивает вывод в формате JSON. Структурированные журналы легче анализировать внешними инструментами, что упрощает процессы ввода журналов и запросов.
  • PodSecurity API — PodSecurity заменяет старый контроллер допуска PodSecurityPolicy, который позволяет применять правила безопасности на уровне пространства имен. PodSecurity предоставляет механизм для определения того, что поды не могут существовать в пространстве имен, если им не хватает определенных средств защиты контекста безопасности.
  • Поддержка миграции CSI — эта функция обеспечивает простой способ перехода от встроенного драйвера хранилища, который является частью Kubernetes API, например kubernetes.io/aws-ebs, к поставляемому драйверу CSI. Пользователи не должны замечать никаких изменений в своем хранилище после завершения миграции. Эта функция сейчас является бета-версией для AWS EBS, Azure Disk и GCE PD. Он помечен как альфа для Ceph RBD и Portworx.

В альфа-канале дебютируют некоторые дополнительные возможности:

  • Проверка поля на стороне сервера — проверка поля на стороне сервера отправляет предупреждения с сервера, когда клиент пытается создать ресурсы, содержащие неизвестные или повторяющиеся поля. Kubernetes исторически отбрасывал эти поля, что могло приводить к путанице. Включение шлюза функции ServerSideFeatureValidation позволяет решить эту проблему.
  • Проверка языка выражений для CRD — новый встроенный язык выражений упрощает проверку пользовательских определений ресурсов (CRD). Это помогает решить абстрактную природу CRD, когда в настоящее время нельзя гарантировать, что определяемые пользователем ресурсы удовлетворяют требованиям существующих контроллеров и клиентских приложений.
  • Поддержка OpenAPI v3 — OpenAPI v3 был добавлен за воротами функций (OpenAPIV3). Если этот параметр включен, вы можете запросить спецификацию OpenAPI v3.0 для любого из типов объектов Kubernetes, предоставляя способ программного обнаружения и перемещения ресурсов с помощью открытых стандартов API.

Вывод

Kubernetes v1.23 стабилизирует несколько важных функций, включая сеть с двумя стеками, новый настраиваемый Horizontal Pod Autoscaler и эфемерные тома для работы с некритическими данными. Также есть десятки других изменений, помимо двух устаревших: интерфейс драйвера хранилища FlexVolume, предшествующий CSI, и несколько флагов ведения журнала, которые будут удалены в будущем.

В общей сложности 11 существующих функций получили статус GA. 17 дополнительных возможностей теперь помечены как бета, а еще 19 — это полностью новые возможности, которые появятся в альфа-версии. Стратегия выпуска Kubernetes фокусируется на ранней доставке функциональности, позволяет сообществу направлять разработку и помогает оптимизировать реализацию API. Хотя альфа- или бета-версии обычно переходят в стабильную версию, это не гарантируется. API-интерфейсы могут значительно измениться или полностью удаляться в процессе разработки.

Вы можете прочитать полные примечания к выпуску v1.23 на GitHub. Загрузки доступны на странице релизов. Вы можете обновить существующий кластер, созданный с помощью Kubeadm, следуя инструкциям в документации. Этот процесс будет отличаться для пользователей предложений управляемого облака и сторонних дистрибутивов Kubernetes.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.