0Pricing
Docker & DevOps Fundamentals · Урок

Pods: самые малые единицы

Изучите Pods — фундаментальные строительные блоки Kubernetes — и узнайте, как их определять и управлять ими.

«Pods: самые малые единицы» — бесплатный урок Docker & DevOps Fundamentals на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Docker & DevOps Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Что такое под Kubernetes

В Kubernetes наименьшая и основная единица, которую можно развернуть, — это под. Представьте под как отдельный «дом», в котором находится один или несколько контейнеров.

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

Pods: самые малые единицы — иллюстрация 1

Под и контейнер: в чём разница

Возможно, Вы задаётесь вопросом: «Зачем мне под, если у меня уже есть контейнеры?» Вот ключевое различие:

  • Контейнер (например, контейнер Docker) — это пакет с приложением и его зависимостями.
  • Под — это абстракция Kubernetes, объединяющая один или несколько контейнеров и предоставляющая им общие ресурсы и единую сетевую идентичность.

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

Зачем нужны поды

Поды предоставляют несколько важных преимуществ:

  • Общее сетевое пространство имён: Все контейнеры внутри пода используют один и тот же IP-адрес и сетевые порты. Они могут взаимодействовать друг с другом через localhost.
  • Общее хранилище: Поды могут совместно использовать тома хранилища, благодаря чему контейнеры внутри одного пода получают доступ к общим данным.
  • Совместное размещение и планирование: Контейнеры, которым необходимо тесно взаимодействовать (например, приложение и агент ведения журналов), гарантированно запускаются на одном узле и всегда планируются вместе.

Структура определения пода

Поды определяются с помощью файлов конфигурации YAML. Ниже перечислены основные компоненты, которые Вы встретите:

  • apiVersion: указывает версию API Kubernetes (например, v1).
  • kind: тип объекта Kubernetes — Pod.
  • metadata: содержит такие сведения, как name и labels пода.
  • spec: желаемое состояние пода, включая запускаемые containers, volumes и другие параметры.

Определение пода с одним контейнером

Большинство подов содержат один контейнер. Это распространённый вариант для простых приложений. Ниже приведено базовое определение YAML для пода с веб-сервером Nginx:

apiVersion: v1
kind: Pod
metadata:
  name: my-nginx-pod
  labels:
    app: webserver
spec:
  containers:
  - name: nginx-container
    image: nginx:latest
    ports:
    - containerPort: 80

Развёртывание первого пода

Чтобы создать под из файла YAML, используется команда kubectl apply. Она указывает Kubernetes создать или обновить ресурсы на основе Вашего определения.

Предположим, Вы сохранили предыдущее определение пода Nginx в файле nginx-pod.yaml. Развернуть его можно так:

  • kubectl apply -f nginx-pod.yaml

Затем Kubernetes запланирует запуск этого пода на одном из рабочих узлов.

Проверка подов: получение сведений и описание

После развёртывания необходимо проверить состояние подов. Ниже приведены две важные команды kubectl:

  • kubectl get pods: выводит список всех подов в текущем пространстве имён, показывая их имя, состояние и узел.
  • kubectl describe pod <pod-name>: предоставляет подробные сведения о конкретном поде, включая события, состояние контейнера и назначенные ресурсы.

Эти команды необходимы для мониторинга и устранения неполадок.

Поды с несколькими контейнерами: сайдкары

Хотя поды с одним контейнером встречаются часто, в некоторых сценариях полезны поды с несколькими контейнерами. Классический пример — шаблон сайдкара.

Контейнер-сайдкар работает вместе с контейнером основного приложения в одном поде и выполняет вспомогательные задачи, например:

  • ведение журналов и мониторинг
  • синхронизация данных
  • проксирование сетевого трафика

Они используют общие сеть и хранилище пода, что делает взаимодействие эффективным.

Пример: под с несколькими контейнерами

Вот пример пода с несколькими контейнерами. В нём есть веб-сервер Nginx и контейнер-сайдкар busybox, который записывает журналы в общий том.

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  volumes:
  - name: shared-log-volume
    emptyDir: {}
  containers:
  - name: web-server
    image: nginx:latest
    ports:
    - containerPort: 80
    volumeMounts:
    - name: shared-log-volume
      mountPath: /var/log/nginx
  - name: log-writer
    image: busybox:latest
    command: ["/bin/sh", "-c", "while true; do echo 'Hello from sidecar!' >> /var/log/app.log; sleep 5; done"]
    volumeMounts:
    - name: shared-log-volume
      mountPath: /var/log/app

Проверьте знания о подах

Какое из следующих утверждений о подах Kubernetes является TRUE?

Итоги: поды — основная единица

Вы только что узнали о подах Kubernetes — фундаментальных строительных блоках приложений в кластере.

  • Поды объединяют один или несколько контейнеров и предоставляют им общие ресурсы.
  • Они обеспечивают общие сеть и хранилище, а также совместное размещение связанных контейнеров.
  • Поды определяются с помощью YAML и развёртываются командой kubectl apply.
  • Команды kubectl get pods и kubectl describe pod помогают отслеживать их состояние.

Далее мы рассмотрим дополнительные команды kubectl для взаимодействия с Вашим кластером!

Часто задаваемые вопросы

Урок «Pods: самые малые единицы» бесплатный?

Да — полный текст урока «Pods: самые малые единицы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Docker & DevOps Fundamentals, подпишись на CoddyKit PRO. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Pods: самые малые единицы»?

Изучите Pods — фундаментальные строительные блоки Kubernetes — и узнайте, как их определять и управлять ими. Ты практикуешь Docker & DevOps Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Docker & DevOps Fundamentals?

Предыдущий опыт не требуется. Docker & DevOps Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Pods: самые малые единицы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Docker & DevOps Fundamentals?

Да. Каждый урок Docker & DevOps Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Архитектура Kubernetes
  2. Pods: самые малые единицы
  3. Основные команды kubectl
  4. Пространства имён и метки для организации
← Назад к Docker & DevOps Fundamentals