Как k8s издевался надо мной в юности
Когда я начинал знакомство с k8s, у нас на проекте верхом технологий был Docker, и приложения деплоились вручную из пайплайнов по ssh. k8s тогда уже был на слуху, но его еще не успели объявить новым стандартом, а я только начинал посматривать в его сторону, читая статьи на хабре и смотря редкие доклады про k8s.
Для контекста — это было в районе 2018 года. Некоторые компании уже начинали переезжать в Kubernetes.
Тогда еще можно было встретить людей, уверенных, что docker-compose up -d — это вполне нормальный production-ready deployment.
И в 2025 это тоже так. Если у вас крутится пара сервисов, вам не нужен k8s. Только волосы раньше времени начнут седеть.
Пока ты не работаешь с k8s, кажется, что ручное жонглирование Docker-контейнерами (оркестрация для бедных) и маппинг их портов на хостовую систему (NodePort), а затем прокидывание запросов через Nginx в приложение (читай, Ingress на минималках) — это уже вершина инженерного искусства. И ведь оно действительно работает! Большую часть времени… Пока нода, на которой крутится ingress, не пропадет из сети, потому что сервер ушел в ребут из-за проблем в ядре или обновления системы... И не вернулся 🙂 Потому что апдейт ОС оказался проблемным.
Когда я начинал знакомство с k8s, у нас на проекте верхом технологий был Docker, и приложения деплоились вручную из пайплайнов по ssh. k8s тогда уже был на слуху, но его еще не успели объявить новым стандартом, а я только начинал посматривать в его сторону, читая статьи на хабре и смотря редкие доклады про k8s.
Для контекста — это было в районе 2018 года. Некоторые компании уже начинали переезжать в Kubernetes.
Тогда еще можно было встретить людей, уверенных, что docker-compose up -d — это вполне нормальный production-ready deployment.
Пока ты не работаешь с k8s, кажется, что ручное жонглирование Docker-контейнерами (оркестрация для бедных) и маппинг их портов на хостовую систему (NodePort), а затем прокидывание запросов через Nginx в приложение (читай, Ingress на минималках) — это уже вершина инженерного искусства. И ведь оно действительно работает! Большую часть времени… Пока нода, на которой крутится ingress, не пропадет из сети, потому что сервер ушел в ребут из-за проблем в ядре или обновления системы... И не вернулся 🙂 Потому что апдейт ОС оказался проблемным.
👍2
Но проект растет, появляются новые сервисы, количество контейнеров множится, и вот ты уже вечером сидишь в кресле, осознавая, что весь день потратил на сборку образов, доставку их на сервер, обновление docker-compose.yml, добавление новых адресов в пайплайн, настройку виртуалок через Ansible/Puppet, мониторинг и логирование — и как будто бы провинулся всего на чуть-чуть. В этот момент тебя посещает звоночек: «А точно ли так стоит делать?»
Потом приходит знакомство с k8s. Первые Deployment, Service, Ingress, первые страдания с ConfigMap и Secret, первые попытки понять, что такое Helm. kubectl apply -f кажется магией, а YAML бесит требованием правильного количества пробелов для каждой строки. Но, к удивлению, многие вещи действительно становятся проще.
Например, внезапно оказывается, что можно не писать shell-скрипты для перекладывания образов между серверами, а просто обновлять image в Deployment. Или что перезапуск сервиса можно делать не через docker stop && docker run, а просто сменив replicas в Deployment, а пользователи этого даже и на заметят (если приложение написано по всем канонам 12factor apps). Или что «где у нас логируется сервис?» — это вопрос с ответом «в Loki, смотри по labels», а не «так, дай вспомнить, что там в systemd logs…».
Потом приходит знакомство с k8s. Первые Deployment, Service, Ingress, первые страдания с ConfigMap и Secret, первые попытки понять, что такое Helm. kubectl apply -f кажется магией, а YAML бесит требованием правильного количества пробелов для каждой строки. Но, к удивлению, многие вещи действительно становятся проще.
Например, внезапно оказывается, что можно не писать shell-скрипты для перекладывания образов между серверами, а просто обновлять image в Deployment. Или что перезапуск сервиса можно делать не через docker stop && docker run, а просто сменив replicas в Deployment, а пользователи этого даже и на заметят (если приложение написано по всем канонам 12factor apps). Или что «где у нас логируется сервис?» — это вопрос с ответом «в Loki, смотри по labels», а не «так, дай вспомнить, что там в systemd logs…».
👍2
Да, Kubernetes — это бесконечная кроличья нора инструментов и YAML-конфигураций. Ты начинаешь с простого kubectl apply, потом переходишь на Helm или Kustomize, потом втягиваешься в GitOps, а заканчивается все тем, что ты деплоишь оператор, который берет CRD, из которого в итоге создается Pod с твоим сервисом. А когда тебя спрашивают, что происходит, ты выдаешь что-то вроде: «Ну, у нас тут ArgoCD синкает Helm-чарт с параметрами из SealedSecrets, который в свою очередь провиженится Terraform'ом в CI/CD, а потом Ansible применяет post-install хуки».
С появлением достаточно стабильных (ну, более-менее) managed-решений, можно просто занести денег облачному провайдеру и поднять кластер с полпинка. Главное — не забыть, что SLA 99.95% не распространяется на случаи, когда у провайдера снова сломали сеть между AZ (кто понял, тот понял).
В общем, Kubernetes — это как с Git. Сначала ты его боишься, потом ненавидишь, потом принимаешь, а потом вдруг ловишь себя на мысли, что пишешь kubectl get pods -A быстрее, чем печатаешь «привет» в мессенджере.
С появлением достаточно стабильных (ну, более-менее) managed-решений, можно просто занести денег облачному провайдеру и поднять кластер с полпинка. Главное — не забыть, что SLA 99.95% не распространяется на случаи, когда у провайдера снова сломали сеть между AZ (кто понял, тот понял).
В общем, Kubernetes — это как с Git. Сначала ты его боишься, потом ненавидишь, потом принимаешь, а потом вдруг ловишь себя на мысли, что пишешь kubectl get pods -A быстрее, чем печатаешь «привет» в мессенджере.
🔥14👍3
Привет! На связи Маркус.
Пока мой человек допиливает презентацию для завтрашнего веба и не видит, ловите немного спойлеров (только тсс).
Что будем обсуждать завтра:
🐈 Когда не стоит закручивать гайки в вопросах безопасности
🐈 Нахождение баланса между безопасностью и удобством эксплуатации
🐈 Осознанные компромиссы
В конце будет классный бонус для всех участников веба и ссылки на документацию. Надеюсь, вы уже зарегистрировались в боте? Ссылки на веб придут именно туда.
Если нет — велкам.
Жду вас завтра в 20:00 и неистово мурлыкаю.
Пока мой человек допиливает презентацию для завтрашнего веба и не видит, ловите немного спойлеров (только тсс).
Что будем обсуждать завтра:
В конце будет классный бонус для всех участников веба и ссылки на документацию. Надеюсь, вы уже зарегистрировались в боте? Ссылки на веб придут именно туда.
Если нет — велкам.
Жду вас завтра в 20:00 и неистово мурлыкаю.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👻2👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Мы с Севой и Маркусом уже на низком старте и ждём вас, чтобы поговорить про эффективные инструменты для повышения безопасности.
Ссылки придут в бота за 5 минут до трансляции. Подключайтесь и пишите свои вопросы в чат вебинара.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
Запись вебинара по безопасности
Вчера вечером обсуждали разные инструменты для повышения безопасности. Если не были онлайн, ловите запись.Судя по опросу , у меня в канале очень много DevOps и специалистов ИБ, для вас будет особенно полезно.
➡️ YouTube
➡️ VK Видео
На вебинаре рассказывал про курс «Kubernetes Мега», который стартует в апреле. В нем безопасности посвящены сразу 4 модуля:
🟠 Модуль 3. Аутентификация пользователей в кластере
🟠 Модуль 4. Keycloak
🟠 Модуль 5. Kubernetes Networking
🟠 Модуль 6. Безопасные и доступные приложения в кластере
Подробно с программой каждого модуля и курса в целом — по ссылке.
Специально для подписчиков моего канала я попросил у коллег промокод:
Он круче, чем тот, который был на вебе, потому что дает не только скидку 15% на «Kubernetes Мега» , но и доступ к видеокурсу «Мониторинг и логирование инфраструктуры в Kubernetes». Выгода — 40%, или 61 500 ₽.
➡️ Старт потока — 21 апреля. Занять место — на странице курса.
Вчера вечером обсуждали разные инструменты для повышения безопасности. Если не были онлайн, ловите запись.
На вебинаре рассказывал про курс «Kubernetes Мега», который стартует в апреле. В нем безопасности посвящены сразу 4 модуля:
Подробно с программой каждого модуля и курса в целом — по ссылке.
Специально для подписчиков моего канала я попросил у коллег промокод:
LIHACHEV15
Он круче, чем тот, который был на вебе, потому что дает не только скидку 15% на «Kubernetes Мега» , но и доступ к видеокурсу «Мониторинг и логирование инфраструктуры в Kubernetes». Выгода — 40%, или 61 500 ₽.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6😁2
Дайджест материалов за март
Традиционно собрал в одном посте всё полезное, что было в этом месяце
➡️ Безопасность: интегрируемся с vault
➡️ Как я перестал волноваться и полюбил ротацию секретов
— Часть 1
— Часть 2
➡️ Типичные ошибки найма
➡️ Как нанимать инженеров правильно
➡️ Secret injection webhook
➡️ Защищаем инфраструктуру Kubernetes без боли. Вебинар
— YouTube
— VK Видео
— Rutube
Традиционно собрал в одном посте всё полезное, что было в этом месяце
— Часть 1
— Часть 2
— YouTube
— VK Видео
— Rutube
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1🤔1
Что меня бесит в работе с кубером
k8s - отличный продукт для своих задач, но временами он больше напоминает изощренную вундервафлю, в которую напихали функционала по самые помидоры, да и еще и обильно и часто поливают, чтобы стало еще интересней жить (нам и сейчас хватает, но надо еще усложнить, чтобы не расслаблялись).
Вот несколько вещей, которые расстраивают:
➡️ Бездонная яма абстракций
Тебе нужно просто развернуть свой сервис. Оказывается, что тебе нужен Ingress, чтобы выставить сервис наружу. Потом выясняется, что лучше использовать Gateway API, потому что ingress уже недостаточно модный. Также ты хочешь сервис настроить (configmaps и secrets), сделать «отказоустойчивым» (replicas, pod disruption budget), починить баги с утечками памяти, которые очень сложно найти и проще сервис перезапускать, чем чинить (liveness probe) и так далее. Все это постепенно разрастается, и вот у тебя уже 20 километровых манифестов, которые настраивают сервис по всем лучшим практикам, а чтобы разобраться в этом — нужно время.
➡️ Траблшутинг как искусство
Если что-то пошло не так, то ты не просто берешь и смотришь логи. Ты сначала выясняешь, жива ли нода. Если нет, то почему? Может, нода ушла в
k8s - отличный продукт для своих задач, но временами он больше напоминает изощренную вундервафлю, в которую напихали функционала по самые помидоры, да и еще и обильно и часто поливают, чтобы стало еще интересней жить (нам и сейчас хватает, но надо еще усложнить, чтобы не расслаблялись).
Вот несколько вещей, которые расстраивают:
Тебе нужно просто развернуть свой сервис. Оказывается, что тебе нужен Ingress, чтобы выставить сервис наружу. Потом выясняется, что лучше использовать Gateway API, потому что ingress уже недостаточно модный. Также ты хочешь сервис настроить (configmaps и secrets), сделать «отказоустойчивым» (replicas, pod disruption budget), починить баги с утечками памяти, которые очень сложно найти и проще сервис перезапускать, чем чинить (liveness probe) и так далее. Все это постепенно разрастается, и вот у тебя уже 20 километровых манифестов, которые настраивают сервис по всем лучшим практикам, а чтобы разобраться в этом — нужно время.
Если что-то пошло не так, то ты не просто берешь и смотришь логи. Ты сначала выясняешь, жива ли нода. Если нет, то почему? Может, нода ушла в
NotReady
? А если контейнер рестартится, то это проблема readiness probe, OOMKill или что-то еще? И это все надо смотреть, анализировать и разбираться, что отнимает время. Конечно же все эти шаги замечательно автоматизируются)Please open Telegram to view this post
VIEW IN TELEGRAM
💯4
Ты развернул кластер на одной версии, а через 2 года обнаружил, что твои Helm-чарты больше не работают, потому что API внезапно выпилили. Или CRD внезапно перестал быть обратносовместимым. Или твой сетевой плагин перестал дружить с новой версией kube-proxy. В k8s стабильность есть, но иногда приходится подебажить, что сломалось. С последними версиями, конечно, многие вещи стабилизировались, но когда в проде используешь нечто с
Version: v1beta1
, то спишь чуть менее крепко. Потому что ты накручиваешь сверху CNI, CSI, CRI чтобы все работало, а их выбор довольно велик. Поставив голый k8s, ничего не получишь, кроме подогрева воздуха нодами, на которых будет крутится control plane.Он кажется удобным, пока не начинаешь закапывать в бездну отступов. Что лучше: пробелы или табы?) Helm — мощный инструмент, но требует дисциплины, чтобы не превратить поддержку в дебаг отступов в yaml.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Почему мой сервис недоступен? Вопрос, который может иметь множество причин. Начинаешь перебирать: kube-proxy? DNS? CNI? А может, старый добрый iptables (или новомодный eBPF)? А NetworkPolicy случайно ничего не блочит? И вишенка на торте — Ingress, который ты сам же и настраивал, но почему-то трафик идет совсем не туда. Диагностика сети в k8s — это отдельный вид изощренной пытки. Без глубоких знаний сетевых технологий или опыта Linux-администрирования шансы быстро разобраться стремятся к нулю. Мало знать, как выглядят правила iptables, нужно еще понимать, как отследить прохождение пакета через все эти хитросплетения. А с некоторыми CNI, которые вообще ушли от iptables в сторону eBPF, без опыта работы с сетевыми технологиями вообще можно надолго закопаться.
Но если вам кажется, что k8s сложный, то могу вас уверить, что можно объяснить даже ребенку, как он работает и зачем нужен (но это не точно).
Ловите отличный гайд: https://to.slurm.io/1Jt97Q
А что вас бесит в кубере? Поделитесь в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
CNCF
The Illustrated Children’s Guide to Kubernetes
Brought to you by… Written by: Matt Butcher and Karen Chu Illustrated by: Bailey Beougher Illustration of Goldie is based on the Go Gopher designed by Renee French Phippy, Goldie, Captain Kube…
🔥2
Недавно я присоединился к программному комитету Podlodka Techlead Crew, и это стало интересным погружением в закулисье онлайн IT-конференций. Если раньше я видел лишь готовое мероприятие, то теперь наблюдаю за непростым процессом его создания.
➡️ Главный инсайт: контент не возникает сам собой. За каждым интересным докладом стоит кропотливая работа по поиску спикеров, способных не просто транслировать знания, но и делать это увлекательно.
Придумывать темы сезона, помогать докладчикам доработать материал, чтобы он лучше заходил целевой аудитории, решать, нужен ли мем на слайде (нужен, конечно!) и думать, как сделать так, чтобы конференция была не просто полезной, но и интересной — все это входит в работу в ПК.
Это как отказоустойчивая инфраструктура: если всё сделать правильно, участники даже не заметят, сколько усилий множества людей вложено, а если нет — сразу появятся вопросы, почему всё сломалось (привет недавнему сбою).
Придумывать темы сезона, помогать докладчикам доработать материал, чтобы он лучше заходил целевой аудитории, решать, нужен ли мем на слайде (нужен, конечно!) и думать, как сделать так, чтобы конференция была не просто полезной, но и интересной — все это входит в работу в ПК.
Это как отказоустойчивая инфраструктура: если всё сделать правильно, участники даже не заметят, сколько усилий множества людей вложено, а если нет — сразу появятся вопросы, почему всё сломалось (привет недавнему сбою).
Please open Telegram to view this post
VIEW IN TELEGRAM
Теперь я не только делаю доклады, но и помогаю делать их другим. И мы приготовили новый интересный сезон.
Как сервисам взаимодействовать между собой надёжно, быстро и понятно? REST, gRPC, события, контракты, версии — деталей много, а универсальных решений нет.
На онлайн-конференции Podlodka Techlead Crew (7–11 апреля) разберёмся, как выстраивать межсервисное взаимодействие: от проектирования API до публикации событий и сравнения протоколов.
В программе:
• Event Storming + DDD: проектируем EDA правильно — Кирилл Ветчинкин расскажет, как выделять правильные события, избавляться от синхронных вызовов и строить событийно-ориентированные системы без боли
• Обратная совместимость в парадигме specification-first — Сергей Константинов покажет, как поддерживать REST API и работать со спецификациями типа OpenAPI
• Интервью: Проектируем API — contract first — Илья Зонов поделится, когда этот подход спасает, а когда мешает. И как версионировать API без боли
• gRPC vs RESTful: битва протоколов — Алексей Романов сравнит два подхода по 10 критериям
И многое другое.
Готовы прокачаться?
Присоединяйтесь! Билеты здесь 🎟
А мой промкод
Как сервисам взаимодействовать между собой надёжно, быстро и понятно? REST, gRPC, события, контракты, версии — деталей много, а универсальных решений нет.
На онлайн-конференции Podlodka Techlead Crew (7–11 апреля) разберёмся, как выстраивать межсервисное взаимодействие: от проектирования API до публикации событий и сравнения протоколов.
В программе:
• Event Storming + DDD: проектируем EDA правильно — Кирилл Ветчинкин расскажет, как выделять правильные события, избавляться от синхронных вызовов и строить событийно-ориентированные системы без боли
• Обратная совместимость в парадигме specification-first — Сергей Константинов покажет, как поддерживать REST API и работать со спецификациями типа OpenAPI
• Интервью: Проектируем API — contract first — Илья Зонов поделится, когда этот подход спасает, а когда мешает. И как версионировать API без боли
• gRPC vs RESTful: битва протоколов — Алексей Романов сравнит два подхода по 10 критериям
И многое другое.
Готовы прокачаться?
Присоединяйтесь! Билеты здесь 🎟
А мой промкод
deeper8
дает скидку в 500р🥳🔥4
И продолжая тему конференций — кто будет на DevOps Conf'2025 7-8 апреля?
Кирилл Борисов и Вячеслав Федосеев в своих каналах разыгрывают два онлайн-билета. Так что если вы хотите попасть на конфу — можно попытать счастья и получить бесплатный билет.
Правила розыгрыша:
🔸 Подписаться на канал Вячеслава «DevOps Bootcamp» и канал Кирилла «Путь SRE»
🔸 Рассказать о самой частой проблеме DevOps-инженера, которую хотелось бы решать как можно реже
📩 Истории присылайте через форму
Сбор историй закрывается 2 апреля в 23:59 мск, а 4 апреля в 12:00 мск Кирилл и Вячеслав объявят двух победителей у себя в каналах.
Удачи!
Кирилл Борисов и Вячеслав Федосеев в своих каналах разыгрывают два онлайн-билета. Так что если вы хотите попасть на конфу — можно попытать счастья и получить бесплатный билет.
Правила розыгрыша:
📩 Истории присылайте через форму
Сбор историй закрывается 2 апреля в 23:59 мск, а 4 апреля в 12:00 мск Кирилл и Вячеслав объявят двух победителей у себя в каналах.
Удачи!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Как быть, если что-то сломалось?
Когда что-то ломается внутри k8s, ты не просто смотришь логи контейнера и сразу видишь проблему.
Нет, это слишком просто и для слабаков. Сначала ты ничего не понимаешь, потом пьешь кофе, потом уходишь на созвон, потом до вечера копаешься с проблемой и уже на следующий день тебе приходит отличная идея, которая (как неожиданно) оказывается шагом в правильном направлении.
➡️ Почему важно изучать любой инструмент, с которым работаешь постоянно?
Спросим капитана очевидность.
Спасибо капитан, очень полезно.
Когда что-то ломается внутри k8s, ты не просто смотришь логи контейнера и сразу видишь проблему.
Нет, это слишком просто и для слабаков. Сначала ты ничего не понимаешь, потом пьешь кофе, потом уходишь на созвон, потом до вечера копаешься с проблемой и уже на следующий день тебе приходит отличная идея, которая (как неожиданно) оказывается шагом в правильном направлении.
Спросим капитана очевидность.
Потому что тогда вы будете понимать, чего ожидать от инструмента, какие возможности он дает и позволит вам не изобретать велосипедов.
Спасибо капитан, очень полезно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы часто ходим по граблям, потому что когда оно ломается непривычным для нас способом, сложно понять, в какую сторону копать.
Есть замечательный довольно известный гайд, который позволит шаги дебага выстроить в четкий процесс, если вы застряли.
Есть замечательный довольно известный гайд, который позволит шаги дебага выстроить в четкий процесс, если вы застряли.
🔥10
Несколько советов:
➡️ Не откладывайте сбор логов и событий. Они могут быть затерты, если не настроено сохранение в догосрочное хранилище. Если проблема плавающая, лучше сразу сохранить себе
➡️ Не забывайте отключать под от продового трафика, если начинаете копошиться в нем через
➡️ Если вы еще не используете в сервисах динамически настраиваемые feature flags, обязательно разберитесь, это экономит много времени в итоге и позволяет с большей уверенностью выкатывать изменения в прод, зная, что их легко очень быстро выключить без нового деплоя. Это не значит, что код надо писать абы как, потому что фича флаги все порешают)
➡️ Не уверены? Киньте детали всех ошибок и вывод всех команд в chatgpt и попросите разрулить (научитесь писать хорошие промпты). Только учтите предварительно, что нужно будет вычистить все детали: ссылки на образы, названия env переменных, публичные IP адреса, user_id из логов, и так далее, если по ним можно понять, какая компания и какой сервис это. Все, что вы отправите в интернет, будет использовано против вас.
kubectl logs
, kubectl get events
, kubectl describe pod
и так далее, чтобы потом спокойно разбираться, даже если сервис уже перезапустился и стабильно работает.kubectl exec
(если у вас есть такой доступ в проде), чтобы случайно не поломать все клиентам. Оно, конечно, работает только в ограниченном количестве случаев, когда у вас, например, php и можно на ходу поправить код. Сделать это можно, только очень осторожно, через редактирование endpoints
. Это сущность в k8s, которая указывает service
, по каким адресам доступны поды. Операция относительно безвредная, потому что трафик перестанет идти на под, который будем препарировать. Потом просто удалите под и deployment его пересоздаст. Это вмешательство во внутреннюю логику k8s и может сломать вам сервис. You have been warned. Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Привет! На связи Маркус.
Начали тут обсуждения про то, что кого бесит, так что я присоединюсь. Меня вот бесит, что после всех этих ваших куберов мне приходится человека моего успокаивать 😼
Как я это делаю? Прихожу мурчать, конечно же. А если в это время идет вебинар, еще и зрителям себя показываю. Или не прихожу — может же у меня не быть настроения?
А ваши четвероногие друзья как вас успокаивают?
Начали тут обсуждения про то, что кого бесит, так что я присоединюсь. Меня вот бесит, что после всех этих ваших куберов мне приходится человека моего успокаивать 😼
Как я это делаю? Прихожу мурчать, конечно же. А если в это время идет вебинар, еще и зрителям себя показываю. Или не прихожу — может же у меня не быть настроения?
А ваши четвероногие друзья как вас успокаивают?
❤13🔥4😁1🤓1
Ansible в действии: развернем кластер с Kuberspray и запустим AI-приложение
9 апреля Павел Минкин и Всеволод Севостьянов проведут вебинар по ansible и kubernetes, и я очень советую сходить на него всем, кто изучает кубер и задумывается над прохождением наших курсов по k8s.
О чем пойдет речь:
🔷 Как развернуть нейронную сеть в контейнере и сделать её доступной для всего мира?
🔷 Как быстро настроить кластер и управлять им?
🔷 Как Kubernetes управляет AI-приложениями?
🔷 Как Docker работает в Kubernetes?
🐈 Бонус: каждый зритель получит репозиторий для собственного Kubernetes-кластера с AI-приложением и полную инструкцию по развертыванию.
➡️ Когда: 9 апреля в 19:00 мск
Занять место — через бота⬅️
9 апреля Павел Минкин и Всеволод Севостьянов проведут вебинар по ansible и kubernetes, и я очень советую сходить на него всем, кто изучает кубер и задумывается над прохождением наших курсов по k8s.
О чем пойдет речь:
Занять место — через бота
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Голландская рулетка: часть вторая. Аварийное вождение, Европа без границ и подводные велосипеды.
В прошлый раз рассказал про культурные особенности и язык, про еду и погоду, а сегодня поделюсь деталями про транспортную систему в Нидерландах и как выстроено сообщение между странами ЕС.
➡️ Велосипеды
Первое, что бросается в глаза в Нидерландах (особенно в крупных городах) — это огромное количество велосипедов и людей, спокойно смотрящих что-то в телефоне во время поездки. Очень частая ситуация, несмотря на немалые штрафы за такое вождение.
Я воочию наблюдал это, когда девушка ехала впереди меня, отпустила обе руки с руля и переплетала волосы. И ничего, всем ок, несмотря на законодательные запреты так делать.
В прошлый раз рассказал про культурные особенности и язык, про еду и погоду, а сегодня поделюсь деталями про транспортную систему в Нидерландах и как выстроено сообщение между странами ЕС.
Первое, что бросается в глаза в Нидерландах (особенно в крупных городах) — это огромное количество велосипедов и людей, спокойно смотрящих что-то в телефоне во время поездки. Очень частая ситуация, несмотря на немалые штрафы за такое вождение.
Я воочию наблюдал это, когда девушка ехала впереди меня, отпустила обе руки с руля и переплетала волосы. И ничего, всем ок, несмотря на законодательные запреты так делать.
Please open Telegram to view this post
VIEW IN TELEGRAM