Documentation
¶
Index ¶
- Constants
- func GenerateK8SVolumes(job *apistructs.Job) ([]corev1.Volume, []corev1.VolumeMount, []*corev1.PersistentVolumeClaim)
- type CascadingDeleteOptions
- type ConditionStatus
- type Container
- type EnvVar
- type ExecAction
- type HTTPGetAction
- type HTTPHeader
- type Handler
- type HostPathVolumeSource
- type JobCondition
- type JobConditionType
- type JobSpec
- type JobStatus
- type KubeJob
- type KubeJobList
- type LabelSelector
- type LabelSelectorOperator
- type LabelSelectorRequirement
- type Limits
- type ListMeta
- type ObjectMeta
- type PodSpec
- type PodTemplateSpec
- type Probe
- type Requests
- type Resources
- type RestartPolicy
- type TCPSocketAction
- type Time
- type URIScheme
- type Volume
- type VolumeMount
Constants ¶
const ( ENABLE_SPECIFIED_K8S_NAMESPACE = "ENABLE_SPECIFIED_K8S_NAMESPACE" // Specify Image Pull Policy with IfNotPresent,Always,Never SpecifyImagePullPolicy = "SPECIFY_IMAGE_PULL_POLICY" )
const (
EnvRetainNamespace = "RETAIN_NAMESPACE"
)
Variables ¶
This section is empty.
Functions ¶
func GenerateK8SVolumes ¶
func GenerateK8SVolumes(job *apistructs.Job) ([]corev1.Volume, []corev1.VolumeMount, []*corev1.PersistentVolumeClaim)
GenerateK8SVolumes According to job configuration, production volume related configuration
Types ¶
type CascadingDeleteOptions ¶
type ConditionStatus ¶
type ConditionStatus string
const ( ConditionTrue ConditionStatus = "True" ConditionFalse ConditionStatus = "False" ConditionUnknown ConditionStatus = "Unknown" )
These are valid condition statuses. "ConditionTrue" means a resource is in the condition. "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes can't decide if a resource is in the condition or not. In the future, we could add other intermediate conditions, e.g. ConditionDegraded.
type Container ¶
type Container struct {
Name string `json:"name"`
Image string `json:"image"`
Resources Resources `json:"resources,omitempty"`
Command []string `json:"command,omitempty"`
LivenessProbe *Probe `json:"livenessProbe,omitempty"`
Env []EnvVar `json:"env,omitempty"`
VolumeMounts []VolumeMount `json:"volumeMounts,omitempty"`
}
type EnvVar ¶
type EnvVar struct {
// Name of the environment variable. Must be a C_IDENTIFIER.
Name string `json:"name"`
Value string `json:"value,omitempty"`
}
EnvVar represents an environment variable present in a Container.
type ExecAction ¶
type ExecAction struct {
// Command is the command line to execute inside the container, the working directory for the
// command is root ('/') in the container's filesystem. The command is simply exec'd, it is
// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
// a shell, you need to explicitly call out to that shell.
// Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
Command []string `json:"command,omitempty"`
}
ExecAction describes a "run in container" action.
type HTTPGetAction ¶
type HTTPGetAction struct {
// Path to access on the HTTP server.
Path string `json:"path,omitempty"`
// Name or number of the port to access on the container.
// Number must be in the range 1 to 65535.
// Name must be an IANA_SVC_NAME.
Port int `json:"port"`
// Host name to connect to, defaults to the pod IP. You probably want to set
// "Host" in httpHeaders instead.
Host string `json:"host,omitempty"`
// Scheme to use for connecting to the host.
// Defaults to HTTP.
Scheme URIScheme `json:"scheme,omitempty"`
// Custom headers to set in the request. HTTP allows repeated headers.
HTTPHeaders []HTTPHeader `json:"httpHeaders,omitempty"`
}
HTTPGetAction describes an action based on HTTP Get requests.
type HTTPHeader ¶
type HTTPHeader struct {
// The header field name
Name string `json:"name"`
// The header field value
Value string `json:"value"`
}
HTTPHeader describes a custom header to be used in HTTP probes
type Handler ¶
type Handler struct {
// One and only one of the following should be specified.
// Exec specifies the action to take.
Exec *ExecAction `json:"exec,omitempty"`
// HTTPGet specifies the http request to perform.
HTTPGet *HTTPGetAction `json:"httpGet,omitempty"`
// TCPSocket specifies an action involving a TCP port.
// TCP hooks not yet supported
TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty"`
}
Handler defines a specific action that should be taken
type HostPathVolumeSource ¶
type HostPathVolumeSource struct {
Path string `json:"path"`
}
Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.
type JobCondition ¶
type JobCondition struct {
// Type of job condition, Complete or Failed.
Type JobConditionType `json:"type"`
// Status of the condition, one of True, False, Unknown.
Status ConditionStatus `json:"status"`
// Last time the condition was checked.
// +optional
LastProbeTime Time `json:"lastProbeTime,omitempty"`
// Last time the condition transit from one status to another.
// +optional
LastTransitionTime Time `json:"lastTransitionTime,omitempty"`
// (brief) reason for the condition's last transition.
// +optional
Reason string `json:"reason,omitempty"`
// Human readable message indicating details about last transition.
// +optional
Message string `json:"message,omitempty"`
}
JobCondition describes current state of a job.
type JobConditionType ¶
type JobConditionType string
const ( // JobComplete means the job has completed its execution. JobComplete JobConditionType = "Complete" // JobFailed means the job has failed its execution. JobFailed JobConditionType = "Failed" )
These are valid conditions of a job.
type JobSpec ¶
type JobSpec struct {
// Specifies the maximum desired number of pods the job should
// run at any given time. The actual number of pods running in steady state will
// be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism),
// i.e. when the work left to do is less than max parallelism.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
// +optional
Parallelism *int32 `json:"parallelism,omitempty"`
// Specifies the desired number of successfully finished pods the
// job should be run with. Setting to nil means that the success of any
// pod signals the success of all pods, and allows parallelism to have any positive
// value. Setting to 1 means that parallelism is limited to 1 and the success of that
// pod signals the success of the job.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
// +optional
Completions *int32 `json:"completions,omitempty"`
// Specifies the duration in seconds relative to the startTime that the job may be active
// before the system tries to terminate it; value must be positive integer
// +optional
ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty"`
// Specifies the number of retries before marking this job failed.
// Defaults to 6
// +optional
BackoffLimit *int32 `json:"backoffLimit,omitempty"`
// A label query over pods that should match the pod count.
// Normally, the system sets this field for you.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
// +optional
Selector *LabelSelector `json:"selector,omitempty"`
// manualSelector controls generation of pod labels and pod selectors.
// Leave `manualSelector` unset unless you are certain what you are doing.
// When false or unset, the system pick labels unique to this job
// and appends those labels to the pod template. When true,
// the user is responsible for picking unique labels and specifying
// the selector. Failure to pick a unique label may cause this
// and other jobs to not function correctly. However, You may see
// `manualSelector=true` in jobs that were created with the old `extensions/v1beta1`
// API.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
// +optional
ManualSelector *bool `json:"manualSelector,omitempty"`
// Describes the pod that will be created when executing a job.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
Template PodTemplateSpec `json:"template"`
}
JobSpec describes how the job execution will look like.
type JobStatus ¶
type JobStatus struct {
// The latest available observations of an object's current state.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
Conditions []JobCondition `json:"conditions,omitempty"`
// Represents time when the job was acknowledged by the job controller.
// It is not guaranteed to be set in happens-before order across separate operations.
// It is represented in RFC3339 form and is in UTC.
// +optional
StartTime *Time `json:"startTime,omitempty"`
// Represents time when the job was completed. It is not guaranteed to
// be set in happens-before order across separate operations.
// It is represented in RFC3339 form and is in UTC.
// +optional
CompletionTime *Time `json:"completionTime,omitempty"`
// The number of actively running pods.
// +optional
Active int32 `json:"active,omitempty"`
// The number of pods which reached phase Succeeded.
// +optional
Succeeded int32 `json:"succeeded,omitempty"`
// The number of pods which reached phase Failed.
// +optional
Failed int32 `json:"failed,omitempty"`
}
JobStatus represents the current state of a Job.
type KubeJob ¶
type KubeJob struct {
Kind string `json:"kind"`
APIVersion string `json:"apiVersion"`
Metadata ObjectMeta `json:"metadata,omitempty"`
Spec JobSpec `json:"spec,omitempty"`
Status JobStatus `json:"status,omitempty"`
}
Job represents the configuration of a single job.
type KubeJobList ¶
type KubeJobList struct {
Kind string `json:"kind"`
APIVersion string `json:"apiVersion"`
Metadata ListMeta `json:"metadata,omitempty"`
Items []KubeJob `json:"items"`
}
JobList is a collection of jobs.
type LabelSelector ¶
type LabelSelector struct {
// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
// map is equivalent to an element of matchExpressions, whose key field is "key", the
// operator is "In", and the values array contains only "value". The requirements are ANDed.
// +optional
MatchLabels map[string]string `json:"matchLabels,omitempty"`
// matchExpressions is a list of label selector requirements. The requirements are ANDed.
// +optional
MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty"`
}
A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
type LabelSelectorOperator ¶
type LabelSelectorOperator string
A label selector operator is the set of operators that can be used in a selector requirement.
const ( LabelSelectorOpIn LabelSelectorOperator = "In" LabelSelectorOpNotIn LabelSelectorOperator = "NotIn" LabelSelectorOpExists LabelSelectorOperator = "Exists" LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist" )
type LabelSelectorRequirement ¶
type LabelSelectorRequirement struct {
// key is the label key that the selector applies to.
// +patchMergeKey=key
// +patchStrategy=merge
Key string `json:"key"`
// operator represents a key's relationship to a set of values.
// Valid operators are In, NotIn, Exists and DoesNotExist.
Operator LabelSelectorOperator `json:"operator"`
// values is an array of string values. If the operator is In or NotIn,
// the values array must be non-empty. If the operator is Exists or DoesNotExist,
// the values array must be empty. This array is replaced during a strategic
// merge patch.
// +optional
Values []string `json:"values,omitempty"`
}
A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
type ListMeta ¶
type ListMeta struct {
SelfLink string `json:"selfLink,omitempty"`
ResourceVersion string `json:"resourceVersion,omitempty"`
Continue string `json:"continue,omitempty"`
}
ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.
type ObjectMeta ¶
type PodSpec ¶
type PodSpec struct {
Containers []Container `json:"containers"`
RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"`
Volumes []Volume `json:"volumes,omitempty"`
}
type PodTemplateSpec ¶
type PodTemplateSpec struct {
Metadata ObjectMeta `json:"metadata,omitempty"`
Spec PodSpec `json:"spec,omitempty"`
}
type Probe ¶
type Probe struct {
// The action taken to determine the health of a container
Handler `json:",inline"`
// Number of seconds after the container has started before liveness probes are initiated.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
// Number of seconds after which the probe times out.
// Defaults to 1 second. Minimum value is 1.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
TimeoutSeconds int32 `json:"timeoutSeconds,omitempty"`
// How often (in seconds) to perform the probe.
// Default to 10 seconds. Minimum value is 1.
PeriodSeconds int32 `json:"periodSeconds,omitempty"`
// Minimum consecutive successes for the probe to be considered successful after having failed.
// Defaults to 1. Must be 1 for liveness. Minimum value is 1.
SuccessThreshold int32 `json:"successThreshold,omitempty"`
// Minimum consecutive failures for the probe to be considered failed after having succeeded.
// Defaults to 3. Minimum value is 1.
FailureThreshold int32 `json:"failureThreshold,omitempty"`
}
Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.
type RestartPolicy ¶
type RestartPolicy string
const ( RestartPolicyAlways RestartPolicy = "Always" RestartPolicyOnFailure RestartPolicy = "OnFailure" RestartPolicyNever RestartPolicy = "Never" )
type TCPSocketAction ¶
type TCPSocketAction struct {
// Number or name of the port to access on the container.
// Number must be in the range 1 to 65535.
// Name must be an IANA_SVC_NAME.
Port int `json:"port"`
// Optional: Host name to connect to, defaults to the pod IP.
Host string `json:"host,omitempty"`
}
TCPSocketAction describes an action based on opening a socket
type Volume ¶
type Volume struct {
// Volume's name.
// Must be a DNS_LABEL and unique within the pod.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
Name string `json:"name"`
HostPath *HostPathVolumeSource `json:"hostPath,omitempty"`
}
Volume represents a named volume in a pod that may be accessed by any container in the pod.
type VolumeMount ¶
type VolumeMount struct {
// This must match the Name of a Volume.
Name string `json:"name"`
// Mounted read-only if true, read-write otherwise (false or unspecified).
// Defaults to false.
ReadOnly bool `json:"readOnly,omitempty"`
// Path within the container at which the volume should be mounted. Must
// not contain ':'.
MountPath string `json:"mountPath"`
// Path within the volume from which the container's volume should be mounted.
// Defaults to "" (volume's root).
SubPath string `json:"subPath,omitempty"`
}
VolumeMount describes a mounting of a Volume within a container.