Сценарий
Развёртывания — это нагрузки (например, Nginx), которые не хранят данные или состояние. Вы можете создавать развёртывания в консоли CCE или с помощью команд kubectl.
Предварительные требования
- Прежде чем создавать нагрузку, у вас должен быть доступный кластер. Подробнее о том, как создать кластер, смотрите Покупка CCE Standard/Turbo кластера.
- Чтобы обеспечить публичный доступ к нагрузке, убедитесь, что EIP или балансировщик нагрузки привязан к хотя бы одному узлу кластера.Note
Если pod имеет несколько контейнеров, убедитесь, что порты, используемые контейнерами, не конфликтуют друг с другом. В противном случае создание развёртывания завершится ошибкой.
Использование консоли CCE
- Войдите в консоль CCE.
- Нажмите имя кластера, чтобы перейти в консоль кластера, выберите Нагрузки в навигационной панели и нажмите Создать нагрузку в правом верхнем углу.
- Настройте нагрузку.
Основная информация
- Тип нагрузки: Выберите Развёртывание. Подробнее о типах нагрузок смотрите Обзор.
- Имя нагрузки: Укажите имя нагрузки. Введите от 1 до 63 символов, начиная со строчной буквы и заканчивая строчной буквой или цифрой. Разрешены только строчные буквы, цифры и дефисы (-).
- Пространство имён: Выберите пространство имён нагрузки. Значение по умолчанию — default. Вы также можете нажать Создать пространство имён чтобы создать его. Подробнее смотрите Создание пространства имён.
- Поды: Введите количество pod-ов нагрузки.
- Среда выполнения контейнера: В стандартном кластере CCE по умолчанию используется общая среда выполнения, в то время как кластер CCE Turbo поддерживает как общую, так и безопасную среды выполнения. Подробнее о различиях смотрите Безопасная и общая среды выполнения.
- Синхронизация часового пояса: Укажите, следует ли включить синхронизацию часового пояса. После включения синхронизации часовой пояс будет использоваться как в контейнере, так и в узле. Функция синхронизации часового пояса зависит от локального диска, смонтированного в контейнер. Не изменяйте и не удаляйте часовой пояс. Подробнее смотрите Настройка синхронизации часового пояса.
Настройки контейнера
- Информация о контейнере
В pod можно настроить несколько контейнеров. Вы можете нажать Добавить контейнер справа, чтобы настроить несколько контейнеров для pod.
- Основная информация: Настройте базовую информацию о контейнере.
Параметр
Описание
Имя контейнера
Укажите имя контейнера.
Политика загрузки
Обновление образа или политика загрузки. Если выбрать Всегда, образ будет загружаться из репозитория каждый раз. Если не выбрать Всегда, будет предпочтительно использован существующий образ узла. Если образ отсутствует, он будет загружен из репозитория.
Имя образа
Нажмите Выбрать образ и выберите образ, используемый контейнером.
Чтобы использовать сторонний образ, введите путь к образу напрямую. Убедитесь, что учётные данные доступа к образу можно использовать для доступа к репозиторию образов. Подробнее смотрите Использование сторонних образов.
Тег образа
Выберите тег образа для развёртывания.
Квота CPU
- Запрос: минимальное количество ядер CPU, требуемое контейнером. Значение по умолчанию — 0.25 ядра.
- Лимит: максимальное количество ядер CPU, которое может использовать контейнер. Это предотвращает чрезмерное использование ресурсов контейнерами.
Если Запрос и Лимит не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Запрос и Лимит, смотрите Настройка характеристик контейнера.
Квота памяти
- Запрос: минимальное количество памяти, требуемое контейнером. Значение по умолчанию — 512 MiB.
- Лимит: максимальное количество памяти, доступное контейнеру. При превышении установленного лимита памяти контейнер будет завершён.
Если Запрос и Лимит не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Запрос и Лимит, смотрите Настройка спецификаций контейнера.
(Optional) Квота GPU
Настраивается только когда кластер содержит узлы GPU и CCE AI Suite (NVIDIA GPU) дополнение установлено.
- Не использовать: GPU не будет использован.
- GPU карта: GPU выделен для контейнера.
- Виртуализация GPU: процент ресурсов GPU, используемых контейнером. Например, если этот параметр установлен в 10%, контейнер будет использовать 10% ресурсов GPU.
Для получения подробной информации о том, как использовать GPU в кластере, см. Стандартное планирование GPU в Kubernetes.
(Optional) Привилегированный контейнер
Программы в привилегированном контейнере имеют определённые привилегии.
Если Привилегированный контейнер включён, контейнеру присваиваются привилегии. Например, привилегированные контейнеры могут управлять сетевыми устройствами на хосте и изменять параметры ядра.
(Optional) Init-контейнер
Определяет, использовать контейнер как init-контейнер. Init-контейнер не поддерживает проверку состояния.
Init-контейнер — специальный контейнер, который запускается до запуска остальных контейнеров приложений в поде. Каждый под может содержать несколько контейнеров. Кроме того, под может содержать один или несколько init‑контейнеров. Контейнеры приложений в поде запускаются и работают только после завершения работы всех init‑контейнеров. Для получения подробной информации см. Init‑контейнеры.
(Optional) Параметр запуска
Добавьте параметры запуска для контейнера. Для получения подробной информации см. Под. CCE поддерживает следующие параметры запуска:
- stdin: позволяет контейнерам получать ввод из внешних источников, таких как терминалы или другие потоки ввода.
- tty: выделяет псевдотерминал контейнерам, позволяя отправлять им команды так, как если бы вы использовали локальный терминал.
В большинстве случаев tty включён вместе со stdin, указывая, что терминал (tty) связан со стандартным вводом (stdin) контейнера. Это позволяет выполнять интерактивные операции, аналогично kubectl exec -i -t команде. Разница в том, что этот параметр был настроен при запуске пода.
- (Optional) Жизненный цикл: Настройте операции, выполняемые на конкретной фазе жизненного цикла контейнера, таких как команда запуска, после запуска и перед остановкой. Для получения подробной информации см. Настройка параметров жизненного цикла контейнера.
- (Optional) Проверка состояния: Установите пробу живости, пробу готовности и пробу запуска по мере необходимости. Для получения подробной информации см. Настройка проверки состояния контейнера.
- (Optional) Переменные среды: Настройте переменные окружения контейнера с помощью пар «ключ‑значение». Эти переменные передают внешнюю информацию в контейнеры, запущенные в подах, и могут гибко изменяться после развертывания приложения. Для получения подробной информации см. Настройка переменных среды.
- (Optional) Хранение данных: Подключите локальное или облачное хранилище к контейнеру. Сценарии применения и режимы монтирования различаются в зависимости от типа хранилища. Для получения подробной информации см. Хранилище.Note
Если рабочая нагрузка содержит более одного пода, тома EVS нельзя монтировать.
- (Optional) Контекст безопасности: Назначьте разрешения контейнеру для защиты системы и остальных контейнеров от воздействия. Укажите идентификатор пользователя, чтобы назначить разрешения контейнеру и предотвратить влияние на системы и другие контейнеры.
- (Optional) Ведение журналов: По умолчанию отправляйте стандартные журналы вывода контейнера в AOM без ручных настроек. Вы можете вручную задать путь сбора журналов. Для получения подробной информации см. Сбор журналов контейнера с помощью ICAgent.
Чтобы отключить стандартный вывод текущей нагрузки, добавьте аннотацию kubernetes.AOM.log.stdout: [] in Метки и аннотации. Для получения подробной информации о том, как использовать эту аннотацию, см. Таблица 1.
- Основная информация: Настройте базовую информацию о контейнере.
- Учётные данные доступа к образу: Выберите учётные данные, используемые для доступа к репозиторию образов. Значение по умолчанию — default-secret. Вы можете использовать default-secret для доступа к образам в SWR Shared Edition. Подробности о default-secret, см. default-secret.
- (Optional) GPU: Все выбрано по умолчанию. Экземпляр нагрузки будет запланирован на узел указанного типа GPU.
(Optional) Настройки сервиса
Сервис обеспечивает внешний доступ к подам. При статическом IP-адресе сервис перенаправляет входящий трафик к подам и автоматически распределяет нагрузку между этими подами.
Вы также можете создать сервис после создания нагрузки. Для получения подробной информации о сервисах разных типов см. Обзор.
(Опциональные) Расширенные настройки
- Обновление: Укажите режим обновления и параметры рабочей нагрузки. Пошаговое обновление и Замена обновления доступны. Для получения подробной информации см. Настройка политик обновления рабочей нагрузки.
- Планирование: Настройте политики привязанности и антипривязанности для гибкого планирования рабочей нагрузки. Предоставляются привязанность нагрузки и привязанность узла.
- Привязанность нагрузки: Предлагаются общие политики привязанности нагрузки для быстрого развертывания привязанности нагрузки.
- Не настроено: Политика привязанности нагрузки не настроена.
- Предпочтительное развертывание в нескольких AZ: Поды рабочей нагрузки предпочтительно распределяются по узлам в разных AZ через антипривязанность подов.
- Принудительное развертывание в нескольких AZ: Поды рабочей нагрузки принудительно распределяются по узлам в разных AZ через антипривязанность подов (podAntiAffinity). Если AZ меньше, чем подов, лишние поды не смогут запуститься.
- Настройка привязанности: Политики привязанности и антипривязанности могут быть настроены. Для получения подробной информации см. Настройка привязанности или антипривязанности рабочей нагрузки (podAffinity или podAntiAffinity).
- Привязанность узла: Предлагаются общие политики привязанности узлов для быстрого развертывания привязанности нагрузки.
- Не настроено: Политика привязанности узла не настроена.
- Указать узел: Поды рабочей нагрузки могут быть развернуты на указанных узлах через привязанность узла (nodeAffinity). Если узел не указан, поды будут случайным образом распределены согласно политике планирования кластера по умолчанию.
- Указать пул узлов: Поды рабочей нагрузки могут быть развернуты в указанном пуле узлов через привязанность узла (nodeAffinity). Если пул узлов не указан, поды будут случайным образом распределены согласно политике планирования кластера по умолчанию.
- Настройка привязанности: Политики привязанности и антипривязанности могут быть настроены. Для получения подробной информации см. Настройка планирования привязанности узлов (nodeAffinity).
- Привязанность нагрузки: Предлагаются общие политики привязанности нагрузки для быстрого развертывания привязанности нагрузки.
- Толерация: Использование как taints, так и tolerations позволяет (не принудительно) планировать под на узел с соответствующими taints и управлять политиками выселения подов после того, как узел, на котором находится под, будет помечен taint. Для получения подробной информации см. Настройка политик толерации.
- Метки и Аннотации: Добавьте метки или аннотации для подов, используя пары «ключ‑значение». После ввода ключа и значения нажмите Подтвердить. Для получения подробной информации о том, как использовать и настраивать метки и аннотации, см. Настройка меток и аннотаций.
- DNS: Настройте отдельную политику DNS для рабочей нагрузки. Для получения подробной информации см. Конфигурация DNS.
- Конфигурация сети
- Ограничение полосы пропускания входящего/исходящего трафика подов: Вы можете установить ограничение полосы пропускания для подов. Для получения подробной информации см. Настройка QoS для пода.
- Включить указанную конфигурацию сети контейнера: доступно только для кластеров, поддерживающих эту функцию. После включения указанной конфигурации сети контейнера рабочая нагрузка будет создана с использованием подсети контейнера и группы безопасности из конфигурации. Для получения подробной информации см. Привязка подсети и группы безопасности к пространству имён или рабочей нагрузке с использованием конфигурации сети контейнера.
- Укажите имя конфигурации сети контейнера: можно выбрать только пользовательскую конфигурацию сети контейнера, тип связанного ресурса которой — рабочая нагрузка.
- Общая полоса пропускания IPv6: доступно только для кластеров, поддерживающих эту функцию. После включения функции можно настроить общую полосу пропускания для пода с IPv6 dual-stack ENI. Для получения подробной информации см. Настройка общей полосы пропускания для пода с IPv6 dual-stack ENI.
- Нажмите Создать рабочую нагрузку в правом нижнем углу. Через некоторое время рабочая нагрузка переходит в Запуск состояние.
Использование kubectl
Следующая процедура использует Nginx в качестве примера, чтобы описать, как создать рабочую нагрузку с помощью kubectl.
- Используйте kubectl для доступа к кластеру. Для получения подробной информации см. Доступ к кластеру с помощью kubectl.
- Создайте и отредактируйте nginx-deployment.yaml файл. nginx-deployment.yaml это пример имени файла, его можно переименовать по необходимости.vi nginx-deployment.yaml
Ниже приведён пример YAML‑файла. Для получения дополнительной информации о Deployment, см. Документация Kubernetes.
apiVersion: apps/v1kind: Deploymentmetadata:name: nginxspec:replicas: 1selector:matchLabels:app: nginxstrategy:type: RollingUpdatetemplate:metadata:labels:app: nginxspec:containers:- image: nginx # If you use an image in My Images, obtain the image path from SWR.imagePullPolicy: Alwaysname: nginximagePullSecrets:- name: default-secretДля получения подробной информации о параметрах см. Таблица 1.
Таблица 1 Параметры Deployment YAML Параметр
Описание
Обязательно/Опционально
apiVersion
API версия.
NOTE:Установите этот параметр в зависимости от версии кластера.
- Для кластеров версии v1.17 и новее формат apiVersion для Deployments: apps/v1.
- Для кластеров версии v1.15 и более ранних формат apiVersion для Deployments: extensions/v1beta1.
Обязательно
kind
Тип создаваемого объекта.
Обязательно
метаданные
Метаданные ресурсного объекта.
Обязательно
name
Имя Deployment.
Обязательно
spec
Подробное описание Deployment.
Обязательно
реплики
Количество pod'ов.
Обязательно
селектор
Определяет контейнерные pod'ы, которые могут управляться Deployment.
Обязательно
стратегия
Режим обновления. Возможные значения:
- RollingUpdate
- ReplaceUpdate
По умолчанию используется RollingUpdate.
Опционально
шаблон
Подробное описание созданного контейнерного pod.
Обязательно
метаданные
Метаданные.
Обязательно
метки
metadata.labels: Метки контейнера.
Опционально
spec:
контейнеры
- образ (обязательно): Имя образа контейнера.
- imagePullPolicy (опционально): Политика получения образа. Варианты включают Always (попытка загрузки образов каждый раз), Never (только локальные образы), и IfNotPresent (использование локальных образов, если они доступны; загрузка образов, если локальные недоступны). Значение по умолчанию — Always.
- name (обязательно): Имя контейнера.
Обязательно
imagePullSecrets
Имя секрета, используемого при получении образа. Если используется частный образ, этот параметр обязателен.
- Чтобы получить образ из Software Repository for Container (SWR), установите этот параметр в default-secret.
- Чтобы получить образ из стороннего репозитория образов, установите этот параметр в имя созданного секрета.
Опционально
- Создать Deployment.kubectl create -f nginx-deployment.yaml
Если отображается следующая информация, Deployment создаётся.
deployment.apps/nginx created - Получить статус Deployment.kubectl get deployment
Если отображается следующая информация, Deployment работает.
NAME READY UP-TO-DATE AVAILABLE AGEnginx 1/1 1 1 4m5sПараметры
- NAME: Имя приложения, запущенного в pod.
- READY: указывает количество доступных рабочих нагрузок. Значение отображается как "количество доступных pod/количество ожидаемых pod".
- UP-TO-DATE: указывает количество реплик, которые были обновлены.
- AVAILABLE: указывает количество доступных pod.
- AGE: период, в течение которого Deployment продолжает работать
- Если к Deployment будет осуществляться доступ через сервис ClusterIP или NodePort, настройте режим доступа. Подробности см. Network.
- Сценарий
- Требования
- Использование консоли CCE
- Использование kubectl