Kubernetes прощается со SPDY: как WebSockets меняют стриминг

K8s наконец-то меняет протокол для стриминга — прощай, SPDY, здравствуй, WebSockets. Без паники, старые кластеры пока не сломаются.
Если вы когда-нибудь задавались вопросом, почему kubectl logs --follow иногда ведёт себя как Wi-Fi у бабушки — то ответ может быть в протоколе SPDY. Да, том самом, который Google придумал ещё в далёком 2009-м и который с тех пор тихо живёт в недрах Kubernetes.
Команда K8s решила, что пора двигаться дальше, и начала миграцию с SPDY на WebSockets для стриминга данных (exec, port-forward, logs). По сути, это как заменить старый добрый dial-up на оптоволокно — только без шума модема и с меньшим количеством багов.
Что это значит для разработчика?
- Больше стабильности: WebSockets — это современный стандарт, который лучше держит соединение при переподключениях.
- Меньше головной боли: SPDY был завязан на HTTP/2, а WebSockets работают поверх обычного HTTP/1.1 и HTTP/2. Меньше зависимостей — меньше шансов, что что-то сломается при обновлении.
- Обратная совместимость: Если у вас старый кластер, ничего не сломается — миграция идёт плавно, с поддержкой обоих протоколов.
Но, как водится, дьявол в деталях. Некоторые прокси и балансировщики нагрузки до сих пор не дружат с WebSockets. Так что если ваш kubectl exec вдруг перестанет работать — проверьте, не режет ли ваш любимый nginx WebSocket-заголовки.
Комментарий студии METABYTE: Мы уже обновили свои CI/CD пайплайны и теперь ждём, когда WebSockets починят и kubectl logs --tail=-1 — шутка. Но если ваш кластер вдруг загрустит, мы знаем, как подкрутить гайки.