Advanced
Тема интерфейса
Cloud Container Engine

Настройка параметров жизненного цикла контейнера

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

Сценарий

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

CCE предоставляет следующие функции обратного вызова жизненного цикла:

  • Команда запуска: выполняется для запуска контейнера. Подробнее см. Команды запуска.
  • Post-Start: выполняется сразу после запуска контейнера. Подробнее см. Обработка после запуска.
  • Pre-Stop: выполняется перед остановкой контейнера. Функция обработки pre-stop помогает гарантировать, что сервисы, работающие в pod, могут завершиться заранее в случае обновления или удаления pod. Подробнее см. Обработка Pre-Stop.

Команды запуска

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

Docker‑образ содержит метаданные, в которых хранится информация об образе. Если команды и аргументы жизненного цикла не заданы, CCE запускает команды и аргументы по умолчанию, то есть инструкции Docker ENTRYPOINT и CMD, задаются при создании образа.

Если команды и аргументы, используемые для запуска контейнера, задаются при создании приложения, команды по умолчанию ENTRYPOINT и CMD перезаписываются во время сборки образа. Правила следующие:

Таблица 1 Команды и аргументы, используемые для запуска контейнера

ENTRYPOINT образа

CMD образа

Команда для запуска контейнера

Параметры для запуска контейнера

Выполняемая команда

[touch]

[/root/test]

Не задано

Не задано

[touch /root/test]

[touch]

[/root/test]

[mkdir]

Не задано

[mkdir]

[touch]

[/root/test]

Не задано

[/opt/test]

[touch /opt/test]

[touch]

[/root/test]

[mkdir]

[/opt/test]

[mkdir /opt/test]

  1. Войдите в консоль CCE. При создании рабочей нагрузки настройте информацию о контейнере и выберите Жизненный цикл.
  2. Введите команду и аргументы в Команда запуска вкладке.

    Таблица 2 Команда запуска контейнера

    Элемент конфигурации

    Процедура

    Команда

    Введите исполняемую команду, например, /run/server.

    Если несколько исполняемых команд, запишите их в разных строках.

    ПРИМЕЧАНИЕ:

    В случае нескольких команд рекомендуется запускать /bin/sh или другие оболочки команды. Другие команды используются как параметры.

    Аргументы

    Введите аргумент, управляющий командой запуска контейнера, например, --port=8080.

    Если несколько аргументов, разделяйте их в разных строках.

Обработка после запуска

  1. Войдите в консоль CCE. При создании рабочей нагрузки настройте информацию о контейнере и выберите Жизненный цикл.
  2. Установите параметры обработки после запуска на Post-Start вкладке.

    Таблица 3 Параметры обработки Post-Start

    Параметр

    Описание

    CLI

    Укажите команды, которые будут выполнены в контейнере для обработки post-start. Формат команды: Команда Args[1] Args[2].... Команда является системной командой или пользовательской исполняемой программой. Если путь не указан, будет выбран исполняемый файл из пути по умолчанию. При необходимости выполнения нескольких команд запишите их в скрипт. Команды, выполняемые в фоновом режиме или асинхронно, не поддерживаются.

    Пример команды:

    exec:
    command:
    - /install.sh
    - install_agent

    Ввод /install install_agent в скрипте. Эта команда указывает, что install.sh будет выполнен после успешного создания контейнера.

    HTTP‑запрос

    Отправить HTTP‑запрос для post‑start обработки. Связанные параметры описаны ниже:

    • Путь: (необязательно) URL запроса.
    • Порт: (обязательно) порт запроса.
    • Хост: (необязательно) запрашиваемый IP‑адрес хоста. Значение по умолчанию — IP‑адрес pod.

Pre-Stop Processing

  1. Войдите в консоль CCE. При создании рабочей нагрузки настройте информацию о контейнере и выберите Lifecycle.
  2. Установите параметры pre‑start обработки на Pre-Stop вкладке.

    Таблица 4 Параметры pre‑stop обработки

    Параметр

    Описание

    CLI

    Установите команды, которые будут выполнены в контейнере для pre‑stop обработки. Формат команды: Команда Args[1] Args[2].... Команда Команда является системной командой или пользовательской исполняемой программой. Если путь не указан, будет выбрана исполняемая программа из пути по умолчанию. Если необходимо выполнить несколько команд, запишите их в скрипт для выполнения.

    Пример команды:

    exec:
    command:
    - /uninstall.sh
    - uninstall_agent

    Ввод /uninstall uninstall_agent в скрипте. Эта команда указывает, что uninstall.sh будет выполнен перед тем, как контейнер завершит выполнение и остановится.

    HTTP‑запрос

    Отправить HTTP‑запрос для pre‑stop обработки. Связанные параметры описаны ниже:

    • Путь: (необязательно) URL запроса.
    • Порт: (обязательно) порт запроса.
    • Хост: (необязательно) запрашиваемый IP‑адрес хоста. Значение по умолчанию — IP‑адрес pod.

Пример YAML

В этом разделе в качестве примера используется Nginx для описания настройки жизненного цикла контейнера.

В следующем конфигурационном файле postStart команда определяется для запуска install.sh команды в /bin/bash директории. preStop определяется для запуска uninstall.sh команда.

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
command:
- sleep 3600 # Startup command
imagePullPolicy: Always
lifecycle:
postStart:
exec:
command:
- /bin/bash
- install.sh # Post-start command
preStop:
exec:
command:
- /bin/bash
- uninstall.sh # Pre-stop command
name: nginx
imagePullSecrets:
- name: default-secret