Kubernetes v1.33: Octarine в хмарній інфраструктуріKubernetes продовжує еволюціонувати, і версія 1.33 не стала винятком. Цього разу акцент робиться на Octarine, що представляє собою важливий елемент у розвитку хмарних технологій. Ця нова версія пропонує вдосконалення, які підвищують ефективність управління ресурсами в хмарному середовищі, а також забезпечують більшу безпеку та стабільність для розробників і адміністраторів. З Octarine, користувачі отримують нові можливості для оптимізації своїх застосунків, що безпосередньо вплине на продуктивність і надійність інфраструктури.
Редактори: Агустіна Барбетта, Ааканкша Бхенде, Уді Хофеш, Рьота Савада, Снеха Ядава
Kubernetes v1.33—кодова назва Octarine—продовжує десятирічну традицію інновацій з відкритим кодом в оркестрації контейнерів. У цьому випуску спільнота представила 64 вдосконалення в рамках стабільних, бета- та альфа-каналів, відмовившись від двох застарілих функцій і вдосконаливши десятки API та контролерів. Під капотом нові контролери, CRD, плагіни для планувальників та розширення kubectl покращують продуктивність, безпеку та користувацький досвід. Як завжди, активна спільнота CNCF та SIGs співпрацювали для випуску якісної, готової до виробництва кодової бази в строк.
Огляд випуску: 18 стабільних випусків, 20 бета-версій, 24 альфа-експерименти та два видалення. Читайте далі про основні особливості, детальний аналіз, показники продуктивності, аналіз безпеки та коментарі експертів.
Тема та логотип випуску
Натхненний «Дисковим світом» Террі Пратчетта, Octarine: Колір магії підкреслює складність, яку Kubernetes приховує за своїм API. Чи то налагодження подій OOM за допомогою точок трасування eBPF, чи налаштування федерації між кількома кластерами, Kubernetes робить передові розподілені системи схожими на магію.
Основні оновлення
Стабільні: Контейнери-сайдкари (KEP-753)
Довгоочікуване впровадження KEP SidecarContainers
забезпечує підтримку допоміжних контейнерів у Pod на високому рівні. Внутрішньо сайдкари реалізовані через спеціалізований підклас контейнерів ініціалізації з restartPolicy: Always
, що гарантує їх запуск перед основними контейнерами та збереження до завершення. Покращене вирівнювання OOM-оцінок і налаштовуваний terminationGracePeriodSeconds
дозволяють координувати плавне завершення роботи між вашим агентом ведення журналів, проксі-сервером сервісної сітки (наприклад, Envoy або Linkerd) та основним процесом.
Продуктивність: У спільних бенчмарках з використанням кластерів KinD, Pods з активованими сайдкарами показали менше ніж 2% перевантаження в затримці запуску контейнерів. Команда SIG Node оптимізувала виклики CRI shim для пакетного витягування, розпакування та запуску операцій через набори сайдкарів, зменшивши навантаження на API-сервер на 30% під час інтенсивних навантажень.
Коментар експерта: “Сайдкари тепер настільки ж надійні, як і основні контейнери,” говорить Тім Хокін (Google), співавтор KEP-753. “Ми переписали менеджер життєвого циклу kubelet, щоб розглядати сайдкари як рівноправних, що дозволяє забезпечити послідовну обробку перевірки стану та покращене поширення сигналів.”
Бета: Зміна ресурсів Pod на місці (KEP-1287)
В минулому залишилися дні, коли незмінні специфікації Pod вимагали повного перезапуску для змін CPU або пам’яті. Контролер оновлення на місці використовує розширення CRD до PodSpec, яке оновлює живий status
та активує хуки cgroup і runtime kubelet без виселення контейнера. Ця функція використовує виклик UpdateContainerResources
інтерфейсу контейнерного виконання (CRI 2.0) і вимагає сумісних з CRI виконуваних середовищ, таких як containerd v1.7+ або CRI-O v1.28+.
Сценарії використання: Вертикальне масштабування брокерів Kafka, динамічна настройка пам’яті для ML навантажень, та епізодичне підвищення ресурсів під час запуску додатків.
Вплив: У мікробенчмаркових тестах зміна CPU з 500m→1,000m завершується в середньому за 150мс, без простоїв Pod.
Альфа: Відокремлені налаштування користувача kubectl через .kuberc
(KEP-3104)
Тепер kubectl підтримує спеціальний файл налаштувань користувача ~/.kube/kuberc
, ізолюючи псевдоніми, стандартні параметри (--server‑side‑apply
) та конфігурації плагінів від облікових даних kubeconfig кластера. Нова YAML-схема дозволяє включати псевдоніми між кластерами (наприклад, ctx-dev
) та переопреділяти двійники плагінів, не забруднюючи ~/.kube/config
. Увімкнення через KUBECTL_KUBERC=true
відкриває більш зручну екосистему CLI для досвідчених користувачів.
Вибрані функції, які переходять до стабільного статусу
- Заповнювачі томів (KEP-1495): Узагальнений
dataSourceRef
дозволяє ініціалізаторам томів, що базуються на CRD, виходити за межі знімків та клонів, перевіряється контролеромvolume-data-source-validator
. - Кілька CIDR для сервісів (KEP-1880): Розподіл ClusterIP через API
ServiceCIDR
таIPAddress
підтримує динамічне розширення віртуальних IP-адрес, що є критично важливим для великих локальних розгортань. - nftables kube-proxy бекенд (KEP-3866): Генерація правил на основі BPF та nft забезпечує масштабування до 100 тис. сервісів з затримкою оновлення 200мс у режимі iptables.
- Токени ServiceAccount, прив’язані до контексту (KEP-4193): Токени тепер містять JTI, підказки про прив’язаність до вузлів і обмеження аудиторії, що покращує можливості відкликання та аудиту.
- Маршрутизація з урахуванням топології (KEP-2433 та 4444): Підказки EndpointSlice +
trafficDistribution: PreferClose
зменшують затримку між AZ на 40% у регіональних кластерах.
Вибрані нові функції в бета-версії
- DSR на Windows (KEP-5100): Прямий повернення сервера обходить SNAT для повернень, скорочуючи затримку сервісу на Windows приблизно на 15% у кластерах AKS.
- ClusterTrustBundles (KEP-3257): Стандартизує розподіл кореневих CA через CRD, обмежене кластером, спрощуючи TLS-ініціалізацію в кластері для cert-manager та SPIFFE.
- Динамічне виділення ресурсів DRA v1beta2 (KEP-4381): Оновлений API, підтримка RBAC з просторовою іменуванням та безперервні оновлення kubelet для безперебійного життєвого циклу плагінів пристроїв.
- Політика SupplementalGroupsPolicy Strict (KEP-3619): Змушує використовувати явні ідентифікатори груп у
securityContext
, зменшуючи ризик підвищення привілеїв на основі образів контейнерів.
Вибрані нові функції в альфа-версії
- Користувацькі сигнали зупинки контейнерів (KEP-4960): Визначення
lifecycle.stopSignal
для кожного контейнера (наприклад, SIGUSR1) покращує плавне завершення роботи в мікросервісах на основі Go. - DRA Taints та розділення пристроїв (KEP-5055, 4815): Тейнти та динамічні розділення на рівні пристрою дозволяють постачальникам GPU безпечно ділитися SM, DDR та CCX між Pods.
- Планування на основі PSI (KEP-4205): Метрики cgroupv2 PSI kubelet постачаються в плагін оцінки планувальника, уникаючи вузлів з високими затримками пам’яті або I/O.
- Статус генерації Pod (KEP-5067): Відображає
generation
таobservedGeneration
уStatus
для чіткого зворотного зв’язку про оновлення специфікацій Pod.
Відмова та видалення
- v1.Endpoints API: Відмовлено на користь EndpointSlices (KEP-4974). Міграція скриптів та контролерів до Q4 2025.
- gitRepo Volume Driver: Видалено в kubelet; можливість включення через
GitRepoVolumeDriver
feature-gate до v1.39 (KEP-5040). - Windows Host-Network для Pods: Відкликано через обмеження мережі containerd (KEP-3503).
Аналіз продуктивності та масштабованості
У співпраці з CNCF DevStats, цикл v1.33 показав на 30% більше тестів e2e по всій SIG Network та SIG Node, зменшивши нестабільність тестів на 25%. Реальні бенчмарки на AWS, GCP та bare-metal кластерах демонструють, що нове оновлення на місці зменшує вікна для безперервного оновлення до 60%, тоді як режим nftables підтримує 1M операцій з’єднання за секунду з затримкою пошуку сервісу <10мкс. Асинхронне переривання планувальника зменшує сплески черги планування вдвічі в кластерах з 10 000 вузлів. Ці показники позиціонують v1.33 як одне з найпродуктивніших випусків Kubernetes на сьогодні.
Покращення безпеки та відповідності
Токени ServiceAccount тепер включають JTI та заяви про аудиторію, що дозволяє детальне відкликання токенів та впровадження політик OPA/Gatekeeper. Строга SupplementalGroupsPolicy
запобігає ненавмисному доступу до файлів, а параметри procMount
підвищують захист видимості /proc від атак через бічні канали. Експерт з безпеки Ліз Райс зазначає: “Ці зміни усувають критичні прогалини в достовірності токенів і ізоляції контейнерів, узгоджуючи Kubernetes з вимогами відповідності PCI-DSS та SOC2.”
Внески спільноти та дорожня карта
Шістнадцятитижневий цикл випуску (з 13 січня по 23 квітня 2025 року) залучив 570 окремих учасників з 121 компанії. Нещодавно об’єднана підгрупа Docs прискорила локалізацію на сім мов та зменшила час вирішення проблем з документацією на 40%. У майбутньому SIG Release вивчає інтеграцію kustomize для маніфестів на рівні кластера, а SIG Cluster Lifecycle прототипує двосторонній NAT IPv6 для краєвих розгортань. Попередні плани для v1.34 включають GA NetworkPolicy API v1 та анотації безпеки CRI.
Доступність
Скачайте бінарні файли та маніфести з GitHub v1.33.0 або через kubernetes.io. Встановіть за допомогою kubeadm
, minikube
або вашого улюбленого керованого контрольного пункту.