109 lines
9.3 KiB
HTML
109 lines
9.3 KiB
HTML
---
|
||
title: Создание сервиса для открытия доступа к приложению
|
||
weight: 10
|
||
---
|
||
|
||
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
|
||
<body>
|
||
|
||
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
|
||
|
||
<div class="layout" id="top">
|
||
|
||
<main class="content">
|
||
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<h3>Темы</h3>
|
||
<ul>
|
||
<li>Узнать о сервисах в Kubernetes</li>
|
||
<li>Разобраться с тем, как метки и объекты LabelSelector связаны с сервисом</li>
|
||
<li>Открыть доступ к приложению вне кластера Kubernetes через сервис</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="col-md-8">
|
||
<h3>Обзор сервисов Kubernetes</h3>
|
||
<p><a href="/docs/concepts/workloads/pods/pod-overview/">Под</a> — это расходный материал в Kubernetes. У подов есть <a href="/docs/concepts/workloads/pods/pod-lifecycle/">жизненный цикл</a>. Когда рабочий узел завершается, запущенные поды в узле также уничтожаются. После этого <a href="/docs/concepts/workloads/controllers/replicaset/">ReplicaSet</a> попытается автоматически вернуть кластер обратно в требуемое состояние, создавая новые поды, чтобы поддержать работоспособность приложения. Другой пример — бэкенд для обработки изображений с 3 репликами. Поскольку это взаимозаменяемые реплики, то они не влияют на фронтенд-часть, даже если под был уничтожен и пересоздан. Тем не менее, каждый под в кластере Kubernetes имеет уникальный IP-адрес, даже под на одном и том же узле, поэтому должен быть способ автоматической координации изменений между подами, чтобы приложения продолжали функционировать.</p>
|
||
|
||
<p>Сервис в Kubernetes — это абстрактный объект, который определяет логический набор подов и политику доступа к ним. Сервисы создают слабую связь между подами, которые от них зависят. Сервис создаётся в формате YAML <a href="/docs/concepts/configuration/overview/#general-configuration-tips">(рекомендуемый формат)</a> или JSON, как и все остальные объекты в Kubernetes. Как правило, набор подов для сервиса определяется <i>LabelSelector</i> (ниже описано, в каких случаях понадобиться сервис без указания <code>selector</code> в спецификации).</p>
|
||
|
||
<p>Хотя у каждого пода есть уникальный IP-адрес, эти IP-адреса не доступны за пределами кластера без использования сервиса. Сервисы позволяют приложениям принимать трафик. Сервисы могут по-разному открыты, в зависимости от указанного поля <code>type</code> в ServiceSpec:</p>
|
||
<ul>
|
||
<li><i>ClusterIP</i> (по умолчанию) - открывает доступ к сервису по внутреннему IP-адресу в кластере. Этот тип делает сервис доступным только внутри кластера.</li>
|
||
<li><i>NodePort</i> - открывает сервис на одном и том же порту каждого выбранного узла в кластере с помощью NAT. Делает сервис доступным вне кластера, используя <code><NodeIP>:<NodePort></code>. Является надмножеством ClusterIP.</li>
|
||
<li><i>LoadBalancer</i> - создает внешний балансировщик нагрузки в текущем облаке (если это поддерживается) и назначает фиксированный внешний IP-адрес для сервиса. Является надмножеством NodePort.</li>
|
||
<li><i>ExternalName</i> - открывает доступ к сервису с указанным именем (определённое в поле <code>externalName </code> в спецификации) и возвращает запись CNAME. Прокси не используется. Для этого типа требуется версия <code>kube-dns</code> 1.7 или выше.</li>
|
||
</ul>
|
||
<p>Более подробно узнать о различных типах сервисах можно в руководстве <a href="/docs/tutorials/services/source-ip/">Использование IP-порта источника</a>. Также изучите <a href="/docs/concepts/services-networking/connect-applications-service">Подключение приложений к сервисам</a>.</p>
|
||
<p>Кроме этого, обратите внимание, что в некоторых случаях в сервисах не определяется <code>selector</code> в спецификации. Сервис без <code>selector</code> не будет создавать соответствующий объект конечной точки (Endpoint). Таким образом, пользователь может вручную назначить сервис определённым конечным точкам. Использование <code>type: ExternalName</code> — это другой вариант использования, когда не нужно определять селектор в сервисе.</p>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="content__box content__box_lined">
|
||
<h3>Краткое содержание</h3>
|
||
<ul>
|
||
<li>Открытие внешнего трафика для подов</li>
|
||
<li>Балансировка нагрузки трафика между подов</li>
|
||
<li>Использование метки</li>
|
||
</ul>
|
||
</div>
|
||
<div class="content__box content__box_fill">
|
||
<p><i>Сервис Kubernetes — это уровень абстракции, который определяет логический набор подов, перенаправляет внешний трафик, балансирует нагрузку и реализует паттерн Service Discovery для этих подов.</i></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<br>
|
||
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<h3>Сервисы и метки</h3>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_04_services.svg" width="150%" height="150%"></p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<p>Сервис направляет трафик через набор подов. Сервисы — это абстракция, позволяющая взаимозаменять поды Kubernetes без ущерба для приложения. Сервисы в Kubernetes находят и маршрутизируют трафик между зависимыми подами (это могут быть фронтенд- и бэкенд-компоненты приложения).</p>
|
||
<p>Сервисы для выбора набора подов используют <a href="/docs/concepts/overview/working-with-objects/labels">метки и селекторы</a>. Метки — пары ключ-значение, добавленные к объектам; например, они могут использоваться чтобы:</p>
|
||
<ul>
|
||
<li>Идентифицировать объекты для окружений разработки, тестирования и продакшена</li>
|
||
<li>Добавить теги версии</li>
|
||
<li>Классифицировать объекты через теги</li>
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<br>
|
||
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_04_labels.svg"></p>
|
||
</div>
|
||
</div>
|
||
<br>
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<p>Метки могут добавляться во время создания объектов или после этого. Они также могут быть изменены в любое время. Теперь давайте откроем доступ к приложению путём создания сервиса и добавление меток.</p>
|
||
</div>
|
||
</div>
|
||
<br>
|
||
<div class="row">
|
||
<div class="col-md-12">
|
||
<a class="btn btn-lg btn-success" href="/ru/docs/tutorials/kubernetes-basics/expose/expose-interactive/" role="button">Начать интерактивный урок <span class="btn__next">›</span></a>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|