Updated on 2022-08-11 GMT+08:00

Affinity and Anti-Affinity Scheduling

Affinity and Anti-Affinity Scheduling Policies

When creating a containerized application, you can set affinity and anti-affinity scheduling policies. For example, you can deploy applications of a certain type on specific nodes or deploy different applications on different nodes.

IEF supports the following simple scheduling policies:

  • Affinity
    • Application-node affinity: If the affinity is defined between a containerized application and certain nodes, the application will be scheduled only to these nodes. If you have set the affinity between an application and certain nodes, you do not need to set the anti-affinity between the application and other nodes because the affinity determines that the application can be scheduled only to the specified nodes.
    • Affinity between containerized applications: If the affinity is defined between containerized applications A and B, application A will be scheduled only to the nodes where application B is located.
  • Anti-Affinity
    • Application-node anti-affinity: If the anti-affinity is defined between a containerized application and certain nodes, the application will not be scheduled to these nodes.
    • Anti-affinity between containerized applications: If the anti-affinity is defined between containerized applications A and B, application A will not be scheduled to the nodes where application B is located.

Affinity and Anti-Affinity Policy Example

You can configure multiple affinity and anti-affinity objects for an application. For example, a node group contains four nodes: Node1, Node2, Node3, and Node4. Instances of App1 run on Node1 and Node2, and instances of App2 run on Node3. If you create App3 (Node1, Node2, Node3, and App1 set as the affinity objects and App2 set as the anti-affinity object), App3 will be scheduled only to Node1 and Node2. As shown in the following figure, App3 has only one instance, which is scheduled to Node1.

Figure 1 App3 scheduled to Node1

Adding an Affinity Object

Once you have selected an edge node group in the Associate Object step during creation of a containerized application, you can configure an affinity policy.

  1. Click Add Affinity Object.

    Figure 2 Adding an affinity object

  2. In the dialog box displayed, select one or more affinity nodes or applications and click OK.

    Figure 3 Selecting an affinity object

Adding an Anti-affinity Object

You can configure an anti-affinity policy after you select an edge node group in the Associate Object step during creation of a containerized application.

  1. Click Add Anti-Affinity Object.

    Figure 4 Adding an anti-affinity object

  2. In the dialog box displayed, select one or more anti-affinity nodes or applications and click OK.

    Figure 5 Selecting an anti-affinity object