/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package example import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) type ( ConditionStatus string PodConditionType string PodPhase string RestartPolicy string ) // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // Pod is a collection of containers, used as either input (create, update) or as output (list, get). type Pod struct { metav1.TypeMeta // +optional metav1.ObjectMeta // Spec defines the behavior of a pod. // +optional Spec PodSpec // Status represents the current information about a pod. This data may not be up // to date. // +optional Status PodStatus } // PodStatus represents information about the status of a pod. Status may trail the actual // state of a system. type PodStatus struct { // +optional Phase PodPhase // +optional Conditions []PodCondition // A human readable message indicating details about why the pod is in this state. // +optional Message string // A brief CamelCase message indicating details about why the pod is in this state. e.g. 'DiskPressure' // +optional Reason string // +optional HostIP string // +optional PodIP string // Date and time at which the object was acknowledged by the Kubelet. // This is before the Kubelet pulled the container image(s) for the pod. // +optional StartTime *metav1.Time } type PodCondition struct { Type PodConditionType Status ConditionStatus // +optional LastProbeTime metav1.Time // +optional LastTransitionTime metav1.Time // +optional Reason string // +optional Message string } // PodSpec is a description of a pod type PodSpec struct { // +optional RestartPolicy RestartPolicy // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. // Value must be non-negative integer. The value zero indicates delete immediately. // If this value is nil, the default grace period will be used instead. // The grace period is the duration in seconds after the processes running in the pod are sent // a termination signal and the time when the processes are forcibly halted with a kill signal. // Set this value longer than the expected cleanup time for your process. // +optional TerminationGracePeriodSeconds *int64 // Optional duration in seconds relative to the StartTime that the pod may be active on a node // before the system actively tries to terminate the pod; value must be positive integer // +optional ActiveDeadlineSeconds *int64 // NodeSelector is a selector which must be true for the pod to fit on a node // +optional NodeSelector map[string]string // ServiceAccountName is the name of the ServiceAccount to use to run this pod // The pod will be allowed to use secrets referenced by the ServiceAccount ServiceAccountName string // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, // the scheduler simply schedules this pod onto that node, assuming that it fits resource // requirements. // +optional NodeName string // Specifies the hostname of the Pod. // If not specified, the pod's hostname will be set to a system-defined value. // +optional Hostname string // If specified, the fully qualified Pod hostname will be "...svc.". // If not specified, the pod will not have a domainname at all. // +optional Subdomain string // If specified, the pod will be dispatched by specified scheduler. // If not specified, the pod will be dispatched by default scheduler. // +optional SchedulerName string } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // PodList is a list of Pods. type PodList struct { metav1.TypeMeta // +optional metav1.ListMeta Items []Pod } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // ReplicaSet ensures that a specified number of pod replicas are running at any given time. type ReplicaSet struct { metav1.TypeMeta // +optional metav1.ObjectMeta // Spec defines the desired behavior of this ReplicaSet. // +optional Spec ReplicaSetSpec // Status is the current status of this ReplicaSet. This data may be // out of date by some window of time. // +optional Status ReplicaSetStatus } // ReplicaSetSpec is the specification of a ReplicaSet. // As the internal representation of a ReplicaSet, it must have // a Template set. type ReplicaSetSpec struct { // Replicas is the number of desired replicas. Replicas int32 } // ReplicaSetStatus represents the current status of a ReplicaSet. type ReplicaSetStatus struct { // Replicas is the number of actual replicas. Replicas int32 }