Облачная платформаAdvanced

Создание Deployment

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

A Deployment это приложение Kubernetes, которое не сохраняет данные или состояние во время выполнения. Каждый pod одного Deployment идентичен, что обеспечивает беспрепятственное создание, удаление и замену без влияния на функциональность приложения. Deployments идеальны для безсостояния приложений, таких как web front-end servers и microservices, которые не требуют хранения данных. Они позволяют легко управлять жизненным циклом приложений, включая обновления, откаты и масштабирование.

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

  • Кластер доступен. Для получения подробной информации о том, как создать кластер, смотрите Покупка CCE Standard/Turbo Cluster.
  • В кластере имеются доступные узлы. Если узел недоступен, создайте его, обратившись к Создание Node.

Использование CCE Console

  1. Войдите в CCE console.
  2. Нажмите название кластера, чтобы перейти в консоль кластера, выберите Рабочие нагрузки в панели навигации, и нажмите Создать рабочую нагрузку в правом верхнем углу.
  3. Настроить основную информацию о рабочей нагрузке.

    Параметр

    Описание

    Тип рабочей нагрузки

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

    Имя рабочей нагрузки

    Введите имя рабочей нагрузки. Введите от 1 до 63 символов, начиная с маленькой буквы и заканчивая маленькой буквой или цифрой. Разрешены только маленькие буквы, цифры и дефисы (-).

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

    Выберите пространство имен для рабочей нагрузки. Значение по умолчанию — по умолчанию. Вы также можете нажать Создать пространство имен чтобы создать его. Для получения подробностей см. Создание пространства имен.

    Поды

    Введите количество подов рабочей нагрузки.

    Среда выполнения контейнера

    Стандартный кластер CCE использует общую среду выполнения по умолчанию, тогда как кластер CCE Turbo поддерживает как общие, так и защищённые среды выполнения. Для получения подробностей о их различиях см. Защищённая среда выполнения и общая среда выполнения.

    Синхронизация часового пояса

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

  4. Настройте Настройки контейнера для нагрузки.

    • Информация о контейнере: Нажмите Добавить контейнер справа, чтобы настроить несколько контейнеров для пода.
      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.

  5. (Optional) Настроить настройки сервиса связанныe с рабочей нагрузкой.

    Service предоставляет внешний доступ для pod. При статическом IP-адресе Service перенаправляет трафик доступа к pod и автоматически балансирует нагрузку для этих pod.

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

  6. (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

  7. Нажмите Создать нагрузку в правом нижнем углу. Через некоторое время нагрузка переходит в Запущено состояние.

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

Nginx используется как пример для описания того, как создать рабочую нагрузку с помощью kubectl.

  1. Используйте kubectl для доступа к кластеру. Для получения дополнительных сведений см. Доступ к кластеру с использованием kubectl.
  2. Создайте файл с именем nginx-deployment.yaml. nginx-deployment.yaml является примерным именем файла, и вы можете переименовать его при необходимости.

    vi nginx-deployment.yaml

    Ниже приведён пример файла. Для получения подробной информации о конфигурации Deployment см. Официальная документация Kubernetes.

    apiVersion: apps/v1
    kind: Deployment # Workload type
    metadata:
    name: nginx # Workload name
    namespace: default # Namespace where the workload is located
    spec:
    replicas: 1 # Number of pods in the specified workload
    selector:
    matchLabels: # The workload manages pods based on the pod labels in the label selector.
    app: nginx
    template: # Pod configuration
    metadata:
    labels: # Pod labels
    app: nginx
    spec:
    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 policy
    name: nginx # Container name
    resources: # Node resources allocated to the container
    requests: # Requested resources
    cpu: 250m
    memory: 512Mi
    limits: # Resource limit
    cpu: 250m
    memory: 512Mi
    imagePullSecrets: # Secret for image pull
    - name: default-secret

  3. Создайте Deployment.

    kubectl create -f nginx-deployment.yaml

    Если отображается информация, аналогичная приведённой ниже, Deployment создаётся:

    deployment.apps/nginx created

  4. Проверьте статус Deployment.

    kubectl get deployment

    Если Deployment находится в Запущено, это означает, что Deployment был создан.

    NAME READY UP-TO-DATE AVAILABLE AGE
    nginx 1/1 1 1 4m5s

    Параметры

    • NAME: Имя приложения, запущенного в pod.
    • READY: указывает количество доступных рабочих нагрузок. Значение отображается как "количество доступных pod'ов/количество ожидаемых pod'ов".
    • UP-TO-DATE: указывает количество реплик, которые были обновлены.
    • AVAILABLE: указывает количество доступных pod'ов.
    • AGE: период, в течение которого Deployment работает

  5. Если к Deployment будет осуществляться доступ через Service типа ClusterIP или NodePort, создайте такой Service. Подробности см Сеть.