Documentation ¶
Overview ¶
+groupName=machine.k8s.io
Package v1alpha1 contains types to represent Kubernetes cluster and machine configuration.
Index ¶
- Constants
- Variables
- func Resource(resource string) schema.GroupResource
- type ContainerRuntimeInfo
- type Machine
- type MachineList
- type MachineRole
- type MachineSet
- type MachineSetList
- type MachineSetSpec
- type MachineSetStatus
- type MachineSpec
- type MachineStatus
- type MachineStatusError
- type MachineTemplateSpec
- type MachineVersionInfo
Constants ¶
const ( MasterRole = "Master" NodeRole = "Node" )
const GroupName = "machine.k8s.io"
GroupName is the group name use in this package
const GroupVersion = "v1alpha1"
const MachineResourcePlural = "machines"
Variables ¶
var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) AddToScheme = SchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: GroupVersion}
SchemeGroupVersion is 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 ContainerRuntimeInfo ¶
type ContainerRuntimeInfo struct { // docker, rkt, containerd, ... Name string `json:"name"` // Semantic version of the container runtime to use Version string `json:"version"` }
func (*ContainerRuntimeInfo) DeepCopy ¶
func (in *ContainerRuntimeInfo) DeepCopy() *ContainerRuntimeInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerRuntimeInfo.
func (*ContainerRuntimeInfo) DeepCopyInto ¶
func (in *ContainerRuntimeInfo) DeepCopyInto(out *ContainerRuntimeInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Machine ¶
type Machine struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata"` Spec MachineSpec `json:"spec"` Status MachineStatus `json:"status,omitempty"` }
Machine represents a single Node that should exist (whether it does or not yet). In this model, there is no grouping of nodes to scale with a numeric field. Each Machine exists independently, and grouping can only be inferred via label selectors.
In order for a new Node to be created, one can generically create a new Machine object, possibly copying the spec from an existing Machine or a template. To scale down the cluster, delete specific instances of Machines and the underlying Nodes will be unregistered/deprovisioned. Separate provider-specific controllers will watch Machine objects they can act on (like a GCE cloud controller watching for only Machines destined for GCE) and take the appropriate actions.
Any updates to the MachineSpec will be actuated to change the Node in place or replace the Node with one conforming to the spec. In this model, the fact that a controller is able to upgrade a node via in-place upgrades or via a cloud replacement is an implementation detail without API controls.
It is recommended, but not required, that provider-specific controllers add finalizers to Machine objects so that they can be triggered on deletion to release the necessary external resources, reporting any errors encountered.
func (*Machine) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Machine.
func (*Machine) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Machine) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineList ¶
type MachineList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []Machine `json:"items"` }
+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
func (*MachineList) DeepCopy ¶
func (in *MachineList) DeepCopy() *MachineList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineList.
func (*MachineList) DeepCopyInto ¶
func (in *MachineList) DeepCopyInto(out *MachineList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineList) DeepCopyObject ¶
func (in *MachineList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineRole ¶
type MachineRole string
The MachineRole indicates the purpose of the Machine, and will determine what software and configuration will be used when provisioning and managing the Machine. A single Machine may have more than one role, and the list and definitions of supported roles is expected to evolve over time.
Currently, only two roles are supported: Master and Node. In the future, we expect user needs to drive the evolution and granularity of these roles, with new additions accommodating common cluster patterns, like dedicated etcd Machines.
+-----------------------+------------------------+ | Master present | Master absent |
+---------------+-----------------------+------------------------| | Node present: | Install control plane | Join the cluster as | | | and be schedulable | just a node | |---------------+-----------------------+------------------------| | Node absent: | Install control plane | Invalid configuration | | | and be unscheduleable | | +---------------+-----------------------+------------------------+
type MachineSet ¶ added in v0.7.14
type MachineSet struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec MachineSetSpec `json:"spec,omitempty"` Status MachineSetStatus `json:"status,omitempty"` }
MachineSet ensures that a specified number of machines replicas are running at any given time. +k8s:openapi-gen=true +resource:path=machinesets,strategy=MachineSetStrategy
func (*MachineSet) DeepCopy ¶ added in v0.7.14
func (in *MachineSet) DeepCopy() *MachineSet
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSet.
func (*MachineSet) DeepCopyInto ¶ added in v0.7.14
func (in *MachineSet) DeepCopyInto(out *MachineSet)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineSet) DeepCopyObject ¶ added in v0.7.14
func (in *MachineSet) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineSetList ¶ added in v0.7.14
type MachineSetList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []MachineSet `json:"items"` }
func (*MachineSetList) DeepCopy ¶ added in v0.7.14
func (in *MachineSetList) DeepCopy() *MachineSetList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSetList.
func (*MachineSetList) DeepCopyInto ¶ added in v0.7.14
func (in *MachineSetList) DeepCopyInto(out *MachineSetList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineSetList) DeepCopyObject ¶ added in v0.7.14
func (in *MachineSetList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineSetSpec ¶ added in v0.7.14
type MachineSetSpec struct { // Replicas is the number of desired replicas. // This is a pointer to distinguish between explicit zero and unspecified. // Defaults to 1. // +optional Replicas *int32 `json:"replicas,omitempty"` // Minimum number of seconds for which a newly created machine should be ready. // Defaults to 0 (machine will be considered available as soon as it is ready) // +optional MinReadySeconds int32 `json:"minReadySeconds,omitempty"` // Selector is a label query over machines that should match the replica count. // Label keys and values that must match in order to be controlled by this MachineSet. // It must match the machine template's labels. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors Selector metav1.LabelSelector `json:"selector"` // Template is the object that describes the machine that will be created if // insufficient replicas are detected. // +optional Template MachineTemplateSpec `json:"template,omitempty"` }
MachineSetSpec defines the desired state of MachineSet
func (*MachineSetSpec) DeepCopy ¶ added in v0.7.14
func (in *MachineSetSpec) DeepCopy() *MachineSetSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSetSpec.
func (*MachineSetSpec) DeepCopyInto ¶ added in v0.7.14
func (in *MachineSetSpec) DeepCopyInto(out *MachineSetSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineSetStatus ¶ added in v0.7.14
type MachineSetStatus struct { // Replicas is the most recently observed number of replicas. Replicas int32 `json:"replicas"` // The number of replicas that have labels matching the labels of the machine template of the MachineSet. // +optional FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty"` // The number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is "Ready". // +optional ReadyReplicas int32 `json:"readyReplicas,omitempty"` // The number of available replicas (ready for at least minReadySeconds) for this MachineSet. // +optional AvailableReplicas int32 `json:"availableReplicas,omitempty"` // ObservedGeneration reflects the generation of the most recently observed MachineSet. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // In the event that there is a terminal problem reconciling the // replicas, both ErrorReason and ErrorMessage will be set. ErrorReason // will be populated with a succinct value suitable for machine // interpretation, while ErrorMessage will contain a more verbose // string suitable for logging and human consumption. // // These fields should not be set for transitive errors that a // controller faces that are expected to be fixed automatically over // time (like service outages), but instead indicate that something is // fundamentally wrong with the MachineTemplates's spec or the configuration of // the machine controller, and that manual intervention is required. Examples // of terminal errors would be invalid combinations of settings in the // spec, values that are unsupported by the machine controller, or the // responsible machine controller itself being critically misconfigured. // // Any transient errors that occur during the reconcilation of Machines // can be added as events to the MachineSet object and/or logged in the // controller's output. // +optional ErrorReason *common.MachineSetStatusError `json:"errorReason,omitempty"` // +optional ErrorMessage *string `json:"errorMessage,omitempty"` }
MachineSetStatus defines the observed state of MachineSet
func (*MachineSetStatus) DeepCopy ¶ added in v0.7.14
func (in *MachineSetStatus) DeepCopy() *MachineSetStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSetStatus.
func (*MachineSetStatus) DeepCopyInto ¶ added in v0.7.14
func (in *MachineSetStatus) DeepCopyInto(out *MachineSetStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineSpec ¶
type MachineSpec struct { // This ObjectMeta will autopopulate the Node created. Use this to // indicate what labels, annotations, etc., should be used when // creating the Node. // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // The full, authoritative list of taints to apply to the corresponding // Node. This list will overwrite any modifications made to the Node on // an ongoing basis. // +optional Taints []corev1.Taint `json:"taints,omitempty"` // Provider-specific serialized configuration to use during node // creation. It is recommended that providers maintain their own // versioned API types that should be serialized/deserialized from this // field, akin to component config. // +optional ProviderConfig runtime.RawExtension `json:"providerConfig"` // A list of roles for this Machine to use. Roles []MachineRole `json:"roles,omitempty"` // Versions of key software to use. This field is optional at cluster // creation time, and omitting the field indicates that the cluster // installation tool should select defaults for the user. These // defaults may differ based on the cluster installer, but the tool // should populate the values it uses when persisting Machine objects. // A Machine spec missing this field at runtime is invalid. // +optional Versions MachineVersionInfo `json:"versions,omitempty"` // To populate in the associated Node for dynamic kubelet config. This // field already exists in Node, so any updates to it in the Machine // spec will be automatially copied to the linked NodeRef from the // status. The rest of dynamic kubelet config support should then work // as-is. // +optional ConfigSource *corev1.NodeConfigSource `json:"configSource,omitempty"` }
func (*MachineSpec) DeepCopy ¶
func (in *MachineSpec) DeepCopy() *MachineSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSpec.
func (*MachineSpec) DeepCopyInto ¶
func (in *MachineSpec) DeepCopyInto(out *MachineSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineStatus ¶
type MachineStatus struct { // If the corresponding Node exists, this will point to its object. // +optional NodeRef *corev1.ObjectReference `json:"nodeRef,omitempty"` // When was this status last observed // +optional LastUpdated metav1.Time `json:"lastUpdated,omitempty"` // The current versions of software on the corresponding Node (if it // exists). This is provided for a few reasons: // // 1) It is more convenient than checking the NodeRef, traversing it to // the Node, and finding the appropriate field in Node.Status.NodeInfo // (which uses different field names and formatting). // 2) It removes some of the dependency on the structure of the Node, // so that if the structure of Node.Status.NodeInfo changes, only // machine controllers need to be updated, rather than every client // of the Machines API. // 3) There is no other way simple way to check the ControlPlane // version. A client would have to connect directly to the apiserver // running on the target node in order to find out its version. // +optional Versions *MachineVersionInfo `json:"versions,omitempty"` // In the event that there is a terminal problem reconciling the // Machine, both ErrorReason and ErrorMessage will be set. ErrorReason // will be populated with a succinct value suitable for machine // interpretation, while ErrorMessage will contain a more verbose // string suitable for logging and human consumption. // // These fields should not be set for transitive errors that a // controller faces that are expected to be fixed automatically over // time (like service outages), but instead indicate that something is // fundamentally wrong with the Machine's spec or the configuration of // the controller, and that manual intervention is required. Examples // of terminal errors would be invalid combinations of settings in the // spec, values that are unsupported by the controller, or the // responsible controller itself being critically misconfigured. // // Any transient errors that occur during the reconcilation of Machines // can be added as events to the Machine object and/or logged in the // controller's output. // +optional ErrorReason *MachineStatusError `json:"errorReason,omitempty"` // +optional ErrorMessage *string `json:"errorMessage,omitempty"` }
func (*MachineStatus) DeepCopy ¶
func (in *MachineStatus) DeepCopy() *MachineStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineStatus.
func (*MachineStatus) DeepCopyInto ¶
func (in *MachineStatus) DeepCopyInto(out *MachineStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineStatusError ¶
type MachineStatusError string
const ( // Represents that the combination of configuration in the MachineSpec // is not supported by this cluster. This is not a transient error, but // indicates a state that must be fixed before progress can be made. // // Example: the ProviderConfig specifies an instance type that doesn't exist, InvalidConfigurationMachineError MachineStatusError = "InvalidConfiguration" // This indicates that the MachineSpec has been updated in a way that // is not supported for reconciliation on this cluster. The spec may be // completely valid from a configuration standpoint, but the controller // does not support changing the real world state to match the new // spec. // // Example: the responsible controller is not capable of changing the // container runtime from docker to rkt. UnsupportedChangeMachineError MachineStatusError = "UnsupportedChange" // This generally refers to exceeding one's quota in a cloud provider, // or running out of physical machines in an on-premise environment. InsufficientResourcesMachineError MachineStatusError = "InsufficientResources" // There was an error while trying to create a Node to match this // Machine. This may indicate a transient problem that will be fixed // automatically with time, such as a service outage, or a terminal // error during creation that doesn't match a more specific // MachineStatusError value. // // Example: timeout trying to connect to GCE. CreateMachineError MachineStatusError = "CreateError" // An error was encountered while trying to delete the Node that this // Machine represents. This could be a transient or terminal error, but // will only be observable if the provider's Machine controller has // added a finalizer to the object to more gracefully handle deletions. // // Example: cannot resolve EC2 IP address. DeleteMachineError MachineStatusError = "DeleteError" )
type MachineTemplateSpec ¶ added in v0.7.14
type MachineTemplateSpec struct { // Standard object's metadata. // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // Specification of the desired behavior of the machine. // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status // +optional Spec MachineSpec `json:"spec,omitempty"` }
MachineTemplateSpec describes the data a machine should have when created from a template
func (*MachineTemplateSpec) DeepCopy ¶ added in v0.7.14
func (in *MachineTemplateSpec) DeepCopy() *MachineTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineTemplateSpec.
func (*MachineTemplateSpec) DeepCopyInto ¶ added in v0.7.14
func (in *MachineTemplateSpec) DeepCopyInto(out *MachineTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineVersionInfo ¶
type MachineVersionInfo struct { // Semantic version of kubelet to run Kubelet string `json:"kubelet"` // Semantic version of the Kubernetes control plane to // run. This should only be populated when the machine is a // master. // +optional ControlPlane string `json:"controlPlane,omitempty"` // Name/version of container runtime ContainerRuntime ContainerRuntimeInfo `json:"containerRuntime"` }
func (*MachineVersionInfo) DeepCopy ¶
func (in *MachineVersionInfo) DeepCopy() *MachineVersionInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineVersionInfo.
func (*MachineVersionInfo) DeepCopyInto ¶
func (in *MachineVersionInfo) DeepCopyInto(out *MachineVersionInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.