Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

352
Views
Getting Status code 422 when creating Kubernetes Job using nodejs

I am creating a Kubernetes Job within NodeJS class After importing the library @kubernetes/client-node, I created an object to use the module BatchV1Api inside the function which I am exporting to other class in which I have defined the body of the Kubernetes job like this:

//listJobs.js

import { post } from '../kubeClient.js';

const kubeRoute = async (ctx) => {
    const newJob = {
        metadata: {
            name: 'countdown',
        },
        spec: {
            template: {
                metadata: {
                    name: 'countdown',
                },
            },
            spec: {
                containers: [
                    {
                        name: 'counter',
                        image: 'centos:7',
                        command: 'bin/bash, -c, for i in 9 8 7 6 5 4 3 2 1 ; do echo $i ; done',
                    }],
                restartPolicy: 'Never',
            },
        },
    };

    const kubeClient = post();
    kubeClient.createNamespacedJob('default', newJob);
    ctx.body = {
        // listConfigMap: (await kubeClient.listConfigMapForAllNamespaces()).body,
        listJobs: (await kubeClient.listJobForAllNamespaces()).body,
        // listService: (await kubeClient.listServiceForAllNamespaces()).body,
    };
};

export default kubeRoute;

Then I created a router class to request the post method like:

import post from './listJobs.js';

const apiRouter = new Router();
apiRouter.post('/api/v1/newJob', post);

when executing the application and requesting the route localhost:3000/api/v1/newJob as a post request in postman, it is showing status code 422 (with some very long output, as in the screenshot) in the vs code terminal and some Kubernetes information in postman body, but it is not creating any job or pod.

KubeJobTerminalError

Does anyone have any idea, why there is 422 code at the end?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Status code 422 Unprocessable Entity means that server understand the content type, and the syntax of the request is correct, but it was unable to process the contained instructions.

In your case though, the Job manifest looks off.

I'm not an expert in JavaScript kubernetes client, but newJob body looks weird. The resulting yaml should look like this

apiVersion: batch/v1
kind: Job
metadata:
  name: countdown
spec:
  template:
    spec:
      containers:
      - name: counter
        image: centos:7
        command: 'bin/bash, -c, for i in {9..1} ; do echo $i ; done' #fixed this one for you
      restartPolicy: Never

In your case the second spec is a child of spec. It should be a child of template, so:

{
  "metadata": {
    "name": "countdown"
  },
  "spec": {
    "template": {
      "spec": {
        "containers": [
          {
            "name": "counter",
            "image": "centos:7",
            "command": "bin/bash, -c, for i in {9..1} ; do echo $i ; done"
          }
        ],
        "restartPolicy": "Never"
      }
    }
  }
}
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!