Volcano PodGroups API

Operations for managing Volcano PodGroup custom resources. PodGroups define gang scheduling units with minimum availability requirements and queue assignment.

OpenAPI Specification

volcano-podgroups-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Volcano Job Jobs PodGroups API
  description: The Volcano Job API provides Kubernetes CRD endpoints for defining and managing batch workloads using Volcano's Job resource (vcjob). Volcano Jobs support multiple task types, lifecycle policies, gang scheduling, and integration with frameworks including TensorFlow, PyTorch, Spark, and MPI. All operations go through the Kubernetes API server.
  version: 1.10.0
  contact:
    name: Volcano Community
    url: https://volcano.sh/en/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://{kubernetes-api-server}
  description: Kubernetes API server
  variables:
    kubernetes-api-server:
      default: localhost:6443
      description: Address of the Kubernetes API server
tags:
- name: PodGroups
  description: Operations for managing Volcano PodGroup custom resources. PodGroups define gang scheduling units with minimum availability requirements and queue assignment.
paths:
  /apis/scheduling.volcano.sh/v1beta1/namespaces/{namespace}/podgroups:
    get:
      operationId: listNamespacedPodGroup
      summary: Volcano List PodGroups in a namespace
      description: Returns all Volcano PodGroup resources in the specified namespace. PodGroups are typically created automatically by the Volcano controller when a Volcano Job is submitted, but can also be created manually for pods without a Job parent.
      tags:
      - PodGroups
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/labelSelector'
      - $ref: '#/components/parameters/fieldSelector'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/continueToken'
      responses:
        '200':
          description: List of PodGroups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PodGroupList'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
    post:
      operationId: createNamespacedPodGroup
      summary: Volcano Create a PodGroup
      description: Creates a new PodGroup resource in the specified namespace. Pods can reference this PodGroup via the scheduling.volcano.sh/pod-group annotation to join the group and benefit from gang scheduling.
      tags:
      - PodGroups
      parameters:
      - $ref: '#/components/parameters/namespace'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PodGroup'
      responses:
        '201':
          description: PodGroup created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PodGroup'
        '400':
          description: Invalid PodGroup specification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '409':
          description: PodGroup with this name already exists
  /apis/scheduling.volcano.sh/v1beta1/namespaces/{namespace}/podgroups/{name}:
    get:
      operationId: readNamespacedPodGroup
      summary: Volcano Get a PodGroup
      description: Returns the specified PodGroup resource including its current phase, pod counts, and condition information.
      tags:
      - PodGroups
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/name'
      responses:
        '200':
          description: PodGroup details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PodGroup'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: PodGroup not found
    put:
      operationId: replaceNamespacedPodGroup
      summary: Volcano Replace a PodGroup
      description: Replaces the entire PodGroup resource with the provided specification.
      tags:
      - PodGroups
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/name'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PodGroup'
      responses:
        '200':
          description: PodGroup updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PodGroup'
        '400':
          description: Invalid specification
        '401':
          description: Unauthorized
        '404':
          description: PodGroup not found
    patch:
      operationId: patchNamespacedPodGroup
      summary: Volcano Partially update a PodGroup
      description: Applies a partial update to the specified PodGroup.
      tags:
      - PodGroups
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/name'
      requestBody:
        required: true
        content:
          application/merge-patch+json:
            schema:
              type: object
      responses:
        '200':
          description: PodGroup patched
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PodGroup'
        '400':
          description: Invalid patch
        '401':
          description: Unauthorized
        '404':
          description: PodGroup not found
    delete:
      operationId: deleteNamespacedPodGroup
      summary: Volcano Delete a PodGroup
      description: Deletes the specified PodGroup resource. Pods in the group that are pending may be removed from scheduling consideration.
      tags:
      - PodGroups
      parameters:
      - $ref: '#/components/parameters/namespace'
      - $ref: '#/components/parameters/name'
      responses:
        '200':
          description: PodGroup deleted
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: PodGroup not found
  /apis/scheduling.volcano.sh/v1beta1/podgroups:
    get:
      operationId: listPodGroupAllNamespaces
      summary: Volcano List PodGroups across all namespaces
      description: Returns all PodGroup resources across all namespaces in the cluster.
      tags:
      - PodGroups
      parameters:
      - $ref: '#/components/parameters/labelSelector'
      - $ref: '#/components/parameters/fieldSelector'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/continueToken'
      responses:
        '200':
          description: All PodGroups in the cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PodGroupList'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
components:
  schemas:
    ObjectMeta:
      type: object
      description: Standard Kubernetes object metadata.
      required:
      - name
      properties:
        name:
          type: string
          description: Name of the PodGroup, unique within its namespace.
        namespace:
          type: string
          description: Namespace the PodGroup belongs to.
        labels:
          type: object
          additionalProperties:
            type: string
          description: Labels for organizing and selecting the PodGroup.
        annotations:
          type: object
          additionalProperties:
            type: string
          description: Non-identifying metadata for the PodGroup.
        resourceVersion:
          type: string
        uid:
          type: string
        creationTimestamp:
          type: string
          format: date-time
    PodGroupSpec:
      type: object
      description: Specification of a PodGroup defining gang scheduling requirements.
      properties:
        minMember:
          type: integer
          description: Minimum number of pods that must be scheduled simultaneously. If fewer than this number of pods can be placed, no pods in the group are scheduled (all-or-nothing semantics).
          minimum: 1
          default: 1
        minResources:
          type: object
          description: Minimum aggregate resource requests that must be satisfiable for the PodGroup to be scheduled. Expressed as Kubernetes resource quantities.
          additionalProperties:
            type: string
          example:
            cpu: '8'
            memory: 16Gi
        queue:
          type: string
          description: Name of the Volcano Queue this PodGroup belongs to. Determines scheduling priority and resource quota application. Defaults to the 'default' queue.
          default: default
        priorityClassName:
          type: string
          description: Name of the PriorityClass for this PodGroup, controlling its scheduling priority relative to other PodGroups.
        minTaskMember:
          type: object
          description: Map of task names to minimum member counts for per-task gang scheduling requirements within a multi-task job.
          additionalProperties:
            type: integer
    Status:
      type: object
      description: Kubernetes Status object for error responses.
      properties:
        message:
          type: string
        reason:
          type: string
        code:
          type: integer
    PodGroupCondition:
      type: object
      description: A condition describing the state of the PodGroup.
      properties:
        type:
          type: string
          description: Type of PodGroup condition.
          enum:
          - Unschedulable
          - Scheduled
        status:
          type: string
          enum:
          - 'True'
          - 'False'
          - Unknown
        transitionID:
          type: string
          description: Identifier linking this condition to a specific scheduler transition.
        lastTransitionTime:
          type: string
          format: date-time
          description: Time when this condition last transitioned.
        reason:
          type: string
          description: Short reason code for the condition.
        message:
          type: string
          description: Human-readable details about the condition.
    PodGroup:
      type: object
      description: A Volcano PodGroup custom resource representing a set of pods that must be co-scheduled together. PodGroups enable gang scheduling semantics for distributed computing workloads.
      required:
      - apiVersion
      - kind
      - metadata
      - spec
      properties:
        apiVersion:
          type: string
          enum:
          - scheduling.volcano.sh/v1beta1
        kind:
          type: string
          enum:
          - PodGroup
        metadata:
          $ref: '#/components/schemas/ObjectMeta'
        spec:
          $ref: '#/components/schemas/PodGroupSpec'
        status:
          $ref: '#/components/schemas/PodGroupStatus'
    PodGroupList:
      type: object
      description: A list of PodGroup resources.
      required:
      - apiVersion
      - kind
      - items
      properties:
        apiVersion:
          type: string
        kind:
          type: string
          enum:
          - PodGroupList
        metadata:
          type: object
          properties:
            resourceVersion:
              type: string
        items:
          type: array
          description: List of PodGroup resources.
          items:
            $ref: '#/components/schemas/PodGroup'
    PodGroupStatus:
      type: object
      description: Observed status of a PodGroup as reported by the Volcano scheduler, including current phase and pod state counts.
      properties:
        phase:
          type: string
          description: Current scheduling phase of the PodGroup.
          enum:
          - Pending
          - Running
          - Unknown
          - Inqueue
          - Completing
        occupiedBy:
          type: string
          description: Name of the Volcano Job that owns this PodGroup, if any.
        conditions:
          type: array
          description: Conditions describing the current state of the PodGroup.
          items:
            $ref: '#/components/schemas/PodGroupCondition'
        succeeded:
          type: integer
          format: int32
          description: Number of pods in the Succeeded phase.
        failed:
          type: integer
          format: int32
          description: Number of pods in the Failed phase.
        running:
          type: integer
          format: int32
          description: Number of pods in the Running phase.
  parameters:
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of results per page.
      schema:
        type: integer
        minimum: 1
    labelSelector:
      name: labelSelector
      in: query
      required: false
      description: Label selector to restrict results.
      schema:
        type: string
    fieldSelector:
      name: fieldSelector
      in: query
      required: false
      description: Field selector to restrict results.
      schema:
        type: string
    namespace:
      name: namespace
      in: path
      required: true
      description: The Kubernetes namespace of the resource.
      schema:
        type: string
    continueToken:
      name: continue
      in: query
      required: false
      description: Continuation token for paginating large result sets.
      schema:
        type: string
    name:
      name: name
      in: path
      required: true
      description: The name of the resource.
      schema:
        type: string
externalDocs:
  description: Volcano Job Documentation
  url: https://volcano.sh/en/docs/vcjob/