Pods: самые малые единицы
Изучите Pods — фундаментальные строительные блоки Kubernetes — и узнайте, как их определять и управлять ими.
«Pods: самые малые единицы» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Что такое под Kubernetes
В Kubernetes наименьшая и основная единица, которую можно развернуть, — это под. Представьте под как отдельный «дом», в котором находится один или несколько контейнеров.
Поды являются абстракцией над контейнерами. Они представляют выполняющийся процесс в Вашем кластере и объединяют контейнеры приложения, ресурсы хранилища, уникальный сетевой IP-адрес и параметры, определяющие правила запуска контейнеров.

Под и контейнер: в чём разница
Возможно, Вы задаётесь вопросом: «Зачем мне под, если у меня уже есть контейнеры?» Вот ключевое различие:
- Контейнер (например, контейнер 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) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Pods: самые малые единицы»?
Изучите Pods — фундаментальные строительные блоки Kubernetes — и узнайте, как их определять и управлять ими. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Pods: самые малые единицы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Архитектура Kubernetes
- Pods: самые малые единицы
- Основные команды kubectl
- Пространства имён и метки для организации