Document toolboxDocument toolbox

(v2.3.0.0) Submitting Workloads to EKS

This section will guide you through the process of submitting jobs to the EKS Cluster by modifying the workload configuration files.

Pre-Submission Requirements:

Submitting a Single Pod

Step 1: Modifying the Workload Pod YAML File

To ensure that your workload runs on Exostellar nodes scheduled by the Exostellar Karpenter and block Karpenter from voluntarily disrupting your workload, you need to set affinity settings and annotations in your workload YAML file. Below is an example of how to modify your YAML file to include these settings:

apiVersion: v1 kind: Pod metadata: name: my-nginx annotations: karpenter.sh/do-not-disrupt: "true" spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: karpenter.sh/nodepool operator: In values: - pool-a containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 resources: requests: cpu: 1

Step 2: Adding Node Labels in Exostellar Karpenter NodePool (optional)

If your workload requires scheduling on nodes with specific labels, it is required to configure Exostellar Karpenter NodePool so nodes are created with needed labels in the autoscaling process. To ensure that Exostellar Karpenter provisions nodes with the appropriate labels, you need to update the NodePool configuration with the following command: 

kubectl edit nodepool pool-a

An example NodePool configuration shown below creates nodes that has jobtype of batch and nodeFamily of c5:

apiVersion: karpenter.sh/v1beta1 kind: NodePool metadata: name: pool-a spec: limits: cpu: "400" template: metadata: labels: jobtype: batch nodeFamily: c5 spec: nodeClassRef: name: pool-a requirements: - key: topology.kubernetes.io/zone operator: In values: - us-east-1a resources: {} status: {}

Step 3: Submitting the Pod

After modifying the pod YAML file, submit the job to the EKS Cluster just like you would run a regular pod:

Post-Submission Results

Exostellar Karpenter will automatically bring up the node that is suitable for your request, to check the new node that has been added:

The created node has x-compute as part of the name.

Scaling your Workloads

Step 1: Modifying the Workload YAML File

Similar to the above, here is an example workload YAML file:

Step 2: Submitting the Workload

After modifying the YAML file, submit the workload to the EKS Cluster:

Post-Submission Results

Exostellar Karpenter will automatically bring up all nodes required for your request as above. To check the deployment status:

You will see:

To check all created pods:

Results (only showing the top 10 lines):