0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: devops, docker, девопс, kubernetes, контейнеры, система контейнерной оркестрации, контейнеризация, нода</p>
1
<p>Теги: devops, docker, девопс, kubernetes, контейнеры, система контейнерной оркестрации, контейнеризация, нода</p>
2
<p>Я думаю, все или почти все, кто сталкивался с миром DevOps, хотя бы в общих чертах знают, что такое<strong>Kubernetes</strong>. Но для менее искушенных и подкованных читателей будет полезно почитать пару абзацев о том, что же такое<strong>система контейнерной<a>оркестрации</a></strong>, и чем так хорош наш Kubernetes.</p>
2
<p>Я думаю, все или почти все, кто сталкивался с миром DevOps, хотя бы в общих чертах знают, что такое<strong>Kubernetes</strong>. Но для менее искушенных и подкованных читателей будет полезно почитать пару абзацев о том, что же такое<strong>система контейнерной<a>оркестрации</a></strong>, и чем так хорош наш Kubernetes.</p>
3
<p>Kubernetes является<strong>проектом с открытым исходным кодом</strong>, предназначенным для<strong>управления кластером контейнеров</strong>Linux как единой системой. Kubernetes управляет и запускает контейнеры Docker на большом количестве хостов, а также обеспечивает совместное размещение и репликацию большого количества контейнеров. Проект был начат в 2014 году в недрах самой великой и ужасной Google и теперь поддерживается многими компаниями, среди которых и Microsoft, и RedHat, и IBM. Код Kubernetes написан на языке Go и распространяется под лицензией Apache 2.0. Продукт позиционируется как развиваемое сообществом универсальное решение, не привязанное к отдельным решениям и способное работать с любыми приложениями в любых облачных окружениях.</p>
3
<p>Kubernetes является<strong>проектом с открытым исходным кодом</strong>, предназначенным для<strong>управления кластером контейнеров</strong>Linux как единой системой. Kubernetes управляет и запускает контейнеры Docker на большом количестве хостов, а также обеспечивает совместное размещение и репликацию большого количества контейнеров. Проект был начат в 2014 году в недрах самой великой и ужасной Google и теперь поддерживается многими компаниями, среди которых и Microsoft, и RedHat, и IBM. Код Kubernetes написан на языке Go и распространяется под лицензией Apache 2.0. Продукт позиционируется как развиваемое сообществом универсальное решение, не привязанное к отдельным решениям и способное работать с любыми приложениями в любых облачных окружениях.</p>
4
<p>И сегодня<strong>K8s</strong>де-факто стал неким<strong>стандартом для современных DevOps-сред</strong>- что in-house недр больших компаний, что в популярных среди стартапов облачных сервисах типо AWS, Microsoft Azure или Google Cloud.</p>
4
<p>И сегодня<strong>K8s</strong>де-факто стал неким<strong>стандартом для современных DevOps-сред</strong>- что in-house недр больших компаний, что в популярных среди стартапов облачных сервисах типо AWS, Microsoft Azure или Google Cloud.</p>
5
<h2>Базовая концепции внутреннего устройства Kubernetes</h2>
5
<h2>Базовая концепции внутреннего устройства Kubernetes</h2>
6
<p><strong>Nodes (<a>node.md</a>)</strong>- нода - это машина в кластере Kubernetes.</p>
6
<p><strong>Nodes (<a>node.md</a>)</strong>- нода - это машина в кластере Kubernetes.</p>
7
<p><strong>Pods (<a>pods.md</a>)</strong>- это группа контейнеров с общими разделами, запускаемые как единое целое.</p>
7
<p><strong>Pods (<a>pods.md</a>)</strong>- это группа контейнеров с общими разделами, запускаемые как единое целое.</p>
8
<p><strong>Replication Controllers (<a>replication-controller.md</a>)</strong>- сервис, гарантирующий, что определённое количество "реплик" pod'ы будут запущены в любой момент времени.</p>
8
<p><strong>Replication Controllers (<a>replication-controller.md</a>)</strong>- сервис, гарантирующий, что определённое количество "реплик" pod'ы будут запущены в любой момент времени.</p>
9
<p><strong>Services (<a>services.md</a>)</strong>- ещё один сервис в Kubernetes - это абстракция, которая определяет логический объединённый набор pod и политику доступа к ним.</p>
9
<p><strong>Services (<a>services.md</a>)</strong>- ещё один сервис в Kubernetes - это абстракция, которая определяет логический объединённый набор pod и политику доступа к ним.</p>
10
<p><strong>Volumes (<a>volumes.md</a>)</strong>- директория или раздел, возможно, с данными в ней, которая доступна в контейнере.</p>
10
<p><strong>Volumes (<a>volumes.md</a>)</strong>- директория или раздел, возможно, с данными в ней, которая доступна в контейнере.</p>
11
<p><strong>Labels (<a>labels.md</a>)</strong>- пары ключ/значение, которые прикрепляются к объектам, например, pod'ам. Label'ы могут быть использованы для создания и выбора наборов объектов.</p>
11
<p><strong>Labels (<a>labels.md</a>)</strong>- пары ключ/значение, которые прикрепляются к объектам, например, pod'ам. Label'ы могут быть использованы для создания и выбора наборов объектов.</p>
12
<p><strong>Kubectl Command Line Interface (<a>kubectl.md</a>)</strong>- интерфейс командной строки для управления Kubernetes.</p>
12
<p><strong>Kubectl Command Line Interface (<a>kubectl.md</a>)</strong>- интерфейс командной строки для управления Kubernetes.</p>
13
<h2>Несколько слов об архитектуре Kubernetes</h2>
13
<h2>Несколько слов об архитектуре Kubernetes</h2>
14
<p>Работающий кластер Kubernetes включает в себя<strong>агента, запущенного на нодах (kubelet)</strong>, и<strong>компоненты мастера (APIs, scheduler, etc)</strong>поверх решения с распределённым хранилищем.</p>
14
<p>Работающий кластер Kubernetes включает в себя<strong>агента, запущенного на нодах (kubelet)</strong>, и<strong>компоненты мастера (APIs, scheduler, etc)</strong>поверх решения с распределённым хранилищем.</p>
15
<p>Архитектура: 1.<strong>Нода Kubernetes</strong>- при взгляде на архитектуру системы мы можем разбить его на сервисы, которые работают на каждой ноде, и сервисы уровня управления кластера. На каждой ноде Kubernetes запускаются сервисы, необходимые для управления нодой со стороны мастера и для запуска приложений. И, конечно, на каждой ноде запускается Docker. Docker обеспечивает загрузку образов и запуск контейнеров. 2.<strong>Kubelet</strong>- Kubelet управляет pod'ами их контейнерами, образами, разделами. 3.<strong>Kube-Proxy</strong>- на каждой ноде запускается простой proxy-балансировщик. Этот сервис запускается на каждой ноде и настраивается в Kubernetes API. Kube-Proxy может выполнять простейшее перенаправление потоков TCP и UDP (round robin) между набором бэкендов. 4.<strong>Компоненты управления Kubernetes</strong>- система управления Kubernetes разделена на несколько компонентов. 4.1<strong>Сервер хранения ключевой информации etcd</strong>- состояние мастера хранится в экземпляре etcd. Это обеспечивает надёжное хранение конфигурационных данных и своевременное оповещение прочих компонентов об изменении состояния. 4.2<strong>Kubernetes API Server</strong>- обеспечивает работу api-сервера. Он предназначен для того, чтобы быть CRUD-сервером со встроенной бизнес-логикой, реализованной в отдельных компонентах или в плагинах. Он, в основном, обрабатывает REST-операции, проверяя их и обновляя соответствующие объекты в etcd (и событийно в других хранилищах). 4.3<strong>Scheduler</strong>- привязывает незапущенные pod'ы к нодам через вызов /binding API. Scheduler подключаем; планируется поддержка множественных scheduler'ов и пользовательских scheduler'ов. 5.<strong>Kubernetes Controller Manager Server</strong>- все остальные функции уровня кластера представлены в Controller Manager. Например, ноды обнаруживаются, управляются и контролируются средствами node controller. Эта сущность в итоге может быть разделена на отдельные компоненты, чтобы сделать их независимо подключаемыми.</p>
15
<p>Архитектура: 1.<strong>Нода Kubernetes</strong>- при взгляде на архитектуру системы мы можем разбить его на сервисы, которые работают на каждой ноде, и сервисы уровня управления кластера. На каждой ноде Kubernetes запускаются сервисы, необходимые для управления нодой со стороны мастера и для запуска приложений. И, конечно, на каждой ноде запускается Docker. Docker обеспечивает загрузку образов и запуск контейнеров. 2.<strong>Kubelet</strong>- Kubelet управляет pod'ами их контейнерами, образами, разделами. 3.<strong>Kube-Proxy</strong>- на каждой ноде запускается простой proxy-балансировщик. Этот сервис запускается на каждой ноде и настраивается в Kubernetes API. Kube-Proxy может выполнять простейшее перенаправление потоков TCP и UDP (round robin) между набором бэкендов. 4.<strong>Компоненты управления Kubernetes</strong>- система управления Kubernetes разделена на несколько компонентов. 4.1<strong>Сервер хранения ключевой информации etcd</strong>- состояние мастера хранится в экземпляре etcd. Это обеспечивает надёжное хранение конфигурационных данных и своевременное оповещение прочих компонентов об изменении состояния. 4.2<strong>Kubernetes API Server</strong>- обеспечивает работу api-сервера. Он предназначен для того, чтобы быть CRUD-сервером со встроенной бизнес-логикой, реализованной в отдельных компонентах или в плагинах. Он, в основном, обрабатывает REST-операции, проверяя их и обновляя соответствующие объекты в etcd (и событийно в других хранилищах). 4.3<strong>Scheduler</strong>- привязывает незапущенные pod'ы к нодам через вызов /binding API. Scheduler подключаем; планируется поддержка множественных scheduler'ов и пользовательских scheduler'ов. 5.<strong>Kubernetes Controller Manager Server</strong>- все остальные функции уровня кластера представлены в Controller Manager. Например, ноды обнаруживаются, управляются и контролируются средствами node controller. Эта сущность в итоге может быть разделена на отдельные компоненты, чтобы сделать их независимо подключаемыми.</p>
16
16