Как развернуть Docker-контейнеры в Kubernetes: подробная инструкция

Как развернуть Docker-контейнеры в Kubernetes: подробная инструкция

  1. Главная
  2. Блог
  3. Как развернуть Docker-контейнеры в Kubernetes: подробная инструкция

Docker — открытая платформа, предназначенная для автоматизации процессов создания, распространения и запуска программ. Ключевая ее ценность — обеспечение единообразной среды, в которой приложения функционируют стабильно и вне зависимости от операционной системы или платформы.

Где используется

В программировании, например. Также часто встречается в рамках DevOps-практик и администрирования.

Kubernetes — тоже платформа и тоже с открытым исходным кодом, и тоже применяется для автоматизации, но уже контейнеризованных сервисов. Она предлагает механизмы для развертывания приложений, их масштабирования и обеспечения бесперебойной работы.

Архитектура Kubernetes-кластера

Кластер Kubernetes включает два типа узлов:

  1. Control Plane Nodes (узлы плоскости управления) — ранее известные как Master-узлы
  2. Worker Nodes (рабочие узлы)

Control Plane координируют работу системы. Они направляют команды Worker Nodes для запуска или остановки задач, а также мониторят статус самого кластера. Технически Control Plane узлы тоже способны исполнять пользовательские задачи, но с позиции безопасности — это не рекомендуемая практика: если вредоносный код попадет в рабочую нагрузку на таком узле, последствия будут куда серьезнее, чем при его запуске на Worker Node.

 Интересный факт: Истоки Kubernetes ведут к Google, где разработчики вдохновлялись внутренней системой Borg, отточенной годами эксплуатации в гигантских масштабах. Само название "Kubernetes" происходит от греческого слова κυβερνήτης (kybernḗtēs), означающего "кормчий" или "рулевой", что является отсылкой к проекту Borg из вселенной Star Trek.

Контейнеры: что это такое?

Контейнеризация — это упаковывание приложений в изолированные и компактные среды, легко переносимые между разными системами.

От виртуализации контейнеризация отличается фундаментально:

  • Виртуальные машины эмулируют компьютер с собственной операционной системой и ядром, в то время как контейнеры используют ядро хост-системы и изолируют только процессы и ресурсы.
  • Виртуальные машины требуют гипервизор и значительно больше ресурсов.
  • Виртуальные машины являются более универсальным решением, поскольку позволяют запускать разнородные операционные системы с различными ядрами.

Контейнеры более легкие, быстрее запускаются и настраиваются под конкретные задачи.

С точки зрения безопасности, изоляция контейнеров уступает изоляции виртуальных машин. Тем не менее, существуют механизмы для усиления безопасности контейнеров:

  • seccomp-профили
  • AppArmor/SELinux
  • Pod Security Standards
  • Network Policies
  • и другие

Достигаемого уровня изоляции достаточно для большинства сценариев.

Преимущества использования Kubernetes

Kubernetes превосходен для управления контейнерами, и вот почему:

  1. При создании контейнеров на этапе сборки приложение абстрагируется от физической инфраструктуры. Среда разработки и тестирования остается единой — будь то сервер или локальная машина программиста.
  2. Контейнеры легко мигрируют между разными ОС (Ubuntu, RHEL, CoreOS) и облачными платформами (Google Kubernetes Engine, Amazon EKS, Azure AKS).
  3. Kubernetes использует декларативный подход, позволяя задать целевое состояние, автоматически приводя текущую конфигурацию к требуемой. Система самостоятельно запускает новые экземпляры, удаляет устаревшие и оптимизирует распределение ресурсов.
  4. Kubernetes позволяет точно указать требования к процессору и памяти для каждого контейнера, чтобы эффективно использовать ресурсы кластера.
  5. Встроенные механизмы самовосстановления автоматически перезапускают упавшие контейнеры и перемещают рабочие нагрузки при отказе узлов.

Подготовка Docker-образа

Перед созданием Docker-образов необходимо установить Docker на рабочую машину. Метод установки варьируется в зависимости от ОС; подробные инструкции доступны на официальном сайте: https://docs.docker.com/get-docker/

И прежде чем двигаться дальше, давайте разберемся с базовыми концепциями. Они пригодятся позже.

Здесь у нас есть два центральных элемента:

  1. Images (образы) — неизменяемые шаблоны с кодом, зависимостями и настройками приложения.
  2. Containers (контейнеры) — runtime-сущности на основе образа, запущенные экземпляры приложений, которые разворачиваются посредством Docker.

Где разместить Docker-контейнеры для тестов и продакшена

После сборки и публикации образа в реестр, следующим шагом станет выбор надёжной инфраструктуры для запуска контейнеров. Здесь важно учитывать производительность, стабильность и возможность гибкой настройки ресурсов.

Отличным решением для размещения контейнеризованных приложений являются VPS-серверы от PSB.Hosting. Вы получаете:

Такой вариант идеально подходит как для запуска небольших кластеров Kubernetes, так и для продвинутой среды CI/CD, особенно если вы хотите держать всё под контролем без избыточной зависимости от облачных провайдеров.

Создание Dockerfile для приложения

Dockerfile — это текстовый файл с инструкциями, необходимыми для сборки Docker-образа. Вот пример простого Dockerfile для Node.js приложения:

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 3000
CMD ["node", "app.js"]

Этот Dockerfile:

  1. Использует официальный Node.js образ с Alpine Linux
  2. Устанавливает рабочую директорию /app
  3. Копирует файлы package.json и устанавливает зависимости
  4. Копирует остальные файлы приложения
  5. Указывает, что приложение использует порт 3000
  6. Запускает приложение командой node app.js

Сборка и публикация Docker-образа

После создания Dockerfile нужно собрать образ и опубликовать его в реестре:

# Сборка образа
docker build -t myapp:1.0 .

# Тегирование для Docker Hub или другого реестра
docker tag myapp:1.0 username/myapp:1.0

# Публикация в реестре
docker push username/myapp:1.0

Основные объекты Kubernetes

Перед развертыванием приложения в Kubernetes важно понять основные объекты:

  1. Pod — наименьшая единица в Kubernetes, содержит один или несколько контейнеров
  2. Deployment — управляет набором идентичных подов, обеспечивает обновления и масштабирование
  3. Service — обеспечивает стабильный доступ к подам через единый IP-адрес и DNS-имя
  4. ConfigMap и Secret — предоставляют конфигурационные данные подам
  5. Ingress — управляет внешним доступом к сервисам в кластере

Развертывание приложения в Kubernetes

1. Создайте Deployment

Файл deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: username/myapp:1.0
        ports:
        - containerPort: 3000
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "500m"

2. Создайте Service

Файл service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 3000
  type: ClusterIP

3. Опционально: создайте Ingress для внешнего доступа

Файл ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp
            port:
              number: 80

4. Примените конфигурацию к кластеру

# Убедитесь, что kubectl настроен на ваш кластер
kubectl config current-context

# Создайте namespace (не обязательно)
kubectl create namespace myapp

# Примените конфигурацию
kubectl apply -f deployment.yaml -n myapp
kubectl apply -f service.yaml -n myapp
kubectl apply -f ingress.yaml -n myapp

# Проверьте статус развертывания
kubectl get pods -n myapp
kubectl get services -n myapp
kubectl get ingress -n myapp

Масштабирование и обновление приложения

Масштабирование

# Увеличение количества реплик
kubectl scale deployment myapp -n myapp --replicas=5

Обновление образа

# Обновление образа в Deployment
kubectl set image deployment/myapp myapp=username/myapp:2.0 -n myapp

# Проверка статуса обновления
kubectl rollout status deployment/myapp -n myapp

Откат обновления

# Если обновление оказалось неудачным
kubectl rollout undo deployment/myapp -n myapp

Мониторинг и отладка

Просмотр логов

# Получение названия пода
kubectl get pods -n myapp

# Просмотр логов
kubectl logs pod/myapp-abc123 -n myapp

Доступ к контейнеру

# Выполнение команды в контейнере
kubectl exec -it pod/myapp-abc123 -n myapp -- /bin/bash

Мониторинг ресурсов

# Просмотр потребления ресурсов подами
kubectl top pods -n myapp

Главное

Развертывание Docker-контейнеров в Kubernetes требует понимания обеих технологий, но предоставляет значительные преимущества в плане масштабируемости, надежности и управляемости. Следуя этой инструкции, вы сможете создать и развернуть контейнеризованное приложение в Kubernetes-кластере, а также управлять его жизненным циклом.

Для более глубокого изучения Kubernetes рекомендую обратиться к официальной документации: https://kubernetes.io/ru/docs/

Читайте также

Обзор ARNPROXY: серверные, ISP и резидентные прокси в одном кабинете

Обзор ARNPROXY: серверные, ISP и резидентные прокси в одном кабинете

Если на сервере работают парсеры, SEO-мониторинг или автоматизация, сервер — только половина схемы. Вторая половина — IP-адреса, с которых уходят запросы. ARNPROXY закрывает самые частые з

Обзор White Link: стабильные White pages

Обзор White Link: стабильные White pages

Ручное создание вайтпейджей для Google, Meta, TikTok, Bing и других сервисов — разработано для прохождения модерации с первой попытки. White Link — это профессиональный сервис по разработ

Как запустить антидетект-браузер на VPS с мобильными прокси

Как запустить антидетект-браузер на VPS с мобильными прокси

Антидетект-браузер приносит пользу, только когда машина, на которой он работает, стабильна и постоянно онлайн. На ноутбуке он работает, пока вы не закроете крышку, не потеряете соединение или не захот

VPS для скриптов автоматизации: сценарии и выбор сервера

VPS для скриптов автоматизации: сценарии и выбор сервера

Скрипты автоматизации помогают бизнесу справляться с повторяющимися задачами, обрабатывать данные и связывать разные программные системы. Но запускать их на личном компьютере становится неудобно, когд

Прокси и VPS для сбора данных: как устроить связку на примере PreProx

Прокси и VPS для сбора данных: как устроить связку на примере PreProx

Сбор открытых данных, мониторинг цен, проверка рекламы и SEO-позиций по регионам — задачи, которые редко живут на ноутбуке. Скрипты должны работать круглосуточно, а запросы — уходить с адр

Какие прокси нужны для массовой регистрации в Telegram и как не потерять аккаунты

Какие прокси нужны для массовой регистрации в Telegram и как не потерять аккаунты

Регистрация аккаунтов в Telegram — это первое, с чем сталкивается любой, кто планирует масштабную работу в мессенджере. И первая же проблема, которая возникает — это блокировки на этапе со

Почему любому серьезному арбитражнику в 2026 году нужны PSB Hosting, PSB Proxy и PPC Rebels

Почему любому серьезному арбитражнику в 2026 году нужны PSB Hosting, PSB Proxy и PPC Rebels

В 2026 году арбитраж трафика изменился до неузнаваемости. AI Max от Google, ужесточение trust-сигналов, агрессивные антифрод-системы и постоянная «война траста» между платформами и медиаба

Для чего нужны резидентские прокси в арбитраже трафика?

Для чего нужны резидентские прокси в арбитраже трафика?

Резидентские прокси стали важным инструментом для специалистов по арбитражу трафика. Они помогают работать с рекламными платформами, анализировать офферы, тестировать рекламные кампании и управлять не

MobileProxy.Space в 2026: полный обзор мобильных, резидентных и серверных прокси

MobileProxy.Space в 2026: полный обзор мобильных, резидентных и серверных прокси

Подробный обзор сервиса MobileProxy.Space в 2026 году: мобильные, резидентные и серверные прокси, тарифы, настройка, реальные кейсы и советы по выбору для бизнеса и специалистов. Давайте че

Telegram