<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kubernetes Blog</title>
    <link>https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/ru/</link>
    <description>The Kubernetes blog is used by the project to communicate new features, community reports, and any news that might be relevant to the Kubernetes community.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ru</language>
    <image>
      <url>https://raw.githubusercontent.com/kubernetes/kubernetes/master/logo/logo.png</url>
      <title>The Kubernetes project logo</title>
      <link>https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/ru/</link>
    </image>
    
    <atom:link href="https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/ru/feed.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Borg: предшественник Kubernetes</title>
      <link>https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/blog/2015/04/borg-predecessor-to-kubernetes/</link>
      <pubDate>Thu, 23 Apr 2015 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/blog/2015/04/borg-predecessor-to-kubernetes/</guid>
      <description>
        
        
        &lt;p&gt;Google уже больше десяти лет запускает контейнеризованные рабочие нагрузки в production. Сервисные задания, такие как веб-фронтенды и серверы с состоянием, инфраструктурные системы вроде &lt;a href=&#34;http://research.google.com/archive/bigtable.html&#34;&gt;Bigtable&lt;/a&gt; и &lt;a href=&#34;http://research.google.com/archive/spanner.html&#34;&gt;Spanner&lt;/a&gt;, фреймворки пакетной обработки вроде &lt;a href=&#34;http://research.google.com/archive/mapreduce.html&#34;&gt;MapReduce&lt;/a&gt; и &lt;a href=&#34;http://research.google.com/pubs/pub41378.html&#34;&gt;MillWheel&lt;/a&gt; — почти всё в Google работает в контейнерах. Сегодня мы впервые рассказали о Borg, давно обсуждавшейся внутренней системе Google для управления кластерами, ориентированной на контейнеры, и опубликовали подробности на академической конференции по компьютерным системам &lt;a href=&#34;http://eurosys2015.labri.fr/&#34;&gt;Eurosys&lt;/a&gt;. Статью можно найти &lt;a href=&#34;https://research.google.com/pubs/pub43438.html&#34;&gt;здесь&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;История Kubernetes напрямую связана с Borg. Многие разработчики Google, работающие над Kubernetes, раньше занимались проектом Borg. Мы перенесли в Kubernetes лучшие идеи Borg и постарались устранить некоторые проблемные места, которые пользователи Borg отмечали на протяжении многих лет.&lt;/p&gt;
&lt;p&gt;Чтобы дать представление об этой связи, вот четыре возможности Kubernetes, появившиеся благодаря нашему опыту работы с Borg:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/ru/docs/concepts/workloads/pods/&#34;&gt;Поды&lt;/a&gt; (Pods). Под — это единица планирования в Kubernetes. Это ресурсная оболочка, в которой работает один или несколько контейнеров. Контейнеры, входящие в один Под, гарантированно планируются вместе на одну и ту же машину и могут совместно использовать состояние через локальные тома.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;В Borg есть похожая абстракция — alloc (сокращение от resource allocation, «выделение ресурсов»). Типичные сценарии использования alloc в Borg включают запуск веб-сервера, который создаёт логи, рядом с лёгким процессом сбора логов, отправляющим эти логи в кластерную файловую систему (похоже на fluentd или logstash); запуск веб-сервера, который отдаёт данные из дискового каталога, заполняемого процессом, читающим данные из кластерной файловой системы и подготавливающим их для веб-сервера (похоже на систему управления контентом); а также запуск пользовательских функций обработки рядом с шардом хранилища. Поды не только поддерживают эти сценарии, но и предоставляют среду, похожую на запуск нескольких процессов в одной VM: пользователи Kubernetes могут размещать в одном Поде несколько расположенных рядом и взаимодействующих процессов, не отказываясь от простоты модели развертывания «одно приложение на контейнер».&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/docs/concepts/services-networking/service/&#34;&gt;Сервисы&lt;/a&gt; (services). Хотя основная роль Borg состоит в управлении жизненным циклом задач и машин, приложениям, работающим в Borg, полезны и многие другие кластерные сервисы — например, для нейминга и балансировки нагрузки. Kubernetes позволяет назначать имена и балансировать нагрузку через абстракцию сервисов: сервис имеет имя и сопоставляется с динамическим набором Подов, определённым селектором меток (см. следующий раздел). Любой контейнер в кластере может подключиться к сервису по его имени. Внутри Kubernetes подключения к сервису автоматически балансируются между Подами, соответствующими селектору меток; также система отслеживает, где эти Поды работают, когда со временем они перепланируются из-за сбоев.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/ru/docs/concepts/overview/working-with-objects/labels/&#34;&gt;Метки&lt;/a&gt; (labels). Контейнер в Borg обычно является одной репликой в наборе одинаковых или почти одинаковых контейнеров, соответствующих одному уровню интернет-сервиса (например, фронтенды для Google Maps) или рабочим процессам пакетного задания (например, MapReduce). Такой набор называется Job, а каждая реплика — Task. Хотя Job — очень полезная абстракция, у неё есть ограничения. Например, пользователи часто хотят управлять всем сервисом (состоящим из множества Job&#39;ов) как единой сущностью или единообразно управлять несколькими связанными экземплярами своего сервиса, например для отдельных canary- и stable-релизов. Другой возможный сценарий — это пользователи, которым часто нужно думать о подмножествах задач внутри Job и управлять ими — самый распространённый пример встречается во время плавных обновлений, когда разным подмножествам Job требуются разные конфигурации.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Kubernetes позволяет определять множества более гибко, чем Borg, организуя поды с помощью меток — произвольных пар ключ-значение, которые пользователи добавляют к подам (и фактически к любым объектам в системе). Пользователи могут создавать группы, эквивалентные Borg Jobs, добавляя к подам метку “job:&amp;lt;jobname&amp;gt;”, а также могут использовать дополнительные метки, чтобы помечать имя сервиса, экземпляр сервиса (production, staging, test) и в целом любое подмножество своих подов. Запрос по меткам (так называемый “label selector”) используется, чтобы выбрать набор подов, к которому должна применяться операция. Вместе метки и &lt;a href=&#34;https://deploy-preview-57651--kubernetes-io-main-staging.netlify.app/docs/concepts/workloads/controllers/replicationcontroller/&#34;&gt;контроллеры репликации&lt;/a&gt; (replication controllers) обеспечивают очень гибкую семантику обновлений, а также выполнение операций, эквивалентных Borg Jobs.&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;IP-per-Pod. В Borg все задачи на машине используют IP-адрес этого хоста и, следовательно, совместно используют пространство портов хоста. Это позволяет Borg работать с обычной сетью, но создаёт ряд дополнительных сложностей для разработчиков инфраструктуры и приложений: Borg должен планировать порты как ресурс; задачи должны заранее объявлять, сколько портов им нужно, и принимать в аргументах запуска, какие порты использовать; Borglet (агент узла) должен обеспечивать изоляцию портов; а системы именования и RPC должны работать не только с IP-адресами, но и с портами.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Благодаря появлению программно-определяемых оверлейных сетей, таких как &lt;a href=&#34;https://coreos.com/blog/introducing-rudder/&#34;&gt;flannel&lt;/a&gt;, или сетей, встроенных в &lt;a href=&#34;https://cloud.google.com/compute/docs/networking&#34;&gt;публичные облака&lt;/a&gt;, Kubernetes может назначать каждому поду и сервису собственный IP-адрес. Это устраняет инфраструктурную сложность управления портами и позволяет разработчикам выбирать любые нужные им порты, вместо того чтобы требовать от программ адаптации к портам, выбранным инфраструктурой. Последний момент критически важен для простого запуска готовых open source-приложений в Kubernetes, потому что с подами можно обращаться почти так же, как с виртуальными машинами или физическими хостами: им доступно всё пространство портов и не нужно учитывать ситуацию, когда они могут делить одну физическую машину с другими подами.&lt;/p&gt;
&lt;p&gt;По мере роста популярности микросервисных архитектур на основе контейнеров уроки, которые Google извлёк из эксплуатации таких систем внутри компании, вызывают всё больший интерес у внешнего DevOps-сообщества. Раскрывая некоторые внутренние механизмы нашей системы управления кластерами Borg и создавая систему управления кластерами следующего поколения одновременно как open source-проект (Kubernetes) и как общедоступный размещённый сервис (&lt;a href=&#34;http://cloud.google.com/container-engine&#34;&gt;Google Container Engine&lt;/a&gt;), мы надеемся, что этот опыт принесёт пользу более широкому сообществу за пределами Google и поможет развивать состояние технологий в области планирования контейнеров и управления кластерами.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
