logo
Alauda Container Platform
English
Русский
English
Русский
logo
Alauda Container Platform
Навигация

Обзор

Архитектура
Примечания к выпуску

Установка

Обзор

Подготовка к установке

Предварительные требования
Загрузка
Предварительная обработка узлов
Установка
Восстановление после катастрофы для глобального кластера

Обновление

Обзор
Подготовка к обновлению
Обновление глобального кластера
Обновление рабочих кластеров

Пользовательский интерфейс

Веб-консоль

Обзор
Доступ к веб-консоли
Настройка веб-консоли
Настройка левой навигации

CLI Инструменты

ACP CLI (ac)

Начало работы с ACP CLI
Настройка ACP CLI
Использование команд ac и kubectl
Управление профилями CLI
Расширение ACP CLI с помощью плагинов
AC CLI Developer Command Reference
AC CLI Справочник команд администратора
violet CLI

Настройка

Конфигурация Feature Gate

Кластеры

Обзор
Неизменяемая инфраструктура

Управление узлами

Обзор
Добавление узлов в локальные кластеры
Управление узлами
Мониторинг узлов

Управляемые кластеры

обзор

Импорт кластеров

Обзор
Импорт стандартного кластера Kubernetes
Импорт кластера OpenShift
Импорт кластера Amazon EKS
Импорт кластера GKE
Импорт кластера Huawei Cloud CCE (публичное облако)
Импорт кластера Azure AKS
Импорт кластера Alibaba Cloud ACK
Импорт кластера Tencent Cloud TKE
Регистрация кластера

Инициализация кластера в публичном облаке

Инициализация сети

Конфигурация инициализации сети кластера AWS EKS
Дополнительная информация по AWS EKS
Инициализация конфигурации сети кластера Huawei Cloud CCE
Конфигурация инициализации сети кластера Azure AKS
Конфигурация инициализации сети кластера Google GKE

Инициализация хранилища

Обзор
Конфигурация инициализации хранилища кластера AWS EKS
Инициализация конфигурации хранилища кластера Huawei Cloud CCE
Конфигурация инициализации хранилища кластера Azure AKS
Конфигурация инициализации хранилища кластера Google GKE

Как сделать

Настройка сети для импортируемых кластеров
Получение информации о импортируемом кластере
Доверие небезопасному реестру образов
Сбор сетевых данных с сетевых карт с пользовательскими именами
Создание локального кластера
Хостинг контрольной плоскости
Планирование узлов кластера
Шифрование etcd

Как сделать

Добавление внешнего адреса для встроенного реестра
Выбор контейнерного рантайма
Обновление учетных данных публичного репозитория

Резервное копирование и восстановление

Обзор
Установка
Репозиторий резервного копирования

Управление резервным копированием

Резервное копирование ETCD
Создание расписания резервного копирования приложения
Хуки

Управление восстановлением

Выполнение задачи восстановления приложения
Замена реестра образов

Сетевые взаимодействия

Введение

Архитектура

Понимание Kube-OVN
Понимание ALB
Понимание MetalLB

Основные понятия

Совместимость ALB с аннотациями Ingress-NGINX
Сравнение Service, Ingress, Gateway API и ALB Rule
GatewayAPI

Руководства

Создание сервисов
Создание Ingress
Создание доменного имени
Создание сертификатов
Создание пула внешних IP-адресов
Создание BGP-пиров
Настройка подсетей
Настройка сетевых политик
Создание Admin Network Policies
Настройка сети Kube-OVN для поддержки нескольких сетевых интерфейсов Pod (Alpha)
Настройка сетевых политик кластера
Настройка Egress Gateway
Наблюдаемость сети
Настройка правил ALB
Межкластерное соединение (Alpha)
Endpoint Health Checker
NodeLocal DNSCache

Как сделать

Подготовка физической сети Kube-OVN Underlay
Soft Data Center LB Solution (Alpha)
Автоматическое взаимное подключение подсетей Underlay и Overlay
Установка Ingress-Nginx через Cluster Plugin
Установка Ingress-Nginx через Ingress Nginx Operator
Задачи для Ingress-Nginx

ALB

Auth
Развертывание высокодоступного VIP для ALB
Модификация заголовков
HTTP Redirect
L4/L7 Таймаут
ModSecurity
TCP/HTTP Keepalive
Использование OAuth Proxy с ALB
Настройка GatewayApi Gateway через ALB
Привязка NIC в ALB
Принятие решений по выбору производительности ALB
Развертывание ALB
Проброс IPv6-трафика на IPv4-адреса внутри кластера через ALB
OTel
ALB Monitoring
CORS
Политика сессионной аффинности балансировки нагрузки в ALB
Перезапись URL
Calico Network поддерживает шифрование WireGuard
Kube-OVN Overlay Network поддерживает шифрование IPsec
Руководство пользователя DeepFlow

Устранение неполадок

Как решить проблемы межузловой коммуникации в ARM-средах?
Определение причины ошибки

Хранение

Введение

Основные понятия

Основные понятия
Persistent Volume
Режимы доступа и режимы томов

Руководства

Создание Storage Class типа CephFS File Storage
Создание класса блочного хранилища CephRBD
Создание локального Storage Class TopoLVM
Создание общего класса хранения NFS
Развертывание компонента Volume Snapshot
Создание PV
Создание PVC
Использование снимков томов

Как сделать

Generic ephemeral volumes
Использование emptyDir
Настройка постоянного хранилища с использованием NFS
Руководство по аннотированию возможностей стороннего хранилища

Устранение неполадок

Восстановление после ошибки расширения PVC
Конфигурация машины

Масштабируемость и производительность

Оценка ресурсов для глобального кластера
Оценка ресурсов для рабочей нагрузки кластера
Повышение стабильности Kubernetes для крупных кластеров
Конфигурация диска

Хранение

Распределённое хранилище Ceph

Введение

Установка

Создание кластера стандартного типа
Создание Stretch Type кластера
Архитектура

Основные понятия

Основные концепции

Руководства

Доступ к сервисам хранения
Управление Storage Pools
Развертывание компонентов на конкретных узлах
Добавление устройств/классов устройств
Мониторинг и оповещения

Как сделать

Настройка выделенного кластера для распределённого хранилища
Очистка распределённого хранилища

Восстановление после сбоев

Восстановление после сбоев файлового хранилища
Восстановление после сбоев блочного хранилища
Восстановление после сбоев в объектном хранилище
Обновление параметров оптимизации
Создание пользователя ceph object store

MinIO Object Storage

Введение
Установка
Архитектура

Основные понятия

Основные концепции

Руководства

Добавление пула хранения
Мониторинг и оповещения

Как сделать

Восстановление данных после аварий

Локальное хранилище TopoLVM

Введение
Установка

Руководства

Управление устройствами
Мониторинг и оповещения

Как сделать

Резервное копирование и восстановление PVC файловой системы TopoLVM с помощью Velero

Безопасность

Alauda Container Security

Безопасность и соответствие

Соответствие требованиям

Введение
Установка Alauda Container Platform Compliance с Kyverno

Как сделать

Конфигурация доступа к приватному реестру
Политика проверки подписи образов
Политика проверки подписей образов с использованием Secrets
Политика проверки реестра образов
Политика предотвращения выхода из контейнера
Политика Принудительного Применения Security Context
Политика сетевой безопасности
Политика безопасности томов

API Refiner

Введение
Установка Alauda Container Platform API Refiner
О сервисе соответствия Alauda Container Platform

Пользователи и роли

Пользователь

Введение

Руководства

Управление ролями пользователей
Создание пользователя
Управление пользователями

Группа

Введение

Руководства

Управление ролями групп пользователей
Создание локальной группы пользователей
Управление членством в локальной группе пользователей

Роль

Введение

Руководства

Создание роли
Управление пользовательскими ролями

IDP

Введение

Руководства

Управление LDAP
Управление OIDC

Устранение неполадок

Удаление пользователя

Политика пользователя

Введение

Мультиарендность (Project)

Введение

Руководства

Создание проекта
Управление квотами проекта
Управление проектом
Управление кластером проекта
Управление участниками проекта

Аудит

Введение

Телеметрия

Установка

Сертификаты

Автоматическая ротация сертификатов Kubernetes
cert-manager
Сертификаты OLM
Мониторинг сертификатов

Виртуализация

Виртуализация

Обзор

Введение
Установка

Образы

Введение

Руководства

Добавление образов виртуальных машин
Обновление/Удаление образов виртуальных машин
Обновление/удаление учетных данных образа

Как сделать

Создание образов Windows на основе ISO с использованием KubeVirt
Создание образов Linux на основе ISO с использованием KubeVirt
Экспорт образов виртуальных машин
Разрешения

Виртуальная машина

Введение

Руководства

Создание виртуальных машин/групп виртуальных машин
Пакетные операции с виртуальными машинами
Вход в виртуальную машину с использованием VNC
Управление ключевыми парами
Управление виртуальными машинами
Мониторинг и оповещения
Быстрый поиск виртуальных машин

Как сделать

Настройка проброса USB-хоста
Горячая миграция виртуальной машины
Восстановление виртуальной машины
Клонирование виртуальных машин в KubeVirt
Подготовка среды для физического GPU Passthrough
Настройка высокой доступности для виртуальных машин
Создание шаблона ВМ на основе существующей виртуальной машины

Устранение неполадок

Миграция Pod виртуальных машин и восстановление после аварийного завершения работы узлов виртуальных машин
Сообщения об ошибках горячей миграции и решения

Сеть

Введение

Руководства

Настройка сети

Как сделать

Контроль сетевых запросов виртуальной машины через Network Policy
Настройка SR-IOV
Настройка виртуальных машин для использования режима сетевого биндинга с поддержкой IPv6

Хранение данных

Введение

Руководства

Управление виртуальными дисками

Резервное копирование и восстановление

Введение

Руководства

Использование снимков

Разработчик

Обзор

Быстрый старт

Creating a simple application via image

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

Построение архитектуры приложения

Основные понятия

Типы приложений
Custom Applications
Типы рабочих нагрузок
Понимание параметров
Понимание переменных окружения
Понимание команд запуска
Описание единиц ресурсов

Пространства имён

Создание пространств имён
Импорт пространств имён
Resource Quota
Limit Range
Pod Security Admission
Назначение UID/GID
Коэффициент Overcommit
Управление участниками пространства имён
Обновление Namespaces
Удаление/Исключение Namespaces

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

Создание приложений из образа
Создание приложений из Chart
Создание приложений из YAML
Создание приложений из кода
Creating applications from Operator Backed
Создание приложений с использованием CLI

Эксплуатация и сопровождение приложений

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

Установка Alauda Container Platform Argo Rollouts
Application Blue Green Deployment
Application Canary Deployment
Описание статуса

KEDA (Kubernetes Event-driven Autoscaling)

KEDA Overview
Установка KEDA

Как сделать

Интеграция ACP Monitoring с плагином Prometheus
Приостановка автоскейлинга в KEDA
Настройка HPA
Запуск и остановка приложений
Настройка VerticalPodAutoscaler (VPA)
Настройка CronHPA
Обновление приложений
Экспорт приложений
Обновление и удаление Chart-приложений
Управление версиями приложений
Удаление приложений
Обработка ошибок нехватки ресурсов
Проверки состояния

Рабочие нагрузки

Deployments
DaemonSets
StatefulSets
CronJobs
Jobs
Pods
Контейнеры
Работа с Helm charts

Конфигурации

Настройка ConfigMap
Настройка Secrets

Наблюдаемость приложения

Мониторинговые панели
Логи
События

Как сделать

Настройка правил срабатывания планировщика задач

Образы

Обзор образов

Как сделать

Создание образов
Управление образами

Реестр

Введение

Установка

Установка через YAML
Установка через Web UI

Руководство пользователя

Распространённые операции с командами CLI
Using Alauda Container Platform Registry in Kubernetes Clusters

Source to Image

Обзор

Введение
Архитектура
Примечания к выпуску
Политика жизненного цикла

Установка

Installing Alauda Container Platform Builds

Обновление

Обновление сборок Alauda Container Platform

Руководства

Управление приложениями, созданными из кода

Как сделать

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

Стратегия изоляции узлов

Введение
Архитектура

Основные понятия

Основные понятия

Руководства

Создание стратегии изоляции узлов
Разрешения
Часто задаваемые вопросы

GitOps

Введение

Установка

Установка Alauda Build of Argo CD
Установка Alauda Container Platform GitOps

Обновление

Обновление Alauda Container Platform GitOps
Архитектура

Основные понятия

GitOps

Концепция Argo CD

Введение
Application
ApplicationSet
Tool
Helm
Kustomize
Directory
Sync
Health

Концепции GitOps в Alauda Container Platform

Введение
Alauda Container Platform GitOps Sync and Health Status

Руководства

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

Creating GitOps Application
Creating GitOps ApplicationSet

Наблюдаемость GitOps

Argo CD Component Monitoring
GitOps Applications Ops

Как сделать

Интеграция репозиториев кода через панель управления Argo CD
Создание приложения Argo CD через панель управления Argo CD
Создание Argo CD Application через веб-консоль
Как получить информацию для доступа к Argo CD
Устранение неполадок

Расширение

Обзор
Оператор
Плагин кластера
Загрузка пакетов

Наблюдаемость

Обзор

Мониторинг

Введение
Установка

Архитектура

Архитектура модуля мониторинга
Руководство по выбору компонента мониторинга
Планирование ёмкости компонента мониторинга
Основные понятия

Руководства

Управление метриками
Управление оповещениями
Управление уведомлениями
Управление мониторинговыми панелями
Управление Probe

Как сделать

Резервное копирование и восстановление данных мониторинга Prometheus
Резервное копирование и восстановление данных мониторинга VictoriaMetrics
Сбор сетевых данных с сетевых интерфейсов с пользовательскими именами

Распределённое трассирование

Введение
Установка
Архитектура
Основные понятия

Руководства

Query Tracing
Query Trace Logs

Как сделать

Безвредная интеграция трассировки в Java-приложения
Бизнес-логи, связанные с TraceID

Устранение неполадок

Невозможно выполнить запрос требуемого трассирования
Неполные данные трассировки

Логи

Введение
Установка

Архитектура

Архитектура модуля логирования
Руководство по выбору компонента логирования
Планирование ёмкости компонента логирования
Основные понятия

Руководства

Логи

Как сделать

Как архивировать логи в стороннее хранилище
Как взаимодействовать с внешними кластерами ES Storage

События

Введение
События

Инспекция

Введение
Архитектура

Руководства

Inspection
Component Health Status

Аппаратные ускорители

О Alauda Build of Hami
О плагине устройства NVIDIA GPU от Alauda Build

Alauda Service Mesh

Service Mesh 1.x
Service Mesh 2.x

Alauda AI

О Alauda AI

Alauda DevOps

О платформе Alauda DevOps

Управление затратами Alauda

О системе управления затратами Alauda

Alauda Application Services

Обзор

Введение
Архитектура
Установка
Обновление

Alauda Database Service для MySQL

О сервисе Alauda Database Service для MySQL-MGR
О сервисе Alauda Database Service для MySQL-PXC

Сервис кэширования Alauda для Redis OSS

О сервисе Alauda Cache Service for Redis OSS

Alauda Streaming Service for Kafka

О сервисе Alauda Streaming Service for Kafka

Сервис потоковой передачи Alauda для RabbitMQ

О сервисе Alauda Streaming Service for RabbitMQ

Поддержка PostgreSQL в Alauda

О поддержке PostgreSQL в Alauda

Управление операциями

Введение

Управление шаблонами параметров

Введение

Руководства

Управление шаблонами параметров

Управление резервным копированием

Введение

Руководства

Внешнее хранилище S3
Управление резервным копированием

Управление инспекциями

Введение

Руководства

Создание задачи инспекции
Задача Exec Inspection
Обновление и удаление задач инспекции

Как сделать

Как настроить расписание инспекций?

Рекомендации по оптимизации инспекций

MySQL

Оптимизация IO нагрузки MySQL
Оптимизация использования памяти MySQL
Оптимизация использования дискового пространства MySQL
Оптимизация количества активных потоков MySQL
Оптимизация блокировок строк MySQL

Redis

Redis BigKey
Высокая загрузка CPU в Redis
Высокое использование памяти в Redis

Kafka

Высокая загрузка CPU в Kafka
Оптимизация Rebalance в Kafka
Оптимизация использования памяти Kafka
Оптимизация пространства хранения Kafka

RabbitMQ

Обработка исключений базы данных RabbitMQ Mnesia

Управление оповещениями

Введение

Руководства

Взаимосвязь с возможностями платформы

Управление обновлениями

Введение

Руководства

Обновление экземпляра

Справочник API

Обзор

Введение
Руководство по использованию Kubernetes API

Advanced APIs

Alert APIs

AlertHistories [v1]
AlertHistoryMessages [v1]
AlertStatus [v2]
SilenceStatus [v2]

Event APIs

Search

Log APIs

Aggregation
Archive
Context
Search

Monitoring APIs

Indicators [monitoring.alauda.io/v1beta1]
Metrics [monitoring.alauda.io/v1beta1]
Variables [monitoring.alauda.io/v1beta1]

Kubernetes APIs

Alert APIs

AlertTemplate [alerttemplates.aiops.alauda.io/v1beta1]
PrometheusRule [prometheusrules.monitoring.coreos.com/v1]

Inspection APIs

Inspection [inspections.ait.alauda.io/v1alpha1]

Notification APIs

Notification [notifications.ait.alauda.io/v1beta1]
NotificationGroup [notificationgroups.ait.alauda.io/v1beta1]
NotificationTemplate [notificationtemplates.ait.alauda.io/v1beta1]
Предыдущая страницаРабочие нагрузки
Следующая страницаDaemonSets

Просмотреть полную документацию в формате PDF

#Deployments

#Содержание

#Понимание Deployments

Обратитесь к официальной документации Kubernetes: Deployments

Deployment — это ресурс высокого уровня в Kubernetes для управления и обновления реплик Pod'ов декларативным способом. Он предоставляет надежный и гибкий способ определить, как должно работать ваше приложение, включая количество поддерживаемых реплик и безопасное выполнение rolling update.

Deployment — это объект в API Kubernetes, который управляет Pods и ReplicaSets. При создании Deployment Kubernetes автоматически создает ReplicaSet, который отвечает за поддержание заданного количества реплик Pod'ов.

Используя Deployments, вы можете:

  • Декларативное управление: определить желаемое состояние приложения, и Kubernetes автоматически обеспечит соответствие фактического состояния кластера желаемому.
  • Контроль версий и откат: отслеживать каждую ревизию Deployment и легко откатываться к предыдущей стабильной версии при возникновении проблем.
  • Обновления без простоя: постепенно обновлять приложение с помощью стратегии rolling update без прерывания сервиса.
  • Самовосстановление: Deployment автоматически заменяет экземпляры Pod, если они падают, завершаются или удаляются с узла, обеспечивая постоянное наличие заданного количества Pod'ов.

Как это работает:

  1. Вы определяете желаемое состояние приложения через Deployment (например, какой образ использовать, сколько реплик запускать).
  2. Deployment создает ReplicaSet, чтобы обеспечить запуск указанного количества Pod'ов.
  3. ReplicaSet создает и управляет фактическими экземплярами Pod.
  4. При обновлении Deployment (например, смена версии образа) создается новый ReplicaSet, который постепенно заменяет старые Pod'ы новыми согласно стратегии rolling update, пока все новые Pod'ы не запустятся, после чего удаляется старый ReplicaSet.

#Создание Deployments

#Создание Deployment с помощью CLI

#Предварительные требования

  • Убедитесь, что kubectl настроен и подключен к вашему кластеру.

#Пример YAML файла

# example-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment # Имя Deployment
  labels:
    app: nginx # Метки для идентификации и выбора
spec:
  replicas: 3 # Желаемое количество реплик Pod
  selector:
    matchLabels:
      app: nginx # Селектор для выбора Pod, управляемых этим Deployment
  template:
    metadata:
      labels:
        app: nginx # Метки Pod, должны совпадать с selector.matchLabels
    spec:
      containers:
        - name: nginx
          image: nginx:1.14.2 # Образ контейнера
          ports:
            - containerPort: 80 # Открытый порт контейнера
          resources: # Лимиты и запросы ресурсов
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 200m
              memory: 256Mi

#Создание Deployment через YAML

# Шаг 1: Создать Deployment через yaml
kubectl apply -f example-deployment.yaml

# Шаг 2: Проверить статус Deployment
kubectl get deployment nginx-deployment # Просмотр Deployment
kubectl get pod -l app=nginx # Просмотр Pod, созданных этим Deployment

#Создание Deployment через веб-консоль

#Предварительные требования

Получите адрес образа. Источником образов могут быть репозитории образов, интегрированные администратором платформы через toolchain, либо репозитории образов сторонних платформ.

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

#Процедура — Настройка базовой информации

  1. В Container Platform перейдите в Workloads > Deployments в левой боковой панели.
  2. Нажмите Create Deployment.
  3. Выберите или введите образ и нажмите Confirm.
INFO

Примечание: При использовании образов из репозитория, интегрированного в веб-консоль, можно фильтровать образы по Already Integrated. Integration Project Name, например, образы (docker-registry-projectname), включают имя проекта projectname в этой веб-консоли и имя проекта containers в репозитории образов.

  1. В разделе Basic Info настройте декларативные параметры для workloads Deployment:

    ПараметрыОписание
    ReplicasОпределяет желаемое количество реплик Pod в Deployment (по умолчанию: 1). Настраивается в зависимости от требований к нагрузке.
    More > Update StrategyНастраивает стратегию rollingUpdate для обновлений без простоя:
    Max surge (maxSurge):
    • Максимальное количество Pod, которое может превышать желаемое число реплик во время обновления.
    • Принимает абсолютные значения (например, 2) или проценты (например, 20%).
    • Вычисление процентов: ceil(current_replicas × percentage).
    • Пример: 4.1 → 5 при расчете от 10 реплик.
    Max unavailable (maxUnavailable):
    • Максимальное количество Pod, которые могут быть временно недоступны во время обновления.
    • Процентные значения не могут превышать 100%.
    • Вычисление процентов: floor(current_replicas × percentage).
    • Пример: 4.9 → 4 при расчете от 10 реплик.
    Примечания:
    1. Значения по умолчанию: maxSurge=1, maxUnavailable=1, если явно не заданы.
    2. Незапущенные Pod (например, в состояниях Pending/CrashLoopBackOff) считаются недоступными.
    3. Одновременные ограничения:
    • maxSurge и maxUnavailable не могут оба быть 0 или 0%.
    • Если процентные значения для обоих параметров равны 0, Kubernetes принудительно устанавливает maxUnavailable=1 для обеспечения прогресса обновления.
    Пример:
    Для Deployment с 10 репликами:
    • maxSurge=2 → Общее количество Pod во время обновления: 10 + 2 = 12.
    • maxUnavailable=3 → Минимальное количество доступных Pod: 10 - 3 = 7.
    • Это обеспечивает доступность при контролируемом развертывании.

#Процедура — Настройка Pod

Примечание: В кластерах с разной архитектурой, при развертывании образов одной архитектуры, убедитесь, что настроены правильные Node Affinity Rules для планирования Pod.

  1. В разделе Pod настройте параметры контейнерного рантайма и управления жизненным циклом:

    ПараметрыОписание
    VolumesМонтирование персистентных томов в контейнеры. Поддерживаемые типы томов: PVC, ConfigMap, Secret, emptyDir, hostPath и др. Для деталей реализации смотрите Volume Mounting Guide.
    Pull SecretТребуется только при загрузке образов из сторонних реестров (через ручной ввод URL образа).
    Примечание: Секрет для аутентификации при загрузке образа из защищенного реестра.
    Close Grace PeriodВремя (по умолчанию: 30s), отведенное Pod для корректного завершения после получения сигнала на остановку.
    - В этот период Pod завершает текущие запросы и освобождает ресурсы.
    - Установка 0 приводит к немедленному удалению (SIGKILL), что может вызвать прерывание запросов.
  1. Node Affinity Rules
ПараметрыОписание
More > Node SelectorОграничивает Pod узлами с определенными метками (например, kubernetes.io/os: linux).
Node OS Selector
More > AffinityОпределяет тонкие правила планирования на основе существующих.
Типы Affinity:
  • Pod Affinity: Планировать новые Pod на узлах, где уже размещены определённые Pod (одинаковый топологический домен).
  • Pod Anti-affinity: Запретить совместное размещение новых Pod с определёнными Pod.
Режимы применения:
  • requiredDuringSchedulingIgnoredDuringExecution: Pod планируются только если правила выполнены.
  • preferredDuringSchedulingIgnoredDuringExecution: Приоритет узлам, удовлетворяющим правилам, но допускаются исключения.
Поля конфигурации:
  • topologyKey: Метка узла, определяющая топологические домены (по умолчанию: kubernetes.io/hostname).
  • labelSelector: Фильтр целевых Pod с помощью запросов по меткам.
  1. Настройка сети
    • Kube-OVN

      ПараметрыОписание
      Bandwidth LimitsОбеспечивает QoS для сетевого трафика Pod:
      • Ограничение исходящего трафика: Максимальная скорость исходящего трафика (например, 10Mbps).
      • Ограничение входящего трафика: Максимальная скорость входящего трафика.
      SubnetНазначение IP из предопределенного пула подсети. Если не указано, используется подсеть по умолчанию для namespace.
      Static IP AddressПривязка постоянных IP-адресов к Pod:
      • Несколько Pod из разных Deployments могут претендовать на один IP, но одновременно использовать его может только один Pod.
      • Критично: Количество статических IP должно быть ≥ количеству реплик Pod.
    • Calico

      ПараметрыОписание
      Static IP AddressНазначение фиксированных IP с жестким ограничением уникальности:
      • Каждый IP может быть привязан только к одному Pod в кластере.
      • Критично: Количество статических IP должно быть ≥ количеству реплик Pod.

#Процедура — Настройка контейнеров

  1. В разделе Container настройте соответствующую информацию согласно следующим инструкциям.

    ПараметрыОписание
    Resource Requests & Limits
    • Requests: Минимальные CPU/память, необходимые для работы контейнера.
    • Limits: Максимальные CPU/память, разрешённые во время выполнения контейнера. Для определения единиц смотрите Resource Units.
    Коэффициент overcommit namespace:
    • Без коэффициента overcommit:
      Если существуют квоты ресурсов namespace: Запросы/лимиты контейнера наследуют значения по умолчанию namespace (можно изменить).
      Если квот нет: Нет значений по умолчанию; задается пользовательский Request.
    • С коэффициентом overcommit:
      Запросы рассчитываются автоматически как Limits / Overcommit ratio (неизменяемо).
    Ограничения:
    • Request ≤ Limit ≤ максимальная квота namespace.
    • Изменение коэффициента overcommit требует пересоздания pod для вступления в силу.
    • Коэффициент overcommit отключает ручную настройку request.
    • При отсутствии квот namespace — нет ограничений ресурсов контейнера.
    Extended ResourcesНастройка расширенных ресурсов, доступных в кластере (например, vGPU, pGPU).
    Volume MountsКонфигурация персистентного хранилища. Смотрите Инструкции по монтированию томов.
    Операции:
    • Существующие тома pod: нажмите Add
    • Отсутствуют тома pod: нажмите Add & Mount
    Параметры:
    • mountPath: путь в файловой системе контейнера (например, /data)
    • subPath: относительный путь файла/директории внутри тома.
      Для ConfigMap/Secret: выбор конкретного ключа
    • readOnly: монтировать только для чтения (по умолчанию: чтение-запись)
    Смотрите Kubernetes Volumes.
    PortsОткрытие портов контейнера.
    Пример: Открыть TCP порт 6379 с именем redis.
    Поля:
    • protocol: TCP/UDP
    • Port: открываемый порт (например, 6379)
    • name: DNS-совместимый идентификатор (например, redis)
    Startup Commands & ArgumentsПереопределение стандартных ENTRYPOINT/CMD:
    Пример 1: Выполнить top -b
    - Command: ["top", "-b"]
    - ИЛИ Command: ["top"], Args: ["-b"]
    Пример 2: Вывод $MESSAGE:
    /bin/sh -c "while true; do echo $(MESSAGE); sleep 10; done"
    Смотрите Определение команд.
    More > Environment Variables
    • Статические значения: прямые пары ключ-значение
    • Динамические значения: ссылки на ключи ConfigMap/Secret, поля pod (fieldRef), метрики ресурсов (resourceFieldRef)
    Примечание: Переменные окружения переопределяют настройки образа/конфигурационного файла.
    More > Referenced ConfigMapsВнедрение целого ConfigMap/Secret как переменных окружения. Поддерживаемые типы Secret: Opaque, kubernetes.io/basic-auth.
    More > Health Checks
    • Liveness Probe: Проверка здоровья контейнера (перезапуск при сбое)
    • Readiness Probe: Проверка доступности сервиса (удаление из endpoints при сбое)
    Смотрите Параметры проверки здоровья.
    More > Log FilesНастройка путей логов:
    - По умолчанию: сбор stdout
    - Шаблоны файлов: например, /var/log/*.log
    Требования:
    • Драйвер хранения overlay2: поддерживается по умолчанию
    • devicemapper: необходимо вручную монтировать EmptyDir в каталог логов
    • Узлы Windows: обеспечить монтирование родительского каталога (например, c:/a для c:/a/b/c/*.log)
    More > Exclude Log FilesИсключение определённых логов из сбора (например, /var/log/aaa.log).
    More > Execute before StoppingВыполнение команд перед завершением контейнера.
    Пример: echo "stop"
    Примечание: Время выполнения команды должно быть меньше terminationGracePeriodSeconds pod.
  2. Нажмите Add Container (вверху справа) ИЛИ Add Init Container.

    Смотрите Init Containers. Init Container:

    1. Запускается перед контейнерами приложения (последовательное выполнение).
    2. Освобождает ресурсы после завершения.
    3. Удаление разрешено, если:
      • Pod содержит >1 контейнера приложения И ≥1 init контейнер.
      • Не разрешено для Pod с одним контейнером приложения.
  3. Нажмите Create.

#Справочная информация

#Инструкции по монтированию томов
ТипНазначение
Persistent Volume ClaimПривязывает существующий PVC для запроса персистентного хранилища.

Примечание: Выбираются только привязанные PVC (с ассоциированным PV). Непривязанные PVC вызовут ошибку создания pod.
ConfigMapМонтирует полные/частичные данные ConfigMap как файлы:
  • Полный ConfigMap: создает файлы с именами ключей под путем монтирования
  • Выбор subpath: монтирует конкретный ключ (например, my.cnf)
SecretМонтирует полные/частичные данные Secret как файлы:
  • Полный Secret: создает файлы с именами ключей под путем монтирования
  • Выбор subpath: монтирует конкретный ключ (например, tls.crt)
Ephemeral VolumesВременный том, предоставляемый кластером, с возможностями:
  • Динамическое выделение
  • Жизненный цикл связан с pod
  • Поддержка декларативной конфигурации
Сценарий использования: временное хранение данных. Смотрите Ephemeral Volumes
Empty DirectoryВременное хранилище для совместного использования между контейнерами в одном pod:
  • Создается на узле при старте pod
  • Удаляется при удалении pod
Сценарий использования: обмен файлами между контейнерами, временное хранение данных. Смотрите EmptyDir
Host PathМонтирует директорию хоста (должна начинаться с /, например, /volumepath).

#Проверки здоровья

  • Пример YAML файла для проверок здоровья
  • Параметры настройки проверок здоровья в веб-консоли

#Управление Deployments

#Управление Deployment с помощью CLI

#Просмотр Deployment

  • Проверьте, что Deployment создан.

    kubectl get deployments
  • Получите подробную информацию о вашем Deployment.

    kubectl describe deployments

#Обновление Deployment

Выполните следующие шаги для обновления Deployment:

  1. Обновим Pods nginx, чтобы использовать образ nginx:1 .16.1.

    kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.16.1

    или используйте следующую команду:

    kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1

    Также можно отредактировать Deployment и изменить .spec.template.spec.containers[0].image с nginx:1.14.2 на nginx:1.16.1:

    kubectl edit deployment/nginx-deployment
  2. Для просмотра статуса развертывания выполните:

    kubectl rollout status deployment/nginx-deployment

    Выполните kubectl get rs, чтобы увидеть, что Deployment обновил Pods, создав новый ReplicaSet и масштабируя его до 3 реплик, а старый ReplicaSet масштабируется до 0 реплик.

    kubectl get rs

    Выполнение kubectl get pods теперь должно показывать только новые Pods:

    kubectl get pods

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

Вы можете масштабировать Deployment с помощью следующей команды:

kubectl scale deployment/nginx-deployment --replicas=10

#Откат Deployment

  • Предположим, что вы ошиблись при обновлении Deployment, указав имя образа как nginx:1.161 вместо nginx:1.16.1:

    kubectl set image deployment/nginx-deployment nginx=nginx:1.161
  • Развертывание застряло. Вы можете проверить это, посмотрев статус развертывания:

    kubectl rollout status deployment/nginx-deployment

#Удаление Deployment

Удаление Deployment также удалит управляемый им ReplicaSet и все связанные Pods.

kubectl delete deployment <deployment-name>

#Управление Deployment через веб-консоль

#Просмотр Deployment

Вы можете просмотреть Deployment, чтобы получить информацию о вашем приложении.

  1. В Container Platform перейдите в Workloads > Deployments.
  2. Найдите нужный Deployment.
  3. Нажмите на имя Deployment, чтобы увидеть Details, Topology, Logs, Events, Monitoring и др.

#Обновление Deployment

  1. В Container Platform перейдите в Workloads > Deployments.
  2. Найдите нужный Deployment.
  3. В выпадающем меню Actions выберите Update, чтобы открыть страницу редактирования Deployment.

#Удаление Deployment

  1. В Container Platform перейдите в Workloads > Deployments.
  2. Найдите нужный Deployment.
  3. В выпадающем меню Actions нажмите кнопку Delete в колонке операций и подтвердите.

#Устранение неполадок с помощью CLI

Если у Deployment возникают проблемы, вот несколько распространенных методов диагностики.

#Проверка статуса Deployment

kubectl get deployment nginx-deployment
kubectl describe deployment nginx-deployment # Просмотр подробных событий и статуса

#Проверка статуса ReplicaSet

kubectl get rs -l app=nginx
kubectl describe rs <replicaset-name>

#Проверка статуса Pod

kubectl get pods -l app=nginx
kubectl describe pod <pod-name>

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

kubectl logs <pod-name> -c <container-name> # Просмотр логов конкретного контейнера
kubectl logs <pod-name> --previous         # Просмотр логов предыдущего завершенного контейнера

#Вход в Pod для отладки

kubectl exec -it <pod-name> -- /bin/bash # Вход в shell контейнера

#Проверка конфигурации здоровья

Убедитесь, что livenessProbe и readinessProbe настроены корректно, а конечные точки проверки здоровья вашего приложения отвечают правильно. Устранение неполадок с проверками

#Проверка лимитов ресурсов

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