Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the batch v1alpha1 API group +kubebuilder:object:generate=true +groupName=batch.volcano.sh +k8s:deepcopy-gen=package +k8s:openapi-gen=true
Index ¶
- Constants
- Variables
- func Resource(resource string) schema.GroupResource
- type DependsOn
- type Iteration
- type Job
- type JobCondition
- type JobEvent
- type JobList
- type JobPhase
- type JobSpec
- type JobState
- type JobStatus
- type LifecyclePolicy
- type NetworkTopologyMode
- type NetworkTopologySpec
- type NumaPolicy
- type TaskSpec
- type TaskState
- type VolumeSpec
Constants ¶
const ( // TaskSpecKey task spec key used in pod annotation TaskSpecKey = "volcano.sh/task-spec" // TaskIndex is task index of each spec in annotation / labels TaskIndex = "volcano.sh/task-index" // JobNameKey job name key used in pod annotation / labels JobNameKey = "volcano.sh/job-name" // QueueNameKey queue name key used in pod annotation / labels QueueNameKey = "volcano.sh/queue-name" // JobNamespaceKey job namespace key JobNamespaceKey = "volcano.sh/job-namespace" // DefaultTaskSpec default task spec value DefaultTaskSpec = "default" // JobVersion job version key used in pod annotation JobVersion = "volcano.sh/job-version" // JobTypeKey job type key used in labels JobTypeKey = "volcano.sh/job-type" // JobRetryCountKey job retry count key used in pod annotation JobRetryCountKey = "volcano.sh/job-retry-count" // PodgroupNamePrefix podgroup name prefix PodgroupNamePrefix = "podgroup-" // PodTemplateKey type specify a equivalence pod class PodTemplateKey = "volcano.sh/template-uid" // JobForwardingKey job forwarding key used in job annotation JobForwardingKey = "volcano.sh/job-forwarding" // ForwardClusterKey cluster key used in pod annotation ForwardClusterKey = "volcano.sh/forward-cluster" // OrginalNameKey annotation key for resource name OrginalNameKey = "volcano.sh/burst-name" // BurstToSiloClusterAnnotation labels key for resource only in silo cluster BurstToSiloClusterAnnotation = "volcano.sh/silo-resource" )
const GroupName = "batch.volcano.sh"
GroupName is the group name used in this package.
Variables ¶
var ( // SchemeBuilder points to a list of functions added to Scheme. SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme applies all the stored functions to the scheme. AddToScheme = SchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
SchemeGroupVersion is the group version used to register these objects.
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group-qualified GroupResource.
Types ¶
type DependsOn ¶
type DependsOn struct {
// Indicates the name of the tasks that this task depends on,
// which can depend on multiple tasks
// +optional
Name []string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
// This field specifies that when there are multiple dependent tasks,
// as long as one task becomes the specified state,
// the task scheduling is triggered or
// all tasks must be changed to the specified state to trigger the task scheduling
// +optional
Iteration Iteration `json:"iteration,omitempty" protobuf:"bytes,2,opt,name=iteration"`
}
DependsOn represents the tasks that this task depends on and their dependencies
func (*DependsOn) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DependsOn.
func (*DependsOn) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Iteration ¶
type Iteration string
Iteration defines the phase of the iteration.
const ( // Indicates that when there are multiple tasks, // as long as one task becomes the specified state, // the task scheduling will be triggered IterationAny Iteration = "any" // Indicates that when there are multiple tasks, // all tasks must become the specified state, // the task scheduling will be triggered IterationAll Iteration = "all" )
type Job ¶
type Job struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Specification of the desired behavior of the volcano job, including the minAvailable
// +optional
Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
// Current status of the volcano Job
// +optional
Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
Job defines the volcano job. +kubebuilder:printcolumn:name="STATUS",type=string,JSONPath=`.status.state.phase` +kubebuilder:printcolumn:name="minAvailable",type=integer,JSONPath=`.status.minAvailable` +kubebuilder:printcolumn:name="RUNNINGS",type=integer,JSONPath=`.status.running` +kubebuilder:printcolumn:name="AGE",type=date,JSONPath=`.metadata.creationTimestamp` +kubebuilder:printcolumn:name="QUEUE",type=string,priority=1,JSONPath=`.spec.queue`
func (*Job) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Job.
func (*Job) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Job) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type JobCondition ¶
type JobCondition struct {
// Status is the new phase of job after performing the state's action.
Status JobPhase `json:"status" protobuf:"bytes,1,opt,name=status,casttype=JobPhase"`
// Last time the condition transitioned from one phase to another.
// +optional
LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,2,opt,name=lastTransitionTime"`
}
JobCondition contains details for the current condition of this job.
func (*JobCondition) DeepCopy ¶
func (in *JobCondition) DeepCopy() *JobCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobCondition.
func (*JobCondition) DeepCopyInto ¶
func (in *JobCondition) DeepCopyInto(out *JobCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JobEvent ¶
type JobEvent string
JobEvent job event.
const ( // CommandIssued command issued event is generated if a command is raised by user CommandIssued JobEvent = "CommandIssued" // PluginError plugin error event is generated if error happens PluginError JobEvent = "PluginError" // PVCError pvc error event is generated if error happens during IO creation PVCError JobEvent = "PVCError" // PodGroupError pod grp error event is generated if error happens during pod grp creation PodGroupError JobEvent = "PodGroupError" //ExecuteAction action issued event for each action ExecuteAction JobEvent = "ExecuteAction" //JobStatusError is generated if update job status failed JobStatusError JobEvent = "JobStatusError" // PodGroupPending pod grp pending event is generated if pg pending due to some error PodGroupPending JobEvent = "PodGroupPending" )
type JobList ¶
type JobList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Items []Job `json:"items" protobuf:"bytes,2,rep,name=items"`
}
JobList defines the list of jobs.
func (*JobList) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobList.
func (*JobList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*JobList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type JobPhase ¶
type JobPhase string
JobPhase defines the phase of the job.
const ( // Pending is the phase that job is pending in the queue, waiting for scheduling decision Pending JobPhase = "Pending" // Aborting is the phase that job is aborted, waiting for releasing pods Aborting JobPhase = "Aborting" // Aborted is the phase that job is aborted by user or error handling Aborted JobPhase = "Aborted" // Running is the phase that minimal available tasks of Job are running Running JobPhase = "Running" // Restarting is the phase that the Job is restarted, waiting for pod releasing and recreating Restarting JobPhase = "Restarting" // Completing is the phase that required tasks of job are completed, job starts to clean up Completing JobPhase = "Completing" // Completed is the phase that all tasks of Job are completed Completed JobPhase = "Completed" // Terminating is the phase that the Job is terminated, waiting for releasing pods Terminating JobPhase = "Terminating" // Terminated is the phase that the job is finished unexpected, e.g. events Terminated JobPhase = "Terminated" // Failed is the phase that the job is restarted failed reached the maximum number of retries. Failed JobPhase = "Failed" )
type JobSpec ¶
type JobSpec struct {
// SchedulerName is the default value of `tasks.template.spec.schedulerName`.
// +optional
SchedulerName string `json:"schedulerName,omitempty" protobuf:"bytes,1,opt,name=schedulerName"`
// The minimal available pods to run for this Job
// Defaults to the summary of tasks' replicas
// +optional
MinAvailable int32 `json:"minAvailable,omitempty" protobuf:"bytes,2,opt,name=minAvailable"`
// The volumes mount on Job
// +optional
Volumes []VolumeSpec `json:"volumes,omitempty" protobuf:"bytes,3,opt,name=volumes"`
// Tasks specifies the task specification of Job
// +optional
Tasks []TaskSpec `json:"tasks,omitempty" protobuf:"bytes,4,opt,name=tasks"`
// Specifies the default lifecycle of tasks
// +optional
Policies []LifecyclePolicy `json:"policies,omitempty" protobuf:"bytes,5,opt,name=policies"`
// Specifies the plugin of job
// Key is plugin name, value is the arguments of the plugin
// +optional
Plugins map[string][]string `json:"plugins,omitempty" protobuf:"bytes,6,opt,name=plugins"`
// Running Estimate is a user running duration estimate for the job
// Default to nil
RunningEstimate *metav1.Duration `json:"runningEstimate,omitempty" protobuf:"bytes,7,opt,name=runningEstimate"`
//Specifies the queue that will be used in the scheduler, "default" queue is used this leaves empty.
// +optional
Queue string `json:"queue,omitempty" protobuf:"bytes,8,opt,name=queue"`
// Specifies the maximum number of retries before marking this Job failed.
// Defaults to 3.
// +kubebuilder:default:=3
// +optional
MaxRetry int32 `json:"maxRetry,omitempty" protobuf:"bytes,9,opt,name=maxRetry"`
// ttlSecondsAfterFinished limits the lifetime of a Job that has finished
// execution (either Completed or Failed). If this field is set,
// ttlSecondsAfterFinished after the Job finishes, it is eligible to be
// automatically deleted. If this field is unset,
// the Job won't be automatically deleted. If this field is set to zero,
// the Job becomes eligible to be deleted immediately after it finishes.
// +optional
TTLSecondsAfterFinished *int32 `json:"ttlSecondsAfterFinished,omitempty" protobuf:"varint,10,opt,name=ttlSecondsAfterFinished"`
// If specified, indicates the job's priority.
// +optional
PriorityClassName string `json:"priorityClassName,omitempty" protobuf:"bytes,11,opt,name=priorityClassName"`
// The minimal success pods to run for this Job
// +kubebuilder:validation:Minimum=1
// +optional
MinSuccess *int32 `json:"minSuccess,omitempty" protobuf:"varint,12,opt,name=minSuccess"`
// NetworkTopology defines the NetworkTopology config, this field works in conjunction with network topology feature and hyperNode CRD.
// +optional
NetworkTopology *NetworkTopologySpec `json:"networkTopology,omitempty" protobuf:"bytes,13,opt,name=networkTopology"`
}
JobSpec describes how the job execution will look like and when it will actually run.
func (*JobSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobSpec.
func (*JobSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JobState ¶
type JobState struct {
// The phase of Job.
// +optional
Phase JobPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase"`
// Unique, one-word, CamelCase reason for the phase's last transition.
// +optional
Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"`
// Human-readable message indicating details about last transition.
// +optional
Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"`
// Last time the condition transit from one phase to another.
// +optional
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"`
}
JobState contains details for the current state of the job.
func (*JobState) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobState.
func (*JobState) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JobStatus ¶
type JobStatus struct {
// Current state of Job.
// +optional
State JobState `json:"state,omitempty" protobuf:"bytes,1,opt,name=state"`
// The minimal available pods to run for this Job
// +optional
MinAvailable int32 `json:"minAvailable,omitempty" protobuf:"bytes,2,opt,name=minAvailable"`
// The status of pods for each task
// +optional
TaskStatusCount map[string]TaskState `json:"taskStatusCount,omitempty" protobuf:"bytes,21,opt,name=taskStatusCount"`
// The number of pending pods.
// +optional
Pending int32 `json:"pending,omitempty" protobuf:"bytes,3,opt,name=pending"`
// The number of running pods.
// +optional
Running int32 `json:"running,omitempty" protobuf:"bytes,4,opt,name=running"`
// The number of pods which reached phase Succeeded.
// +optional
Succeeded int32 `json:"succeeded,omitempty" protobuf:"bytes,5,opt,name=succeeded"`
// The number of pods which reached phase Failed.
// +optional
Failed int32 `json:"failed,omitempty" protobuf:"bytes,6,opt,name=failed"`
// The number of pods which reached phase Terminating.
// +optional
Terminating int32 `json:"terminating,omitempty" protobuf:"bytes,7,opt,name=terminating"`
// The number of pods which reached phase Unknown.
// +optional
Unknown int32 `json:"unknown,omitempty" protobuf:"bytes,8,opt,name=unknown"`
//Current version of job
// +optional
Version int32 `json:"version,omitempty" protobuf:"bytes,9,opt,name=version"`
// The number of Job retries.
// +optional
RetryCount int32 `json:"retryCount,omitempty" protobuf:"bytes,10,opt,name=retryCount"`
// The job running duration is the length of time from job running to complete.
// +optional
RunningDuration *metav1.Duration `json:"runningDuration,omitempty" protobuf:"bytes,11,opt,name=runningDuration"`
// The resources that controlled by this job, e.g. Service, ConfigMap
// +optional
ControlledResources map[string]string `json:"controlledResources,omitempty" protobuf:"bytes,12,opt,name=controlledResources"`
// Which conditions caused the current job state.
// +optional
// +patchMergeKey=status
// +patchStrategy=merge
Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"status" protobuf:"bytes,13,rep,name=conditions"`
}
JobStatus represents the current status of a Job.
func (*JobStatus) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobStatus.
func (*JobStatus) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LifecyclePolicy ¶
type LifecyclePolicy struct {
// The action that will be taken to the PodGroup according to Event.
// One of "Restart", "None".
// Default to None.
// +optional
Action v1alpha1.Action `json:"action,omitempty" protobuf:"bytes,1,opt,name=action"`
// The Event recorded by scheduler; the controller takes actions
// according to this Event.
// +optional
Event v1alpha1.Event `json:"event,omitempty" protobuf:"bytes,2,opt,name=event"`
// The Events recorded by scheduler; the controller takes actions
// according to this Events.
// +optional
Events []v1alpha1.Event `json:"events,omitempty" protobuf:"bytes,3,opt,name=events"`
// The exit code of the pod container, controller will take action
// according to this code.
// Note: only one of `Event` or `ExitCode` can be specified.
// +optional
ExitCode *int32 `json:"exitCode,omitempty" protobuf:"bytes,4,opt,name=exitCode"`
// Timeout is the grace period for controller to take actions.
// Default to nil (take action immediately).
// +optional
Timeout *metav1.Duration `json:"timeout,omitempty" protobuf:"bytes,5,opt,name=timeout"`
}
LifecyclePolicy specifies the lifecycle and error handling of task and job.
func (*LifecyclePolicy) DeepCopy ¶
func (in *LifecyclePolicy) DeepCopy() *LifecyclePolicy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LifecyclePolicy.
func (*LifecyclePolicy) DeepCopyInto ¶
func (in *LifecyclePolicy) DeepCopyInto(out *LifecyclePolicy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkTopologyMode ¶
type NetworkTopologyMode string
NetworkTopologyMode represents the networkTopology mode, valid values are "hard" and "soft". +kubebuilder:validation:Enum=hard;soft
const ( // HardNetworkTopologyMode represents a strict network topology constraint that jobs must adhere to. HardNetworkTopologyMode NetworkTopologyMode = "hard" // SoftNetworkTopologyMode represents a flexible network topology constraint that allows jobs // to cross network boundaries under certain conditions. SoftNetworkTopologyMode NetworkTopologyMode = "soft" )
type NetworkTopologySpec ¶
type NetworkTopologySpec struct {
// Mode specifies the mode of the network topology constrain.
// +kubebuilder:default=hard
// +optional
Mode NetworkTopologyMode `json:"mode,omitempty" protobuf:"bytes,1,opt,name=mode"`
// HighestTierAllowed specifies the highest tier that a job allowed to cross when scheduling.
// +kubebuilder:default=1
// +optional
HighestTierAllowed *int `json:"highestTierAllowed,omitempty" protobuf:"bytes,2,opt,name=highestTierAllowed"`
}
func (*NetworkTopologySpec) DeepCopy ¶
func (in *NetworkTopologySpec) DeepCopy() *NetworkTopologySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkTopologySpec.
func (*NetworkTopologySpec) DeepCopyInto ¶
func (in *NetworkTopologySpec) DeepCopyInto(out *NetworkTopologySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NumaPolicy ¶
type NumaPolicy string
+kubebuilder:validation:Enum=none;best-effort;restricted;single-numa-node
const ( None NumaPolicy = "none" BestEffort NumaPolicy = "best-effort" Restricted NumaPolicy = "restricted" SingleNumaNode NumaPolicy = "single-numa-node" )
type TaskSpec ¶
type TaskSpec struct {
// Name specifies the name of tasks
// +optional
Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
// Replicas specifies the replicas of this TaskSpec in Job
// +optional
Replicas int32 `json:"replicas,omitempty" protobuf:"bytes,2,opt,name=replicas"`
// The minimal available pods to run for this Task
// Defaults to the task replicas
// +optional
MinAvailable *int32 `json:"minAvailable,omitempty" protobuf:"bytes,3,opt,name=minAvailable"`
// Specifies the pod that will be created for this TaskSpec
// when executing a Job
// +optional
Template v1.PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,4,opt,name=template"`
// Specifies the lifecycle of task
// +optional
Policies []LifecyclePolicy `json:"policies,omitempty" protobuf:"bytes,5,opt,name=policies"`
// Specifies the topology policy of task
// +optional
TopologyPolicy NumaPolicy `json:"topologyPolicy,omitempty" protobuf:"bytes,6,opt,name=topologyPolicy"`
// Specifies the maximum number of retries before marking this Task failed.
// Defaults to 3.
// +optional
MaxRetry int32 `json:"maxRetry,omitempty" protobuf:"bytes,7,opt,name=maxRetry"`
// Specifies the tasks that this task depends on.
// +optional
DependsOn *DependsOn `json:"dependsOn,omitempty" protobuf:"bytes,8,opt,name=dependsOn"`
}
TaskSpec specifies the task specification of Job.
func (*TaskSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskSpec.
func (*TaskSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TaskState ¶
type TaskState struct {
// The phase of Task.
// +optional
Phase map[v1.PodPhase]int32 `json:"phase,omitempty" protobuf:"bytes,11,opt,name=phase"`
}
TaskState contains details for the current state of the task.
func (*TaskState) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskState.
func (*TaskState) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VolumeSpec ¶
type VolumeSpec struct {
// Path within the container at which the volume should be mounted. Must
// not contain ':'.
MountPath string `json:"mountPath" protobuf:"bytes,1,opt,name=mountPath"`
// defined the PVC name
// +optional
VolumeClaimName string `json:"volumeClaimName,omitempty" protobuf:"bytes,2,opt,name=volumeClaimName"`
// VolumeClaim defines the PVC used by the VolumeMount.
// +optional
VolumeClaim *v1.PersistentVolumeClaimSpec `json:"volumeClaim,omitempty" protobuf:"bytes,3,opt,name=volumeClaim"`
}
VolumeSpec defines the specification of Volume, e.g. PVC.
func (*VolumeSpec) DeepCopy ¶
func (in *VolumeSpec) DeepCopy() *VolumeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSpec.
func (*VolumeSpec) DeepCopyInto ¶
func (in *VolumeSpec) DeepCopyInto(out *VolumeSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.