Kubernetes: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Строка 114: Строка 114:
* [https://github.com/kubernetes-helm/monocular Monocular] - веб-интерфейс для управления упакованными в соответствии со стандартами Helm пакетами.
* [https://github.com/kubernetes-helm/monocular Monocular] - веб-интерфейс для управления упакованными в соответствии со стандартами Helm пакетами.


Однако эти инструменты не являются безальтернативными. Например, в качестве прямой замены Helm можно рассматривать разработанный компанией Hashicorp продукт Terraform. Противоположный принятому разработчиками Helm и Terraform подход подразумевает перемещение файлов ресурсов Kubernetes в репозиторий (например в [[git]] и дальнейшая работа с ними как с разновидностью специфического кода. Такой способ работы с приложениями Kubernetes предлагает проект kubecfg.
Однако эти инструменты не являются безальтернативными. Например, в качестве прямой замены Helm можно рассматривать разработанную компанией [[Hashicorp]] систему обеспечения [[Развёртывание приложений|развёртывания инфраструктуры приложений]] [[Hashicorp#Terraform|Terraform]].<ref>{{Статья|автор=Harshal Shah|заглавие=Terraform vs. Helm for Kubernetes|ссылка=https://dzone.com/articles/terraform-vs-helm-for-kubernetes|язык=|издание=DZone|тип=|год=2017|месяц=11|число=2|том=|номер=|страницы=|issn=}}</ref> Такое использование стало возможным после того, как Hashicorp реализовала в Terraform [https://www.terraform.io/docs/providers/kubernetes/index.html режим работы в качестве провайдера Kubernetes].

Противоположный принятому разработчиками Helm и Terraform подход подразумевает перемещение файлов ресурсов Kubernetes в репозиторий (например в [[git]] и дальнейшая работа с ними как с разновидностью специфического кода. Такой способ работы с приложениями Kubernetes предлагает проект [https://github.com/ksonnet/kubecfg kubecfg].


== Kubernetes и платформы управления облаками и контейнерами ==
== Kubernetes и платформы управления облаками и контейнерами ==

Версия от 17:23, 23 февраля 2018

Kubernetes
Логотип программы Kubernetes
Скриншот программы Kubernetes
Тип Управление конфигурацией, системное администрирование
Разработчики Первоначальный Google в настоящее время Cloud Native Computing Foundation
Написана на Go
Операционная система Linux
Первый выпуск 7 июня 2014
Последняя версия
Репозиторий github.com/kubernetes/ku…
Состояние Актуальное
Лицензия Apache License 2.0
Сайт kubernetes.io
Логотип Викисклада Медиафайлы на Викискладе

Kubernetes (часто так же используется обозначение «K8s»[2], название образовано от греческого κυβερνήτης, — «кормчий»,"рулевой"[2], по русски — Кубернетес или Кубернетис) — открытое программное обеспечение для автоматизации развёртывания, масштабирования и управления контейнеризированными приложениями[3]. Оригинальная версия была разработана компанией Google. Впоследствии Kubernetes был передан под управление Cloud Native Computing Foundation. Предназначение Kubernetes — предоставить «платформу для автоматического развёртывания, масштабирования, управления приложениями на кластерах или отдельных хостах».[4] Кубернетис поддерживает различные технологии контейнеризации, включая Docker.

Kenernetes используется фондом Wikimedia Foundation, инфраструктура которого мигрировала на это приложение с самостоятельно разработанного ПО для организации кластеров[5].

История

Google Container Engine talk at Google Cloud Summit

Kubernetes начала разрабатываться программистами компании Google Joe Beda, Brendan Burns и Craig McLuckie,[6], к которым, в дальнейшем присоединились их коллеги Brian Grant и Tim Hockin. Впервые он был анонсирован Google в середине 2014 года.[7] На разработку и внутреннюю идеологию Kubernetes серьёзно повлиял другой продукт Google, оставшийся внутренней разработкой — система управления кластерами Google Borg, [8][9] над которым ранее работали многие из наиболее важных разработчиков Kubernetes.

Оригинальное наименование проекта — Project Seven, отсылка к героине сериала Star Trek, возвращённой в индивидуальное и дружественное к людям состояние из статуса члена нечеловеческого роевого кибернетического разума Коллектива Боргов.[10] Семь ручек на штурвале логотипа проекта — аллюзия на этот художественный образ.

Kubernetes v1.0 был выпущен в 21 июля 2015 года.[11] После выпуска этой версии Google, в партнёрстве с Linux Foundation, организовал специальный фонд Cloud Native Computing Foundation (CNCF)[12], которому передал Kubernetes в качестве начального технологического вклада в деятельность CNCF.

Концепции и внутреннее устройство

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

Ноды (узлы)

Нода (узел, node) — это отдельная физическая или виртуальная машина, на которой развёрнуты и выполняются контейнеры приложений. Каждый узел в кластере Kubernetes содержит сервисы для запуска приложений в контейнерах (например Docker), а так же компоненты, предназначенные для централизованного управления нодой.

Поды

Базовая единица для управления и запуска приложений в Kubernetes называется «под» (англ."pod"). Под — это один или несколько контейнеров, которым гарантирован запуск на одном узле (то есть на одной физической или виртуальной машине), обеспечивается разделение ресурсов[13] и предоставляется уникальный в пределах кластера IP-адрес[14]. Последнее позволяет приложениям, развёрнутым на поде, использовать фиксированные и предопределённые номера портов без риска конфликта. Для совместного использования из контейнеров, развёрнутых в пределах под может быть определён — том (volume), представляющий из себя каталог на локальном диске или сетевой диск[15].

Поды могут напрямую управляться с использованием API Kubernetes или управление ими может быть передано контроллеру.[13]

Разделы

Раздел (Volume) — это каталог или сетевой диск, возможно, с данными в нём, который доступен контейнерам пода.

Метки и селекторы

Kubernetes позволяет обеспечивает работу простого хранилища пар ключ-значение (key-value). Этот механизм, называемый метки («labels») может быть использован для маркировки любого объекта API Kubernetes, например пода или ноды. Селекторы меток («label selectors») — это запросы, которые позволяют получить ссылку на объекты, соответствующие какой-то из меток.[13]

Метки и селекторы — это главный механизм Kubernetes, который позволяет выбрать, какой из объектов следует использовать для запрашиваемой операции.[16]

Сервисы

Сервисом в Kubernetes называют совокупность набора логически связанного набора pod и политики доступа к ним[17]. Например, сервис может соответствовать одному из уровней программного обеспечения, разработанного в соответствии с принципами многоуровневой архитектуры ПО. Набор подов, соответствующий сервису, получается в результате выполнения селектора соответствующей метки[13]

Kubernetes обеспечивает функционал обнаружения сервисов, и маршрутизации по запросу. Он умеет переназначать необходимые для обращения к сервису IP-адрес и доменное имя сервиса различным подам, входящим в его состав. При этом обеспечивается балансировка нагрузки между подами, чьи метки соответствуют сервису в стиле Round robin DNS, а так же корректная работа в том случае, если один из узлов кластера вышел из строя и размещённые на нём поды автоматически переместились на другой.[14] По умолчанию сервис доступен внутри управляемого Kubernetes кластера, например поды бэкенда группируются для обеспечения балансироваки нагрузки и в таком виде предоставляются фронтенду, но он может быть настроен и для того, чтобы предоставлять доступ к входящим в его состав подам извне, как к единому фронтенду.[18]

Контроллеры

Контроллер — это процесс, который управляет состоянием кластера, пытаясь привести его от фактического к желаемому.[19] Он делает это, оперируя набором подов, который, определяется с помощью селекторов меток, являющихся частью определения контроллера.[20] Выполнение контроллеров обеспечивается компонентом Kubernetes Controller Manager.

Один из типов контроллеров, самый известный — это «Контроллер репликации» («Replication Controller»), который обеспечивает масштабирование, запустив указанное количество копий пода в кластере. Он также обеспечивает запуск новых инстансов пода, в том случае если узел, на который работает управляемый этим контроллером под, выходит из строя..[19]

Другие контроллеры, входящие в основную систему Kubernetes, включают в себя «DaemonSet Controller», который обеспечивает запуск пода на каждой машине (или подмножеством машин) и «Job Controller» для запуска подов, которые выполняются до завершения, например, как часть пакетного задания.[21]

Операторы

Операторы (Operators) — специализированный вид программного обеспечения Kubernetes, предназначенный для включения stateful (то есть сохраняющих своё состояние между выполнениями, таких как СУБД, системы мониторинга или кэширования) сервисов в инфраструктуру, создаваемую при помощи Kubernetes[22].

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

Архитектура и компоненты

Архитектура Kubernetes

Kenrnetes реализует архитектуру master/slave, Компоненты Kubernetes могут быть разделены на те, которые осуществляют управление индивидуальными нодами и входящими в состав подсистемы управления Kubernetes.[13][23]

Подсистема управления Kubernetes

Подсистема управления Kubernetes состоит из набора компонент, каждый из которых может выполняться или на одной мастер-ноде или на множестве паралелльно работающих мастер-нод, обеспечивающих, совместно, режим высокой доступнеости.[23] Подсистема обеспечивает управление распределением нагрузки и коммуникациями внутри кластера и состоит из следующих приложений:

etcd

Один из компонент Kubernetes — etcd — легкий распределённый движок хранилища key-value, разработанный CoreOS. Etcd не позиционируется как полноценная СУБД, а предназначен для хранения конфигурационных данных приложений кластера, представляя из себя функциональный эквивалент каталога /etc UNIX.

Сервер API

Сервер API Kubernetes — ключевой компонент системы. Он предоставляет JSON REST API, использующий HTTP в качестве транспорта. Этот API используется для организации внешнего и внутреннего доступа к функциям Kubernetes.[13][24] Сервер API обновляет состояние объектов, хранящееся в etcd, позволяя своим клиентам управлять распределением контейнеров и нагрузки между нодами управляемой системы.

Планировщик

Планировщик (Scheduller) — это компонент системы (один из контроллеров[25]), который выбирает, на какой ноде должен выполняться какой под, опираясь на критерии доступности ресурсов. Планировщик отслеживает использование ресурсов на каждом из узлов, обеспечивая распределение нагрузки так, чтобы она не превышала доступный объём ресурсов. Для этой цели планировщик должен обладать информацией о доступных на каждом из узлов ресурсах, требованиях к ним со стороны управляемых подов, а так же различных дополнительных пользовательских ограничениях и политиках, таких как QoS, требования affinity/anti-affinity выполняемых процессов, физической локализации данных и т. д.. Подводя итог, роль планировщика — находить и предоставлять ресурсы в зависимости от запросов, возникающих в связи с загрузкой.[26]

Controller manager

Сontroller manager — процесс, выполняющий основные контроллеры Kubernetes, такие как DaemonSet Controller и Replication Controller run in. Контроллеры взаимодействуют с сервером API Kubernetes, создавая, обновляя и удаляя управляемые ими ресурсы (поды, точки входа в сервисы, и т. д.)[24]

Kubectl

Kubectl — интерфейс командной строки Kubernetes, наряду с API обеспечивающий управление ресурсами, подконтрольными Kubernetes.[17],[27]

Нода (узел) Kubernetes

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

Сервис для запуска контейнеров

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

Kubelet

Kubelet отвечает за статус выполнения подов на ноде, что включает в себя отслеживание того, что каждый из контейнеров корректно выполняется, находясь в рабочем состоянии. Kubelet обеспечивает запуск, останов и управление контейнерами приложений, организованными в поды. Функционально Kubelet можно рассматривать как аналог supervisord.[13][28]

Kubelet мониторит состояние подов и, в случае, если обнаруживает, что какой-то из подов находится в неверном состоянии, пытается осуществить его повторное развёртывание (деплой) и перезапуск на узле. Статус самой ноды отправляется на мастер-ноду Kubernetes каждые несколько секунд в диагностических сообщениях (heartbeat messages). Если мастер-нода, исходя из содержания этих сообщений или их пропадания, обнаруживает, что конкретный узел не работает должным образом, процесс Replication Controller, выполняемый на мастер-ноде, пытается перезапустить необходимые поды на другом узле, находящемся в рабочем состоянии.

Kube-proxy

Kube-proxy — это компонент, являющийся комбинацией сетевого прокси-сервера и балансировщика нагрузки. Реализованные в нём операции сетевого уровня используют абстракцию сервиса.[13] Он отвечает за маршрутизацию входящего трафика на конкретные контейнеры, работающие в пределах пода, расположенного на ноде. Маршрутизация обеспечивается на основе IP-адреса и порта входящего запроса.

cAdvisor

cAdvisor — агент системы внутреннего мониторинга Kubernetes, собирающий метрики производительности и информацию об использовании контейнерами, работающими в пределах ноды, таких ресурсов как время работы центрального процессора, оперативной памяти, нагрузку на файловую и сетевую системы.

Kubernetes, разработка и развёртывание программного обеспечения

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

  • Minicube - специализированную конфигурацию Kubernetes, предназначенную для развёртывания на локальной машине . Minicube применяется изучения и локальных экспериментов над Kubernetes.[29]
  • Helm и Tiller - официальный менеджер пакетов Kubernetes. Является функциональным эквивалентом apt-get и yum для Kubernetes.[30] Tiller выполняется на стороне сервера, Helm является клиентом Tiller[30].
  • Monocular - веб-интерфейс для управления упакованными в соответствии со стандартами Helm пакетами.

Однако эти инструменты не являются безальтернативными. Например, в качестве прямой замены Helm можно рассматривать разработанную компанией Hashicorp систему обеспечения развёртывания инфраструктуры приложений Terraform.[31] Такое использование стало возможным после того, как Hashicorp реализовала в Terraform режим работы в качестве провайдера Kubernetes.

Противоположный принятому разработчиками Helm и Terraform подход подразумевает перемещение файлов ресурсов Kubernetes в репозиторий (например в git и дальнейшая работа с ними как с разновидностью специфического кода. Такой способ работы с приложениями Kubernetes предлагает проект kubecfg.

Kubernetes и платформы управления облаками и контейнерами

Многие из поставщиков систем управления контейнерами поддержали Kubernetes, реализовав его поддержку в своих продуктах. Часть из них, так же, приняла участие в деятельности CNCF. Rancher Labs включила Kubernetes в дистрибутив своей системы управления контейнерами Rancher container management platform.[32] Компания Pivotal Software использовала Kubernetes в своём продукте Pivotal Container Service (PKS)[33], Red Hat — в составе системы OpenShift,[34][35], являющейся, по сути, расширенной версией Kubernetes. CoreOS включила его в состав коммерческой версии дистрибутива Container Linux Tectonic, а IBM использовала его в IBM Cloud Container Service[36][37] и в IBM Cloud Private product.[38][39][40] Компания Oracle присоединилась к Cloud Native Computing Foundation в сентябре 2017 и включила Kubernetes в состав Oracle Cloud и Oracle Linux.[41]

В настоящее время большинство широкоиспользуемых облачных платформ и сервисов контейнеризации в том или ином виде используют Kubernetes, постепенно становящийся стандартом де-факто. Kubernetes можно рассматривать как PaaS (Platform as a service), предоставляющую более высокий уровень абстракции чем традиционные платформы управления облаками[42].

Наряду со встроенным в сам Docker инструментом оркестрации Docker Swarm, Kubernetes входит в число наиболее часто используемых для оркестрации контейнеризированных при помощи Docker приложений.[43]

По сравнению с Docker Swarm, Kubernetes функционально богаче,[44] но обладает более высоким порогом вхождения в технологию.[45]

При переходе от Docker Swarm к Kubernetes необходимо использовать приложение Kompose для конвертации созданных в Docker Compose файлов описаний оркестрации в формат, поддерживаемый Kubernetes.[46]

OpenShift - зонтичный бренд, под которым компания Red Hat распространяет специализированный дистрибутив Kubernetes OpenShift Origin, а так же предоставляет активно использующие Kubernetes сервисы.

Сообщество OpenStack вскоре после публичного выхода первых версий Kubernetes предприняло активные усилия для интеграции двух проектов. В частности уже 19 мая 2015 года, до официального релиза версии 1.0, Kubernetes был включён в поддерживавшийся в то время каталог приложений Community OpenStack[47]. Представители сообщества OpenStack публично заявили, что, имея ввиду частичное перекрытие функциональности обоих проектов, они не хотели бы дублирования усилий, а предпочли бы идти по пути интеграции обоих технических решений.[48]

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

  • Stackanetes - инструмент, который позволяет осуществить развертывание и эксплуатацию стандартных сервисов OpenStack под управлением Kubernetes;
  • Kuryr - проект, позволяющий интегрировать контейнеры Kubernetes в сеть OpenStack Neutron;[49]

и ряд других, в частности, несколько различных вариантов интеграции Kubernetes в систему оркестрации OpenStack Heat.

Ссылки

Примечания

  1. Release 1.30.3 — 2024.
  2. 1 2 What is Kubernetes (K8s)? Dialogic Glossary of Telecom Terms. Дата обращения: 10 октября 2017. Архивировано 11 октября 2017 года.
  3. kubernetes/kubernetes (англ.). GitHub. Дата обращения: 28 марта 2017. Архивировано 21 апреля 2017 года.
  4. What is Kubernetes? Kubernetes. Дата обращения: 31 марта 2017. Архивировано 1 апреля 2017 года.
  5. Раздел Case Studies на официальном сайте Kubernetes
  6. Google Made Its Secret Blueprint Public to Boost Its Cloud (амер. англ.). Дата обращения: 27 июня 2016. Архивировано 1 июля 2016 года.
  7. Google Open Sources Its Secret Weapon in Cloud Computing. Wired. Дата обращения: 24 сентября 2015. Архивировано 10 сентября 2015 года.
  8. Abhishek Verma; Luis Pedrosa; Madhukar R. Korupolu; David Oppenheimer; Eric Tune; John Wilkes (April 21-24, 2015). "Large-scale cluster management at Google with Borg". Proceedings of the European Conference on Computer Systems (EuroSys). Архивировано 27 июля 2017. {{cite journal}}: Неизвестный параметр |deadurl= игнорируется (|url-status= предлагается) (справка)Википедия:Обслуживание CS1 (формат даты) (ссылка)
  9. Borg, Omega, and Kubernetes - ACM Queue. queue.acm.org. Дата обращения: 27 июня 2016. Архивировано 9 июля 2016 года.
  10. "Early Stage Startup Heptio Aims to Make Kubernetes Friendly". Дата обращения: 6 декабря 2016.
  11. As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation. TechCrunch. Дата обращения: 24 сентября 2015. Архивировано 23 сентября 2015 года.
  12. Cloud Native Computing Foundation. Архивировано 3 июля 2017 года.
  13. 1 2 3 4 5 6 7 8 An Introduction to Kubernetes. DigitalOcean. Дата обращения: 24 сентября 2015. Архивировано 1 октября 2015 года.
  14. 1 2 Langemak, Jon Kubernetes 101 – Networking. Das Blinken Lichten (11 февраля 2015). Дата обращения: 2 ноября 2015. Архивировано 25 октября 2015 года.
  15. Strachan, James Kubernetes for Developers. Medium (21 мая 2015). Дата обращения: 2 ноября 2015. Архивировано 7 сентября 2015 года.
  16. Surana, Ramit (2015-09-16). "Containerizing Docker on Kubernetes". LinkedIn. Дата обращения: 2 ноября 2015.
  17. 1 2 "Основы Kubernetes". Дата обращения: 17 февраля 2018.
  18. Langemak, Jon Kubernetes 101 – External Access Into The Cluster. Das Blinken Lichten (15 февраля 2015). Дата обращения: 2 ноября 2015. Архивировано 26 октября 2015 года.
  19. 1 2 Overview of a Replication Controller. Documentation. CoreOS. Дата обращения: 2 ноября 2015. Архивировано 22 сентября 2015 года.
  20. Intro: Docker and Kubernetes training - Day 2. Red Hat (20 октября 2015). Дата обращения: 2 ноября 2015. Архивировано 29 октября 2015 года.
  21. Sanders, Jake Kubernetes: Exciting Experimental Features. Livewyer (2 октября 2015). Дата обращения: 2 ноября 2015. Архивировано 20 октября 2015 года.
  22. Introducing Operators: Putting Operational Knowledge into Software. На сайте CoreOs
  23. 1 2 Kubernetes Infrastructure. OpenShift Community Documentation. OpenShift. Дата обращения: 24 сентября 2015. Архивировано 6 июля 2015 года.
  24. 1 2 Marhubi, Kamal Kubernetes from the ground up: API server. kamalmarhubi.com (26 сентября 2015). Дата обращения: 2 ноября 2015. Архивировано 29 октября 2015 года.
  25. "Как на самом деле работает планировщик Kubernetes?". Дата обращения: 14 февраля 2018.
  26. The Three Pillars of Kubernetes Container Orchestration - Rancher Labs. rancher.com (18 мая 2017). Дата обращения: 22 мая 2017. Архивировано 24 июня 2017 года.
  27. Overview of kubectl (амер. англ.). Kubernetes. Дата обращения: 17 февраля 2018.
  28. Marhubi, Kamal What [..] is a Kubelet? kamalmarhubi.com (27 августа 2015). Дата обращения: 2 ноября 2015. Архивировано 13 ноября 2015 года.
  29. "Начало работы в Kubernetes с помощью Minikube". Дата обращения: 23 февраля 2018.
  30. 1 2 Using Helm to deploy to Kubernetes (амер. англ.). daemonza.github.io. Дата обращения: 23 февраля 2018.
  31. Harshal Shah. Terraform vs. Helm for Kubernetes // DZone. — 2017. — 2 ноября.
  32. "Deploy and Manage Kubernetes Clusters | Rancher Labs". Rancher Labs (англ.). Архивировано 16 апреля 2017. Дата обращения: 15 апреля 2017. {{cite news}}: Неизвестный параметр |deadurl= игнорируется (|url-status= предлагается) (справка)
  33. Software, Pivotal Pivotal Container Service (PKS) (англ.). pivotal.io (17 января 2017). Дата обращения: 14 февраля 2018.
  34. OpenShift v3 Platform Combines Docker, Kubernetes. blog.openshift.com. Дата обращения: 14 августа 2014. Архивировано 6 июля 2015 года.
  35. Why Red Hat Chose Kubernetes for OpenShift. blog.openshift.com. Дата обращения: 7 ноября 2016. Архивировано 21 февраля 2017 года.
  36. IBM Launches Bluemix Container Service with Kubernetes to Fuel Highly Secure and Rapid Development of Cognitive Apps (амер. англ.). ibm.com. Дата обращения: 21 ноября 2017.
  37. IBM chases Google, Microsoft with Kubernetes in the cloud (амер. англ.). infoworld.com. Дата обращения: 21 ноября 2017.
  38. IBM Announces IBM Cloud Private (амер. англ.). ibm.com. Дата обращения: 1 ноября 2017. Архивировано 1 ноября 2017 года.
  39. IBM Cloud Private brings cloud native computing to your data center (амер. англ.). techcrunch.com. Дата обращения: 2 ноября 2017. Архивировано 3 ноября 2017 года.
  40. IBM Cloud Private launches with bet open architecture wins hybrid cloud scrum (амер. англ.). zdnet.com. Дата обращения: 2 ноября 2017. Архивировано 3 ноября 2017 года.
  41. "Oracle Joins Cloud Native Computing Foundation as Platinum Member - Cloud Native Computing Foundation". Cloud Native Computing Foundation (англ.). 2017-09-13. Дата обращения: 29 ноября 2017.
  42. "Зачем нужен Kubernetes и почему он больше, чем PaaS?". Дата обращения: 17 февраля 2018.
  43. Это не означает, что Docker Swarm и Kubernetes единственные системы оркестрации для Docker. Наряду с ними для оркестрации Docker может применяться Nomad компании Hashicorp и ряд других, менее известных приложений.
  44. "Kubernetes vs Docker Swarm - Container Management | Platform9". Platform9 (англ.). Дата обращения: 23 февраля 2018.
  45. "Сравнение: Docker swarm, Kubernetes, Rancher и D2C". Дата обращения: 23 февраля 2018.
  46. Translate a Docker Compose File to Kubernetes Resources (амер. англ.). Kubernetes. Дата обращения: 23 февраля 2018.
  47. Kubernetes on OpenStack. blog.kubernetes.io. Дата обращения: 22 февраля 2018.
  48. "The future of OpenStack and Kubernetes - OpenStack Superuser". OpenStack Superuser (англ.). 2016-12-15. Дата обращения: 22 февраля 2018.
  49. "Тестирование в Openshift: Интеграция с Openstack". Дата обращения: 22 февраля 2018.