A Deployment это приложение Kubernetes, которое не сохраняет данные или состояние во время выполнения. Каждый pod одного Deployment идентичен, что обеспечивает беспрепятственное создание, удаление и замену без влияния на функциональность приложения. Deployments идеальны для безсостояния приложений, таких как web front-end servers и microservices, которые не требуют хранения данных. Они позволяют легко управлять жизненным циклом приложений, включая обновления, откаты и масштабирование.
Предварительные требования
- Кластер доступен. Для получения подробной информации о том, как создать кластер, смотрите Покупка CCE Standard/Turbo Cluster.
- В кластере имеются доступные узлы. Если узел недоступен, создайте его, обратившись к Создание Node.
Использование CCE Console
- Войдите в CCE console.
- Нажмите название кластера, чтобы перейти в консоль кластера, выберите Рабочие нагрузки в панели навигации, и нажмите Создать рабочую нагрузку в правом верхнем углу.
- Настроить основную информацию о рабочей нагрузке.
Параметр
Описание
Тип рабочей нагрузки
Выбрать Развертывание. Для получения подробной информации о различных типах рабочих нагрузок см Обзор рабочей нагрузки.
Имя рабочей нагрузки
Введите имя рабочей нагрузки. Введите от 1 до 63 символов, начиная с маленькой буквы и заканчивая маленькой буквой или цифрой. Разрешены только маленькие буквы, цифры и дефисы (-).
Пространство имен
Выберите пространство имен для рабочей нагрузки. Значение по умолчанию — по умолчанию. Вы также можете нажать Создать пространство имен чтобы создать его. Для получения подробностей см. Создание пространства имен.
Поды
Введите количество подов рабочей нагрузки.
Среда выполнения контейнера
Стандартный кластер CCE использует общую среду выполнения по умолчанию, тогда как кластер CCE Turbo поддерживает как общие, так и защищённые среды выполнения. Для получения подробностей о их различиях см. Защищённая среда выполнения и общая среда выполнения.
Синхронизация часового пояса
Настройте, следует ли включать синхронизацию часового пояса. После включения этой функции контейнер и узел будут использовать один и тот же часовой пояс. Синхронизация часового пояса опирается на локальный диск, смонтированный в контейнере. Не изменяйте и не удаляйте локальный диск. Подробнее см. Настройка синхронизации часового пояса.
- Настройте Настройки контейнера для нагрузки.
- Информация о контейнере: Нажмите Добавить контейнер справа, чтобы настроить несколько контейнеров для пода.Caution
Если вы настроили несколько контейнеров для пода, убедитесь, что порты, используемые каждым контейнером, не конфликтуют друг с другом, иначе нагрузка не сможет быть развернута.
- Основная информация: Настройте основную информацию о контейнере.
Параметр
Описание
Имя контейнера
Введите имя контейнера.
Политика получения
Политика обновления образа или получения. Если вы выберете Всегда, образ извлекается из репозитория образов каждый раз. Если вы не выберете Всегда, существующий образ узла используется предпочтительно. Если образ не существует, образ извлекается из репозитория образов.
Имя образа
Нажмите Выберите образ и выберите образ, используемый контейнером.
Чтобы использовать сторонний образ, напрямую введите путь к образу. Убедитесь, что учетные данные доступа к образу могут использоваться для доступа к репозиторию образов. Для получения подробной информации см. Using Third-Party Images.
Тег образа
Выберите тег образа для развертывания.
CPU Квота
- Запрос: минимальное количество ядер CPU, требуемое контейнером. Значение по умолчанию — 0.25 ядра.
- Лимит: максимальное количество ядер CPU, которое может использовать контейнер. Это предотвращает чрезмерное использование ресурсов контейнерами.
Если Запрос и Лимит не указаны, квота не ограничена. Для получения дополнительной информации и рекомендаций о Запрос и Лимит, см. Настройка спецификаций контейнера.
Квота памяти
- Запрос: минимальное количество памяти, требуемое контейнером. Значение по умолчанию — 512 MiB.
- Лимит: максимальное количество памяти, доступное контейнеру. Когда потребление памяти превышает указанное ограничение памяти, контейнер будет завершён.
Если Запрос и Лимит не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Запрос и Лимит, см. Настройка параметров контейнера.
(Необязательно) GPU Квота
Настраивается только когда кластер содержит узлы GPU и CCE AI Suite (NVIDIA GPU) дополнение установлено.
- Не использовать: GPU не будет использоваться.
- GPU карта: GPU предназначен для контейнера.
- GPU виртуализация: процент ресурсов GPU, используемых контейнером. Например, если этот параметр установлен в 10%, контейнер будет использовать 10% ресурсов GPU.
Подробнее о том, как использовать GPU в кластере, см. Стандартное планирование GPU в Kubernetes.
(Optional) Привилегированный контейнер
Программы в привилегированном контейнере имеют определённые привилегии. Если эта опция включена, контейнер получит привилегии. Например, привилегированные контейнеры могут управлять сетевыми устройствами на хост‑машине, изменять параметры ядра, получать доступ ко всем устройствам на узле.
Для получения дополнительной информации см. Pod Стандарты безопасности.
(Optional) Init Container
Использовать ли контейнер в качестве init контейнера. Init контейнер не поддерживает проверку состояния.
Init контейнер — это специальный контейнер, который запускается до того, как в pod запускаются другие контейнеры приложений. Каждый pod может содержать несколько контейнеров. Кроме того, pod может содержать один или несколько init контейнеров. Контейнеры приложений в pod запускаются и работают только после завершения работы всех init контейнеров. Для получения подробной информации, см. Init контейнеры.
(Optional) Параметр запуска
Добавьте параметры запуска для контейнера. Для получения подробной информации, см. Pod. CCE поддерживает следующие параметры запуска:
- stdin: позволяет контейнерам принимать ввод из внешних источников, таких как терминалы или другие потоки ввода.
- tty: выделяет псевдо‑терминал контейнерам, позволяя отправлять им команды так, как если бы вы использовали локальный терминал.
В большинстве случаев tty включен вместе со stdin, указывая на то, что терминал (tty) связан со стандартным вводом (stdin) контейнера. Это позволяет выполнять интерактивные операции, похожие на kubectl exec -i -t команда. Разница в том, что этот параметр был настроен при запуске pod.
- (Необязательно) Жизненный цикл: Настройте операции, которые будут выполнены в определённой фазе жизненного цикла контейнера, таких как Startup Command, Post-Start и Pre-Stop. Для получения подробной информации см. Настройка жизненного цикла контейнера.
- (Необязательно) Проверка состояния: Установите liveness probe, ready probe и startup probe по необходимости. Для получения подробной информации см. Настройка проверки состояния контейнера.
- (Необязательно) Переменные окружения: Настройте переменные для среды выполнения контейнера, используя пары «ключ-значение». Эти переменные передают внешнюю информацию в контейнеры, работающие в pod, и могут гибко изменяться после развертывания приложения. Для получения подробной информации см. Настройка переменных среды.
- (Опционально) Хранилище данных: Подмонтируйте локальное хранилище или облачное хранилище к контейнеру. Сценарии применения и режимы монтирования различаются в зависимости от StorageClass. Для получения подробной информации см. Хранилище.Note
Если рабочая нагрузка содержит более одного pod, тома EVS не могут быть смонтированы.
- (Опционально) Контекст безопасности: Назначьте разрешения контейнера для защиты системы и других контейнеров от воздействия. Укажите идентификатор пользователя, чтобы назначить разрешения контейнера и предотвратить воздействие на системы и другие контейнеры.
- (Опционально) Логирование: По умолчанию отправлять стандартные логи вывода контейнера в AOM, без необходимости ручной настройки. Вы можете вручную настроить путь сбора логов. Для получения подробной информации см. Сбор логов контейнера с использованием ICAgent.
Чтобы отключить сбор стандартных логов вывода текущей рабочей нагрузки, добавьте аннотацию kubernetes.AOM.log.stdout: [] в Метки и аннотации в Расширенные настройки области. Для получения подробной информации о том, как использовать эту аннотацию, см Таблица 1.
- Основная информация: Настройте основную информацию о контейнере.
- Учётные данные доступа к образу: Выберите учётные данные, используемые для доступа к репозиторию образов. Значение по умолчанию — default-secret. Вы можете использовать default-secret для доступа к образам в SWR Shared Edition. Для получения подробной информации о default-secret, см default-secret.
- (Optional) GPU: Все выбирается по умолчанию. Экземпляр рабочей нагрузки будет запланирован на узел указанного типа GPU.
- Информация о контейнере: Нажмите Добавить контейнер справа, чтобы настроить несколько контейнеров для пода.
- (Optional) Настроить настройки сервиса связанныe с рабочей нагрузкой.
Service предоставляет внешний доступ для pod. При статическом IP-адресе Service перенаправляет трафик доступа к pod и автоматически балансирует нагрузку для этих pod.
Вы также можете создать Service после создания рабочей нагрузки. Для получения подробностей о Service разных типов см Обзор Service.
- (Optional) Настроить расширенные настройки для рабочей нагрузки.
Параметр
Описание
Обновление
Укажите режим обновления и параметры рабочей нагрузки. Поэтапное обновление и Замена обновления доступны. Для получения подробной информации см Обновление и откат рабочей нагрузки.
Планирование
Настройте политики аффинности и антаффинности для гибкого планирования рабочих нагрузок. Предоставляются аффинность нагрузки и аффинность узла.
- Аффинность нагрузки: Предлагаются общие политики аффинности нагрузки для быстрого развертывания аффинности нагрузки.
- Не настроено: Политика аффинности нагрузки не настроена.
- Предпочтительно развертывание Multi-AZ: Поды рабочей нагрузки предпочтительно назначаются на узлы в разных AZ через pod anti-affinity.
- Принудительное развертывание в нескольких AZ: Поды рабочей нагрузки принудительно назначаются на узлы в разных AZ через pod anti-affinity (podAntiAffinity). Если AZ меньше, чем подов, дополнительные поды не запустятся.
- Настройка аффинити: Политику аффинити и анти‑аффинити можно настроить. Для подробностей см. Настройка аффинити или анти‑аффинити планирования рабочей нагрузки (podAffinity или podAntiAffinity).
- Node Affinity: Предлагаются типовые политики node affinity для быстрого развертывания аффинити нагрузки.
- Не настроено: Политика node affinity не настроена.
- Укажите узел: Рабочие pod'ы могут быть развернуты на указанных узлах через node affinity (nodeAffinity). Если узел не указан, pod'ы будут размещены случайным образом в соответствии с политикой планирования кластера по умолчанию.
- Укажите пул узлов: Рабочие pod'ы могут быть развернуты в указанном пуле узлов через node affinity (nodeAffinity). Если пул узлов не указан, pod'ы будут размещены случайным образом в соответствии с политикой планирования кластера по умолчанию.
- Настроить привязку: Политики affinity и anti-affinity могут быть настроены. Для подробностей см Configuring Node Affinity Scheduling (nodeAffinity).
Toleration
Использование как taints, так и tolerations позволяет (не принудительно) разместить pod на узле с соответствующими taints и контролировать политики выселения pod после того, как узел, где находится pod, будет помечен taint. Для подробностей см Configuring Tolerance Policies.
Labels and Annotations
Add labels or annotations for pods using key-value pairs. After the setting, click Confirm. For details about labels and annotations, see Configuring Labels and Annotations.
DNS
Configure a separate DNS policy for the workload. For details, see DNS Configuration.
Network Configuration
- Pod ingress/egress bandwidth limit: You can set ingress and egress bandwidth limits for pods. For details, see Configuring QoS for a Pod.
- Включать ли указанную конфигурацию сети контейнера: доступно только для кластеров, поддерживающих эту функцию. После включения указанной конфигурации сети контейнера нагрузка будет использовать подсеть и группу безопасности, определённые в конфигурации. Подробнее см. Привязка подсети и группы безопасности к пространству имён или нагрузке с использованием конфигурации сети контейнера.
- Укажите имя конфигурации сети контейнера: можно выбрать только пользовательскую конфигурацию сети контейнера, тип связанного ресурса которой — нагрузка.
- Общая полоса пропускания IPv6: доступна только для кластеров, поддерживающих эту функцию. После включения функции вы можете настроить общую полосу пропускания для pod с двунаправленными сетевыми интерфейсами IPv6. Подробнее см. Настройка общей полосы пропускания для Dual-Stack pod'ов в CCE Turbo кластере.
- Аффинность нагрузки: Предлагаются общие политики аффинности нагрузки для быстрого развертывания аффинности нагрузки.
- Нажмите Создать нагрузку в правом нижнем углу. Через некоторое время нагрузка переходит в Запущено состояние.
Использование kubectl
Nginx используется как пример для описания того, как создать рабочую нагрузку с помощью kubectl.
- Используйте kubectl для доступа к кластеру. Для получения дополнительных сведений см. Доступ к кластеру с использованием kubectl.
- Создайте файл с именем nginx-deployment.yaml. nginx-deployment.yaml является примерным именем файла, и вы можете переименовать его при необходимости.vi nginx-deployment.yaml
Ниже приведён пример файла. Для получения подробной информации о конфигурации Deployment см. Официальная документация Kubernetes.
apiVersion: apps/v1kind: Deployment # Workload typemetadata:name: nginx # Workload namenamespace: default # Namespace where the workload is locatedspec:replicas: 1 # Number of pods in the specified workloadselector:matchLabels: # The workload manages pods based on the pod labels in the label selector.app: nginxtemplate: # Pod configurationmetadata:labels: # Pod labelsapp: nginxspec:containers:- image: nginx:latest # Specify a container image. If you use an image in My Images, obtain the image path from SWR.imagePullPolicy: Always # Image pull policyname: nginx # Container nameresources: # Node resources allocated to the containerrequests: # Requested resourcescpu: 250mmemory: 512Milimits: # Resource limitcpu: 250mmemory: 512MiimagePullSecrets: # Secret for image pull- name: default-secret - Создайте Deployment.kubectl create -f nginx-deployment.yaml
Если отображается информация, аналогичная приведённой ниже, Deployment создаётся:
deployment.apps/nginx created - Проверьте статус Deployment.kubectl get deployment
Если 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 будет осуществляться доступ через Service типа ClusterIP или NodePort, создайте такой Service. Подробности см Сеть.