website/content/ru/docs/tutorials/kubernetes-basics/expose/expose-intro.html

109 lines
9.3 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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>&lt;NodeIP&gt;:&lt;NodePort&gt;</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>