Updated on 2024-04-15 GMT+08:00

Setting Container Lifecycle Parameters

Scenario

UCS provides callback functions (hooks) for the lifecycle management of containerized applications. For example, if you want a container to perform a certain operation before stopping, you can register a hook.

UCS provides the following lifecycle callback functions:

  • Startup Command: executed to start a container. For details, see Startup Commands.
  • Post-Start: executed immediately after a container is started. For details, see Post-Start Processing.
  • Pre-Stop: executed before a container is stopped. The pre-stop processing function helps you ensure that the services running on the pods can be completed in advance in the case of pod upgrade or deletion. For details, see Pre-Stop Processing.

Startup Commands

By default, the default command during image start. To run a specific command or rewrite the default image value, you must perform specific settings:

A Docker image has metadata that stores image information. If lifecycle commands and arguments are not set, CCE runs the default commands and arguments, that is, Docker instructions ENTRYPOINT and CMD, provided during image creation.

If the commands and arguments used to run a container are set during application creation, the default commands ENTRYPOINT and CMD are overwritten during image build. The rules are as follows:

Table 1 Commands and arguments used to run a container

Image ENTRYPOINT

Image CMD

Command to Run a Container

Parameters to Run a Container

Command Executed

[touch]

[/root/test]

Not set

Not set

[touch /root/test]

[touch]

[/root/test]

[mkdir]

Not set

[mkdir]

[touch]

[/root/test]

Not set

[/opt/test]

[touch /opt/test]

[touch]

[/root/test]

[mkdir]

[/opt/test]

[mkdir /opt/test]

  1. When creating a workload, select Lifecycle under Container Settings.
  2. Enter a command and arguments on the Startup Command tab page.

    Table 2 Container startup commands

    Configuration Item

    Procedure

    Command

    Run a specified command in the container using either the bash or binary mode. You can configure the command by referring to the example.

    If there are multiple commands, separate them with spaces. If the command contains a space, you need to add a quotation mark ("").

    NOTE:

    In the case of multiple commands, you are advised to run /bin/sh or other shell commands. Other commands are used as parameters.

    Args

    Enter the argument that controls the container running command, for example, --port=8080.

    If there are multiple arguments, separate them in different lines.

Post-Start Processing

  1. When creating a workload, select Lifecycle under Container Settings.
  2. Set the post-start processing parameters on the Post-Start tab page.

    Table 3 Post-start processing parameters

    Parameter

    Description

    CLI

    Run a specified command in the container using either the bash or binary mode. You can configure the command by referring to the example.

    The command format is Command Args[1] Args[2].... Command is a system command or a user-defined executable program. If no path is specified, an executable program in the default path will be selected. If multiple commands need to be executed, write the commands into a script for execution. Commands that are executed in the background or asynchronously are not supported.

    Example command:

    exec: 
      command: 
      - /install.sh 
      - install_agent

    Enter /install install_agent in the script. This command indicates that install.sh will be executed after the container is created successfully.

    HTTP request

    Send an HTTP request for post-start processing. The related parameters are described as follows:

    • Path: (optional) request URL.
    • Port: (mandatory) request port.
    • Host: (optional) IP address of the request. The default value is the IP address of the node where the container resides.

Pre-Stop Processing

  1. When creating a workload, select Lifecycle under Container Settings.
  2. Set the pre-start processing parameters on the Pre-Stop tab page.

    Table 4 Pre-stop processing parameters

    Parameter

    Description

    CLI

    Run a specified command in the container using either the bash or binary mode. You can configure the command by referring to the example.

    The command format is Command Args[1] Args[2].... Command is a system command or a user-defined executable program. If no path is specified, an executable program in the default path will be selected. If multiple commands need to be executed, write the commands into a script for execution.

    Example command:

    exec: 
      command: 
      - /uninstall.sh 
      - uninstall_agent

    Enter /uninstall uninstall_agent in the script. This command indicates that the uninstall.sh script will be executed before the container completes its execution and stops running.

    HTTP request

    Send an HTTP request for pre-stop processing. The related parameters are described as follows:

    • Path: (optional) request URL.
    • Port: (mandatory) request port.
    • Host: (optional) IP address of the request. The default value is the IP address of the node where the container resides.

YAML Example

This section uses Nginx as an example to describe how to set the container lifecycle.

In the following configuration file, the postStart command is defined to run the install.sh command in the /bin/bash directory. preStop is defined to run the uninstall.sh command.

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