От мейнфреймов до ПК, до смартфонов, до облаков и так далее. Генеральный директор Robusta.dev Натан Йеллен говорит о Kubernetes и будущем облачных вычислений. Узнайте, почему Kubernetes — это больше, чем просто платформа для оркестрации контейнеров, это облачный стандарт следующего полувека.

Автор: Натан Йеллин, Генеральный директор Robusta.dev
Вольный перевод. Машинный перевод здесь.

Оригинал текста (на английском).

Комментировать лучше не здесь, а через Dissenter Browser Extension (без ограничений по дате регистрации или "возрасту" самой статьи, не нужна даже учётка на самом habr.com) а то фанатеющее от израильского Яндекса и FreeBSD-4.0 "украинское" секс-меньшинство ввело против меня цензуру и теперь я могу отвечать не чаще, чем раз в месяц, а скоро могу и вовсе потерять доступ к собственному переводу.

Преимущества Kubernetes как оркестратора контейнеров широко известны с момента его появления в 2014 году.

Таких преимуществ много

  1. Kubernetes является декларативным и позволяет вам сосредоточиться на том, что должно произойти, а не на том, как это происходит.

  2. Kubernetes позволяет разделить задачи, предоставляя командам разработчиков высокоуровневый API, над которым они работают (например, файлы yaml), не беспокоясь об операционных проблемах, таких как обслуживание контура управления.

  3. Kubernetes имеет большую и быстрорастущую экосистему для техпроцессов поверх контейнеров в любой предметной области. Например, вы можете запускать рабочие процессы машинного обучения с помощью Kubeflow.

  4. Kubernetes поддерживает гибкие методологии, такие как быстрая разработка, непрерывная интеграция и развертывание (CI/CD), а также рабочие откаты (rollbacks).

  5. Kubernetes обеспечивает согласованность в средах разработки, тестирования и промышленной.

Я мог бы целыми днями говорить о преимуществах, которые Kubernetes предлагает как средним, так и малым предприятиям. Благодаря открытому исходному коду Kubernetes Google предоставил каждому разработчику в мире возможность использовать первоклассные инструменты. Это продолжает облачную революцию, начатую Amazon, когда они запустили AWS, на этот раз улучшая программную часть, а не аппаратную.

Однако давайте посмотрим на Kubernetes с совершенно другой точки зрения.

Kubernetes в качестве облачной операционной системы?

Kubernetes — это оркестратор контейнеров, но что такое оркестратор контейнеров? Чтобы ответить на этот вопрос, давайте вернемся в прошлое.

Представьте, что сейчас конец 70-х и вы только что создали первую в мире операционную систему для персональных компьютеров. Как вы это продаете?

Возможно, вы называете это «организатором процессов», потому что операционная система позволяет запускать несколько процессов одновременно и организует их таким образом, чтобы они не мешали друг другу. Нет, не нравится имя? Что ж, термин «операционная система» был выбран и с тех пор прижился.

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

Kubernetes делает все это и многое другое, но теперь машина — это целый центр обработки данных в облаке, а оборудование — это облачный провайдер, такой как AWS или GCP.

Некоторым это может показаться немного надуманным — и позвольте мне прояснить — я не верю, что Kubernetes как ОС для облачных вычислений приведет к устареванию других операционных систем, таких как Linux или Windows — они все еще здесь, чтобы остаться.

Кроме того, каждый узел в кластере Kubernetes по-прежнему работает под управлением Linux. Но если вы уменьшите масштаб и посмотрите на центр обработки данных в целом, то увидите, что в нем тоже есть операционная система, и эта операционная система — Kubernetes.

Зачем нам облачная ОС?

Давайте рассмотрим макропричины, по которым организации переходят на облако, и почему стандартизация так привлекательна.

Масштабируемость — вверх или вниз, по требованию и модель «плати за то, что используешь» — делают облачные вычисления идеальным решением для большинства организаций. Простота использования наряду с возможностью самообслуживания означает, что затраты ниже, а эффективность максимальна.

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

Однако всеми этими контейнерами необходимо управлять так же, как необходимо управлять процессами на отдельной машине. Кроме того, сама базовая инфраструктура должна управляться и распределяться справедливым и эффективным образом. Наконец, вы должны сохранять свободу перемещения между основными облаками и избегать привязки к поставщику (vendor lock).

Все это заботы операционных систем, от управления ресурсами до планирования и аппаратной абстракции.

Масштабный сдвиг парадигмы

Мы уже видели это раньше. Когда впервые появились мобильные телефоны, появились и мобильные операционные системы, такие как Android и iOS. До этого, когда мир перешел от мейнфреймов к персональным компьютерам, были изобретены Windows и другие операционные системы для ПК.

В каждом случае изменение вычислительной парадигмы приводило к необходимости в новой операционной системе, способной удовлетворить потребности новой платформы.

Что дает ОС?

На высоком уровне операционная система управляет ресурсами — и точка. Более подробно, есть физические ресурсы, такие как ваш диск, графический процессор и память, и виртуальные ресурсы, такие как файлы и пользователи.

Операционная система берет все эти ресурсы и управляет ими. Она разделяет их справедливо и эффективно между различными процессами.

Время тоже ресурс. Операционная система распределяет процессорное время между запущенными процессами с помощью централизованного планировщика.

Операционная система также отвечает за перемещение данных в память и из памяти, она предоставляет портал для терминальных служб и, конечно же, часто (хотя и не всегда) оснащена графическим интерфейсом, облегчающим работу операторов (или более современно: пользователей). Говоря о пользователях, операционные системы управляют их правами доступа и обеспечивают безопасность.

С этой точки зрения концепция ОС Kubernetes приобретает больше смысла, поскольку все эти сервисы предоставляются Kubernetes в контексте вашего центра обработки данных.

Параллели операционной системы Kubernetes

Сделаем несколько замен, чтобы аналогия была более естественной. Например, мы можем сравнить процессы и потоки Linux с подами и контейнерами в Kubernetes. Мы можем сравнить процессоры с узлами. Следовательно, планирование процессов для ЦП теперь эквивалентно планированию подов для узлов.

Основная философия Linux заключается в том, что «все является файлом». В Kubernetes эквивалентом этого является «все является ресурсом yaml в etcd» или «все является CRD». Это тоже форма стандартизации, которую операционные системы используют для упрощения жизни пользователей и разработчиков. В Linux каждый файл работает со стандартным API, поэтому любой ресурс можно открыть и записать одним и тем же способом. В Kubernetes все является ресурсом etc, и у него есть аналогичные преимущества.

Когда дело доходит до аппаратной абстракции, снова можно провести параллели. Linux использует драйверы для доступа к различным жестким дискам, и k8s точно так же работает с плагинами CSI. Это позволяет вам получить доступ к хранилищу, не беспокоясь о конфигурации облачного диска.

Глядя в будущее

За 80 с лишним лет, прошедших с момента создания концепции компьютера, а затем и операционной системы, произошло всего несколько крупных сдвигов парадигмы в том, как мы используем компьютеры, но каждый из них оказал глубокое влияние на нашу повседневную жизнь.

Все помнят, когда впервые стали доступны ПК с Windows и Macintosh. Все также помнят, когда впервые стали доступны смартфоны с iOS и Android. Теперь, с переходом на облачные вычисления, Kubernetes ведет аналогичный сдвиг тектонических пропорций. Как и Windows, Linux, iOS и Android, Kubernetes никуда не денется!

Источники:

Основы Kubernetes

Документы Kubernetes

Kubernetes: каковы ключевые преимущества для компаний?

Операционные системы, прикладное программное обеспечение и языки программирования

7 проблем с развертыванием программного обеспечения (и способы их решения)

Прошлое, настоящее и будущее Kubernetes с Эриком Брюэром

Учебное пособие по YAML: все, что вам нужно, чтобы начать работу за считанные минуты

Краткая история операционных систем

Когда все находится в облаке, имеет ли значение ОС?

Облачная операционная система (облачная ОС)

Kubernetes — это POSIX облаков

Комментарии (15)


  1. Mishima_Zaibatsu
    28.07.2022 05:21
    +5

    Почему Kubernetes протянет ещё 50 лет

    Кликбейт.


  1. Aquahawk
    28.07.2022 07:47
    +3

    Наивные измышления в духе "Конец истории" https://ru.m.wikipedia.org/wiki/Конец_истории_и_последний_человек


  1. deditionem
    28.07.2022 10:49
    +4

    Автор, кажется, плохо знает, что такое ОС и как это работает.

    На высоком уровне операционная система управляет ресурсами

    ОС управляет ресурсами на низком уровне, в пространстве ядра. Высокий уровень в программировании - это юзерспейс.

    И узлы на Линуксе в Кубернетес как раз потому, что это не ОС. Да, можно провести аналогию между Кубернетесом и ОС через процессы-поды, но нужно помнить, что это просто аналогия для лучшего понимания, а не концепция использования.

    Я расстроилась. Надеялась, что наконец смогу скинуть другу-олдовому труЪ программисту статью, зачем нужен Кубернетес, но если даже я вижу, что тут ради красивости переврана работа ОС, он тем более к этому придерется - он много лет работает в kernel space


    1. JordanCpp
      28.07.2022 12:25

      Надеялась, что наконец смогу скинуть другу-олдовому труЪ программисту статью, зачем нужен Кубернетес, но если даже я вижу, что тут ради красивости переврана работа ОС, он тем более к этому придерется - он много лет работает в kernel space

      Мысленно представляю картинку со стариком на ходулях. Везде сплошной обман:)


    1. sre-dataengineer Автор
      28.07.2022 13:53
      -1

      Я не автор (а переводчик), но попробую ответить:

      Основные механизмы ядра Linux, которые предоставляют ресурсы системы (Линукса, хотя docker и kubernetes есть и под macOS, например) для использования в контейнерах, - это: CGroups (control groups) и NameSpaces

      cgroups уже давно (в 2015) доросли до v2 (второй версии - Control Group v2) https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html

      https://youtu.be/kPMZYoRxtmg

      https://youtu.be/GznkuTXq8AQ

      Five Things to Prepare for Cgroup v2 with Kubernetes blog.kintone.io/entry/2022/03/08/170206

      Maximizing Resource Utilization with cgroup2 facebookmicrosites.github.io/cgroup2/docs/overview

      В документации параметр systemd.unified_cgroup_hierarchy=1 упомянут.

      Про namespace-ы

      What Are Namespaces and cgroups, and How Do They Work? nginx.com/blog/what-are-namespaces-cgroups-how-do-they-work/

      Про kernel.unprivileged_userns_clone

      CAP_SYS_ADMIN и user.max_user_namespacesгуглите сами.

      User Namespaces rootlesscontaine.rs/how-it-works/userns/

      Отдельно стоит тема Rootless-контейнеров

      cgroup v2 rootlesscontaine.rs/getting-started/common/cgroup2/

      setuid На примере докера: docs.docker.com/engine/security/rootless/

      и SELinux https://github.com/containers/container-selinux

      А так, - я не знаю что может понадобиться от ядра. overlayи br_netfilter обычно есть везде или могут быть добавлены. От рантайма (podman/crio/containerd) мало что зависит, скорее у ядрёного инженера будет больше вопросов с сетью (Calico/Flannel/Canal=Calico+Flannel/Weave), уж net.bridge.bridge-nf-call-iptables=1

      и аналогичная для IPv6 упомянуты во всех инструкциях.

      Using sysctls in a Kubernetes Cluster kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/


      1. select26
        29.07.2022 09:09
        +1

        Хоть вы и не автор, я все же порекомедую вам книгу Таненбаума: Операционные системы.

        Когда я учился, каждый должен был прочесть эту книгу, чтобы знать и понимать что такое ОС, для чего она нужна и какие необходимые функции должна выполнять. Книга древняя и фундаментальная. Как закон Ома.


        1. sre-dataengineer Автор
          29.07.2022 11:08
          -1

          О боже, откуда вы берётесь такие?!

          Последнее переиздание этой книги вышло в 2015 году.

          Потом остаются FreeBSD в наследство и горы из баша с перлом, в которых пенсионеры сами не могут разобраться!

          По Линуксу, возможно, когда-нибудь пригодится

          THE LINUX PROGRAMMING INTERFACE. Copyright © 2010 by Michael Kerrisk,

          но с точки зрения работы (и особенно зарплаты!) читать надо Kubernetes Patterns и смотреть прекрасный видеокурс от Слёрма


          1. select26
            29.07.2022 14:55
            -1

            Уж поверь - разбираемся. Мы, пенсионеры, народ могучий )

            И хоть скриптам нашим четверть века уже, весь мир на них работает. И альтернативы пока не имеет.

            За свой, однако уже 24-летний опыт, перевидал уже кучу "убийц тезнологий" и "мэйнстримов".

            И кто сейчас помнит про них?

            Так что читай книги. В качестве фундаментального образования - желательно классику. Ибо, как было написано в первом моем учебнике по UNIX: "не пытайтесь изобретать. Unix старше вас. Наверняка подобные задачи решались и раньше"


          1. select26
            29.07.2022 15:01

            На FreeBSD, кстати, прямо сегодня продается немало коммерческих даже решений.

            ZFS - только недавно появился в Linux. Ha базе FreeNAS форков выпускают массу NAS уже много лет с поддержкой ZFS.

            pfSense - до сих пор нет аналога для Linux. Vyos тоже использую, поэтому знаю с чем сравнить.


    1. sre-dataengineer Автор
      28.07.2022 14:36

      Я не автор (а переводчик), но попробую ответить:

      Основные механизмы ядра Linux, которые предоставляют ресурсы системы (Линукса, хотя docker и kubernetes есть и под macOS, например) для использования в контейнерах, - это: CGroups (control groups) и NameSpaces

      cgroups уже давно (в 2015) доросли до v2 (второй версии - Control Group v2) https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html

      https://youtu.be/GznkuTXq8AQ

      https://youtu.be/GznkuTXq8AQ

      Five Things to Prepare for Cgroup v2 with Kubernetes blog.kintone.io/entry/2022/03/08/170206

      Maximizing Resource Utilization with cgroup2 facebookmicrosites.github.io/cgroup2/docs/overview

      В документации параметр systemd.unified_cgroup_hierarchy=1 упомянут.

      Про namespace-ы

      What Are Namespaces and cgroups, and How Do They Work? nginx.com/blog/what-are-namespaces-cgroups-how-do-they-work/

      https://kubernetes.io/docs/tasks/admiRequests and Limits Constraints and Quotas for a Namespace kubernetes.io/docs/tasks/administer-cluster/manage-resources/nister-cluster/manage-resources/

      Про kernel.unprivileged_userns_clone

      CAP_SYS_ADMIN и user.max_user_namespacesгуглите сами.

      User Namespaces rootlesscontaine.rs/how-it-works/userns/

      Отдельно стоит тема Rootless-контейнеров

      cgroup v2 rootlesscontaine.rs/getting-started/common/cgroup2/

      setuid На примере докера: docs.docker.com/engine/security/rootless/

      и SELinux https://github.com/containers/container-selinux

      CONFIG_SECCOMP

      https://kubernetes.io/docs/tutorials/security/seccomp/

      https://docs.docker.com/engine/security/seccomp/

      А так, - я не знаю что может понадобиться от ядра. overlayи br_netfilter обычно есть везде или могут быть добавлены. От рантайма (podman/crio/containerd) мало что зависит, скорее у ядрёного инженера будет больше вопросов с сетью (Calico/Flannel/Canal=Calico+Flannel/Weave),

      Container Network Interface (CNI) plugins kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#network-plugin-requirements

      уж net.bridge.bridge-nf-call-iptables=1

      и аналогичная для IPv6 упомянуты во всех инструкциях.

      Using sysctls in a Kubernetes Cluster kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/


      1. sre-dataengineer Автор
        28.07.2022 14:39

        Странная какая-то система, сначала нельзя отредактировать (время вышло), потом удалить старый комментарий (хотя на него никто ещё не ответил).


        1. sre-dataengineer Автор
          28.07.2022 18:09
          -3

          Теперь ещё не даёт другим оценки ставить. Пишет, что недостаточно "кармы" какой-то. При этом минусующих меня не видно - специально так что ли сделано, чтобы самая мерзость самоутверждалась? Похоже, меньшинство, ненавидящее всех остальных, сделало систему самоудовлетворения - чтобы корону не сбили не дай бог.


    1. sre-dataengineer Автор
      28.07.2022 14:57

      Автор работает менеджером (начальником), его зона ответственности - определять стратегию и перспективные направления развития компании в ИТ-области.

      k8s и managed kubernetes в облаках (нидерландский Yandex, кипрский MCS/VK/MAILRU, "питерский" Selectel, Amazon EKS, DigitalOcean, Google GKE, OVH, Microsoft Azure AKS, Alibaba ACK) - это сейчас такой же mainstream для построения информационных (вычислительных) платформ , каким 20 лет назад был GNU/Linux и многочисленные проприетарные UNIX-ы (HPUX, AIX, SCO).

      Ни у какого труЪшного/олдскульного погромиста/админа уже нет и не может быть выбора - использовать ему кубер кластеры или нет, этот "выбор" сегодня звучит как "получать нормальную зарплату или слёзы/насмешку, достойную юного эникейщика-подавана".

      Нужно (безальтернативно) учить большой и сложный Кубернетис, постигать его, ... и глобокое знание ОС Linux будет в этом изучении отличным подспорьем, как 20 лет назад было подспорьем знание режимов ("защищённый", что там ещё было в i80286?) работы процессора, регистров процессора, машинных кодов, команд процессора, прерываний, ...

      Например, я надеялся на смерть iptables и победу простеньких интерфейсов к nftables но не тут-то было!

      Все ужасы iptables-лапши (сотен строк нагенерёных автоматически правил) накинулись на меня с новой силой!


  1. JordanCpp
    28.07.2022 12:26
    +3

    Не являюсь разработчиком 1С. Но поставлю на то, что именно 1С ещё проживет 50 лет.:)


    1. sre-dataengineer Автор
      28.07.2022 14:40

      1ass проживёт и 150 лет - благодаря killer-feature - проводках задним числом.