k8s.io/apiserver@v0.31.1/pkg/apis/example/v1/types.go (about) 1 /* 2 Copyright 2017 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package v1 18 19 import ( 20 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 21 ) 22 23 type ( 24 ConditionStatus string 25 PodConditionType string 26 PodPhase string 27 RestartPolicy string 28 ) 29 30 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 31 32 // Pod is a collection of containers, used as either input (create, update) or as output (list, get). 33 type Pod struct { 34 metav1.TypeMeta `json:",inline"` 35 // Standard object's metadata. 36 // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata 37 // +optional 38 metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` 39 40 // Specification of the desired behavior of the pod. 41 // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status 42 // +optional 43 Spec PodSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` 44 45 // Most recently observed status of the pod. 46 // This data may not be up to date. 47 // Populated by the system. 48 // Read-only. 49 // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status 50 // +optional 51 Status PodStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` 52 } 53 54 // PodStatus represents information about the status of a pod. Status may trail the actual 55 // state of a system. 56 type PodStatus struct { 57 // Current condition of the pod. 58 // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-phase 59 // +optional 60 Phase PodPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PodPhase"` 61 // Current service state of pod. 62 // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions 63 // +optional 64 Conditions []PodCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` 65 // A human readable message indicating details about why the pod is in this condition. 66 // +optional 67 Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` 68 // A brief CamelCase message indicating details about why the pod is in this state. 69 // e.g. 'DiskPressure' 70 // +optional 71 Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` 72 73 // IP address of the host to which the pod is assigned. Empty if not yet scheduled. 74 // +optional 75 HostIP string `json:"hostIP,omitempty" protobuf:"bytes,5,opt,name=hostIP"` 76 // IP address allocated to the pod. Routable at least within the cluster. 77 // Empty if not yet allocated. 78 // +optional 79 PodIP string `json:"podIP,omitempty" protobuf:"bytes,6,opt,name=podIP"` 80 81 // RFC 3339 date and time at which the object was acknowledged by the Kubelet. 82 // This is before the Kubelet pulled the container image(s) for the pod. 83 // +optional 84 StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,7,opt,name=startTime"` 85 } 86 87 type PodCondition struct { 88 // Type is the type of the condition. 89 // Currently only Ready. 90 // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions 91 Type PodConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=PodConditionType"` 92 // Status is the status of the condition. 93 // Can be True, False, Unknown. 94 // More info: http://kubernetes.io/docs/user-guide/pod-states#pod-conditions 95 Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` 96 // Last time we probed the condition. 97 // +optional 98 LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` 99 // Last time the condition transitioned from one status to another. 100 // +optional 101 LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` 102 // Unique, one-word, CamelCase reason for the condition's last transition. 103 // +optional 104 Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` 105 // Human-readable message indicating details about last transition. 106 // +optional 107 Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` 108 } 109 110 // PodSpec is a description of a pod 111 type PodSpec struct { 112 // Restart policy for all containers within the pod. 113 // One of Always, OnFailure, Never. 114 // Default to Always. 115 // More info: http://kubernetes.io/docs/user-guide/pod-states#restartpolicy 116 // +optional 117 RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" protobuf:"bytes,3,opt,name=restartPolicy,casttype=RestartPolicy"` 118 // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. 119 // Value must be non-negative integer. The value zero indicates delete immediately. 120 // If this value is nil, the default grace period will be used instead. 121 // The grace period is the duration in seconds after the processes running in the pod are sent 122 // a termination signal and the time when the processes are forcibly halted with a kill signal. 123 // Set this value longer than the expected cleanup time for your process. 124 // Defaults to 30 seconds. 125 // +optional 126 TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty" protobuf:"varint,4,opt,name=terminationGracePeriodSeconds"` 127 // Optional duration in seconds the pod may be active on the node relative to 128 // StartTime before the system will actively try to mark it failed and kill associated containers. 129 // Value must be a positive integer. 130 // +optional 131 ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,5,opt,name=activeDeadlineSeconds"` 132 // NodeSelector is a selector which must be true for the pod to fit on a node. 133 // Selector which must match a node's labels for the pod to be scheduled on that node. 134 // More info: http://kubernetes.io/docs/user-guide/node-selection/README 135 // +optional 136 NodeSelector map[string]string `json:"nodeSelector,omitempty" protobuf:"bytes,7,rep,name=nodeSelector"` 137 138 // ServiceAccountName is the name of the ServiceAccount to use to run this pod. 139 // More info: https://kubernetes.io/docs/concepts/security/service-accounts/ 140 // +optional 141 ServiceAccountName string `json:"serviceAccountName,omitempty" protobuf:"bytes,8,opt,name=serviceAccountName"` 142 // DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. 143 // Deprecated: Use serviceAccountName instead. 144 // +k8s:conversion-gen=false 145 // +optional 146 DeprecatedServiceAccount string `json:"serviceAccount,omitempty" protobuf:"bytes,9,opt,name=serviceAccount"` 147 148 // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, 149 // the scheduler simply schedules this pod onto that node, assuming that it fits resource 150 // requirements. 151 // +optional 152 NodeName string `json:"nodeName,omitempty" protobuf:"bytes,10,opt,name=nodeName"` 153 // Host networking requested for this pod. Use the host's network namespace. 154 // If this option is set, the ports that will be used must be specified. 155 // Default to false. 156 // +k8s:conversion-gen=false 157 // +optional 158 HostNetwork bool `json:"hostNetwork,omitempty" protobuf:"varint,11,opt,name=hostNetwork"` 159 // Use the host's pid namespace. 160 // Optional: Default to false. 161 // +k8s:conversion-gen=false 162 // +optional 163 HostPID bool `json:"hostPID,omitempty" protobuf:"varint,12,opt,name=hostPID"` 164 // Use the host's ipc namespace. 165 // Optional: Default to false. 166 // +k8s:conversion-gen=false 167 // +optional 168 HostIPC bool `json:"hostIPC,omitempty" protobuf:"varint,13,opt,name=hostIPC"` 169 // Specifies the hostname of the Pod 170 // If not specified, the pod's hostname will be set to a system-defined value. 171 // +optional 172 Hostname string `json:"hostname,omitempty" protobuf:"bytes,16,opt,name=hostname"` 173 // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". 174 // If not specified, the pod will not have a domainname at all. 175 // +optional 176 Subdomain string `json:"subdomain,omitempty" protobuf:"bytes,17,opt,name=subdomain"` 177 // If specified, the pod will be dispatched by specified scheduler. 178 // If not specified, the pod will be dispatched by default scheduler. 179 // +optional 180 SchedulerName string `json:"schedulername,omitempty" protobuf:"bytes,19,opt,name=schedulername"` 181 } 182 183 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 184 185 // PodList is a list of Pods. 186 type PodList struct { 187 metav1.TypeMeta `json:",inline"` 188 // Standard list metadata. 189 // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 190 // +optional 191 metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` 192 193 // List of pods. 194 // More info: http://kubernetes.io/docs/user-guide/pods 195 Items []Pod `json:"items" protobuf:"bytes,2,rep,name=items"` 196 }