CCE прошел программу Certified Kubernetes Conformance Program и является сертифицированным предложением Kubernetes. Этот раздел описывает изменения, внесённые в Kubernetes 1.25 по сравнению с Kubernetes 1.23.
Индексы
Новые функции
Kubernetes 1.25
- Pod Security Admission стабильна. PodSecurityPolicy устарела.
PodSecurityPolicy заменена на Pod Security Admission. Для деталей о миграции см Миграция с PodSecurityPolicy на встроенный контроллер Pod Security Admission.
- Эфемерные контейнеры стабильны.
An эфемерный контейнер Запускается временно в существующем pod. Полезно для отладки, особенно когда kubectl exec нельзя использовать для проверки контейнера, который выходит из строя, или его образ не содержит отладочного инструмента.
- Поддержка cgroups v2 переходит в стабильную фазу.
Kubernetes поддерживает cgroups v2. cgroups v2 предоставляет некоторые улучшения по сравнению с cgroup v1. Для деталей см О cgroup v2.
- SeccompDefault переходит в бета.
Чтобы включить эту функцию, добавьте параметр запуска --seccomp-default=true в kubelet. Таким образом, seccomp устанавливается в RuntimeDefault по умолчанию, повышая безопасность системы. Кластеры v1.25 более не поддерживают seccomp.security.alpha.kubernetes.io/pod и container.seccomp.security.alpha.kubernetes.io/annotation. Замените их на securityContext.seccompProfile поле в pods или контейнерах. Для деталей см Настройте Security Context для pod'а или контейнера.
NoteПосле включения этой функции вызовы системы, необходимые приложению, могут быть ограничены рантаймом. Убедитесь, что отладка проводится в тестовой среде, чтобы приложение не пострадало.
- EndPort в сетевой политике переходит в стабильную фазу.
EndPort в Network Policy стабильна. Эта функция включена в версии 1.21. EndPort добавлен в NetworkPolicy. Можно указать диапазон портов.
- Локальная изоляция емкости эфемерного хранилища стабильна.
Эта функция обеспечивает поддержку изоляции емкости локального эфемерного хранилища между pod'ами, например emptyDir. Если потребление pod'ом общих ресурсов превышает лимит, он будет выгружен.
- Язык выражений проверки CRD переходит в бета.
Это позволяет объявить, как валидировать пользовательские ресурсы с помощью CEL. Для деталей см Расширьте Kubernetes API с помощью CustomResourceDefinitions.
- Введены API KMS v2.
API KMS v2 alpha1 введен для повышения производительности, ротации и улучшения наблюдаемости. Этот API использует AES-GCM вместо AES-CBC и использует DEK для шифрования данных в состоянии покоя (Kubernetes Secrets). Дополнительные операции не требуются. Кроме того, данные можно читать через AES-GCM и AES-CBC. Для деталей см Использование провайдера KMS для шифрования данных.
- Введена готовность сети pod.
Kubernetes 1.25 вводит альфа‑поддержку PodHasNetwork. Этот статус находится в status поле pod'а. Для деталей см Готовность сети pod.
- Две функции, используемые для развертывания приложений, стабильны.
- В Kubernetes 1.25, minReadySeconds для StatefulSets стабильна. Позволяет каждому pod ждать ожидаемый период времени, замедляя развертывание StatefulSet. Для деталей см Minimum ready seconds.
- В Kubernetes 1.25, maxSurge для DaemonSets стабильна. Позволяет рабочей нагрузке DaemonSet запускать несколько экземпляров одного pod на одном узле во время развертывания. Это минимизирует простой DaemonSet для пользователей. DaemonSet не позволяет maxSurge и hostPort использовать одновременно, так как два активных pod не могут делить один и тот же порт на одном узле. Для деталей см Выполните Rolling Update на DaemonSet.
- Предоставлена альфа‑поддержка запуска pod с пользовательскими пространствами имен.
Эта функция сопоставляет root пользователя в pod на ненулевой ID за пределами контейнера. Таким образом контейнер работает как root пользователь, а узел работает как обычный непривилегированный пользователь. Эта функция всё ещё находится в стадии внутреннего тестирования. Требуется включить флаг UserNamespacesStatelessPodsSupport, и среда выполнения контейнера должна поддерживать эту функцию. Для деталей см Kubernetes 1.25: альфа‑поддержка запуска Pods с пользовательскими пространствами имен.
Kubernetes 1.24
- Dockershim удалён из kubelet.
Dockershim был объявлен устаревшим в Kubernetes 1.20 и официально удалён из kubelet в Kubernetes 1.24. Если вы хотите использовать контейнер Docker, переключитесь на cri-dockerd или другие среды выполнения, поддерживающие CRI, такие как containerd и CRI-O.
NoteПроверьте, есть ли агенты или приложения, зависящие от Docker Engine. Например, если docker ps, docker run, and docker inspect используются, убедитесь, что несколько рантаймов совместимы, и переключитесь на стандартный CRI.
- Beta API отключены по умолчанию.
Сообщество Kubernetes обнаружило, что 90 % администраторов кластера не обращали внимания на бета‑API и оставляли их включенными. Однако бета‑функции не рекомендуется использовать, поскольку включённые по умолчанию API в рабочей среде создают риски. Поэтому в версиях 1.24 и позже бета‑API отключаются по умолчанию, но существующие бета‑API сохранят исходные настройки.
- Поддерживается OpenAPI v3.
В Kubernetes 1.24 и более поздних версиях OpenAPI V3 включён по умолчанию.
- Отслеживание ёмкости хранилища стабильно.
В Kubernetes 1.24 и более поздних версиях API CSIStorageCapacity поддерживает раскрытие доступной ёмкости хранилища. Это гарантирует, что pods назначаются на узлы с достаточной ёмкостью хранилища, что уменьшает задержку планирования pods, вызванную ошибками создания и монтирования томов. Для получения подробной информации см. Ёмкость хранилища.
- gRPC‑probe контейнера переходит в бета.
В Kubernetes 1.24 и более поздних версиях gRPC‑probe переходит в бета. Флаг функции GRPCContainerProbe доступен по умолчанию. Подробную информацию о том, как использовать этот probe, см. Настройка Probe.
- LegacyServiceAccountTokenNoAutoGeneration включён по умолчанию.
LegacyServiceAccountTokenNoAutoGeneration переходит в бета. По умолчанию эта функция включена, и для учетной записи службы не генерируется секретный токен автоматически. Чтобы использовать токен, который никогда не истекает, создайте секрет для хранения токена. Подробности см. Секреты токенов учетных записей.
- Конфликт IP-адресов предотвращён.
В Kubernetes 1.24, резервируется мягко пул IP-адресов для статических IP-адресов сервисов. После того как вы вручную включите эту функцию, IP-адреса сервисов будут автоматически выделяться из пула IP-адресов, чтобы минимизировать конфликт IP-адресов.
- Кластеры компилируются на основе Go 1.18.
Kubernetes‑кластеры версий позже 1.24 компилируются на основе Go 1.18. По умолчанию алгоритм хеширования SHA‑1, например SHA1WithRSA и ECDSAWithSHA1, больше не поддерживается для проверки подписи сертификатов. Используйте сертификат, сгенерированный алгоритмом SHA256.
- Максимальное количество недоступных реплик StatefulSet можно настроить.
В Kubernetes 1.24 и более поздних версиях, maxUnavailable параметр можно настроить для StatefulSet, чтобы pods останавливались быстрее во время пошагового обновления.
- Введена альфа‑поддержка не‑грейсфул выключения узла.
Не‑грейсфул выключение узла введено в качестве альфа‑функции в Kubernetes v1.24. Выключение узла считается грейсфул только если менеджер выключения узла kubelet может обнаружить предстоящее действие выключения. Подробности см. Обработка не‑грейсфул выключения узла.
Устаревание и удаление
Kubernetes 1.25
- Владение цепочками iptables очищено.
Kubernetes обычно создаёт цепочки iptables, чтобы гарантировать доставку пакетов данных к назначению. Эти цепочки iptables и их имена предназначены только для внутреннего использования. Эти цепочки никогда не предполагалось включать в какие‑либо гарантии Kubernetes API/ABI. Подробности см. Цепочки IPTables Kubernetes не являются API.
В версиях позже Kubernetes 1.25 kubelet использует IPTablesCleanup для поэтапного переноса генерируемых Kubernetes цепочек iptables, используемых внешними компонентами, чтобы цепочки iptables, такие как KUBE-MARK-DROP, KUBE-MARK-MASQ и KUBE-POSTROUTING, не создавались в NAT‑таблице. Подробнее см. Очистка владения цепочками IPTables.
- Внутренние драйверы томов от поставщиков облачных сервисов удалены.
Kubernetes 1.24
- В Kubernetes 1.24 и более поздних версиях Service.Spec.LoadBalancerIP устарел, поскольку его нельзя использовать для двойных стеков протоколов. Вместо этого используйте пользовательские аннотации.
- В Kubernetes 1.24 и более поздних версиях, параметр --address, --insecure-bind-address, --port, and --insecure-port=0 параметры удалены из kube-apiserver.
- В Kubernetes 1.24 и более поздних версиях параметры запуска --port=0 and --address удалены из kube-controller-manager and kube-scheduler.
- В Kubernetes 1.24 и более поздних версиях, kube-apiserver --audit-log-version and --audit-webhook-version поддерживают только audit.k8s.io/v1. В Kubernetes 1.24, audit.k8s.io/v1[alpha|beta]1 удалён, и только audit.k8s.io/v1 может использоваться.
- В Kubernetes 1.24 и более поздних версиях параметр запуска --network-plugin удалён из kubelet. Этот параметр, специфичный для Docker, доступен только когда среда выполнения контейнеров является Docker и он удалён вместе с Dockershim.
- В Kubernetes 1.24 и более поздних версиях динамическая очистка журналов была отменена и соответственно удалена. Для журналов всех системных компонентов Kubernetes введён фильтр журналов, предотвращающий утечку конфиденциальной информации через журналы. Однако эта функция может блокировать журналы и поэтому отменяется. Подробнее см Динамическая очистка журналов и KEP-1753.
- VolumeSnapshot v1beta1 CRD отменён в Kubernetes 1.20 и удалён в Kubernetes 1.24. Используйте VolumeSnapshot v1.
- В Kubernetes 1.24 и более поздних версиях, аннотация сервиса tolerate-unready-endpoints отменено в Kubernetes 1.11 заменено на Service.spec.publishNotReadyAddresses.
- В Kubernetes 1.24 и более поздних версиях, metadata.clusterName поле отменено и будет удалено в следующей версии.
- В Kubernetes 1.24 и более поздних версиях логика kube-proxy прослушивать NodePorts удалена. Если NodePorts конфликтуют с kernel net.ipv4.ip_local_port_range, TCP‑соединения могут периодически сбойвать, что приводит к сбою проверки работоспособности или исключению сервиса. Перед обновлением убедитесь, что NodePorts кластера не конфликтуют с net.ipv4.ip_local_port_range всех узлов кластера. Подробнее см Kubernetes PR.
Улучшенный Kubernetes 1.25 на CCE
Во время периода обслуживания версии CCE периодически обновляет Kubernetes 1.25 и предоставляет расширенные функции.
Подробности об обновлениях версии кластера см Примечания к выпуску для версий кластера CCE.
Ссылки
Подробнее о сравнении производительности и эволюции функций между Kubernetes 1.25 и другими версиями см. в следующих документах: