Хуки жизненного цикла контейнера являются базовыми механизмами, предоставляемыми Kubernetes. Они позволяют вставлять пользовательскую логику на ключевых этапах жизненного цикла контейнера. Эти хуки обеспечивают тонкий контроль процессов над контейнеризованными приложениями, позволяя приложениям лучше адаптироваться к динамическим характеристикам облачной нативной среды. CCE предоставляет следующие хуки жизненного цикла контейнера. Для получения дополнительной информации см. Container Lifecycle Hooks.
Команда запуска выполняется при старте контейнера. Она используется для определения основного процесса контейнера. Статус основного процесса определяет жизненный цикл контейнера. Если команда не выполнится и политика перезапуска не настроена, контейнер будет завершён.
По умолчанию команда по умолчанию выполняется при запуске образа. Чтобы выполнить конкретную команду или переопределить настройку образа по умолчанию, необходимо выполнить определённые операции. По умолчанию контейнер исполняет предустановленную в образе команду запуска. Образы Docker содержат набор полей метаданных для определения поведения при запуске, включая ENTRYPOINT и CMD. Если команды и аргументы (указанные в Command и Args) не настроены в спецификациях контейнера, используются значения по умолчанию, заданные при сборке образа.
Если команды и аргументы, используемые для запуска контейнера, настроены во время создания рабочей нагрузки, команды по умолчанию ENTRYPOINT и CMD перезаписываются при сборке образа. Правила следующие:
Image ENTRYPOINT | Image CMD | Command to Run a Container | Argument to Run a Container | Command Executed |
|---|---|---|---|---|
[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] |
Параметр | Пример значения | Описание | Пример YAML |
|---|---|---|---|
Команда |
| Введите одну или несколько исполняемых команд. Для нескольких команд разместите каждую на отдельной строке. ПРИМЕЧАНИЕ: При выполнении нескольких команд используйте /bin/sh или другой shell в качестве исполняемого файла и передавайте команды в виде аргументов. |
|
Args |
| Введите один или несколько аргументов. Если требуется несколько аргументов, разделите их разными строками. |
PostStart hook, хук жизненного цикла контейнера, предоставляемый Kubernetes, используется для выполнения задач инициализации, таких как регистрация сервисов и генерация динамической конфигурации, сразу после запуска основного процесса контейнера. Этот хук асинхронно вызывается kubelet и работает параллельно с основным процессом. Хотя PostStart hook выполняется асинхронно с основным процессом контейнера, если он занимает слишком много времени или приостановлен, контейнер может не перейти в состояние Running. Если выполнение PostStart hook не удалось, контейнер может не запуститься и будет завершён.
Метод обработки | Пример значения | Описание | Пример YAML |
|---|---|---|---|
CLI | Выполните следующие команды, чтобы записать файл сообщения в каталог /usr/share контейнера:
| Используется для выполнения команд в контейнере. Необходимо настроить Command. Формат команды: Command Arg[1] Arg[2]..., где Command обозначает системную команду или пользовательскую исполняемую программу. Если путь не указан, система ищет команду в пути по умолчанию. Если необходимо выполнить несколько команд, запишите их в скрипт в образе контейнера заранее и вызовите скрипт с помощью этой команды. Эта исполняемая командадолжна выполняться синхронно или во фронтенде. Если она выполняется асинхронно или в бэкенде, обработчик жизненного цикла может не выполниться. ВНИМАНИЕ: Убедитесь, что скрипт postStart выполняется до завершения и корректно завершается. В противном случае последующие обновления статуса pod и удаление pod будут затронуты. |
|
HTTP‑запрос |
| Используется для инициирования HTTP‑запроса. Связанные параметры описаны ниже:
|
|
Если контейнер падает или завершается аномально, хук PreStop не будет вызван. Период Grace Period завершения pod начинает отсчёт до выполнения хука PreStop. Независимо от результата обработчика хука, контейнер будет завершён в течение периода Grace Period завершения pod, если только финализатор не задерживает процесс завершения. Другие операции управления контейнером блокируются до завершения хука PreStop или истечения периода Grace Period.
Параметр | Пример значения | Описание | Пример YAML |
|---|---|---|---|
CLI | Введите следующие команды для корректной остановки службы Nginx:
| Используется для выполнения команд в контейнере. Вам необходимо настроить Command. Формат команды: Command Arg[1] Arg[2]..., где Command указывает на системную команду или пользовательскую исполняемую программу. Если путь не указан, система ищет команду в пути по умолчанию. Если необходимо выполнить несколько команд, запишите их в скрипт в образе контейнера заранее и вызовите скрипт с помощью этой команды. |
|
HTTP запрос |
| Используется для инициации HTTP запроса. Связанные параметры описаны следующим образом:
|
|
vim lifecycle.yaml
Пример содержимого файла:
kubectl create -f lifecycle.yaml
Если отображается информация, аналогичная следующей, workload создаётся:
deployment.apps/nginx created
kubectl get deployment
Если все pod‑ы workload доступны, workload создан.
NAME READY UP-TO-DATE AVAILABLE AGEnginx 1/1 1 1 4m59s