1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 annotations:
5 api-approved.openshift.io: https://github.com/openshift/api/pull/1032
6 exclude.release.openshift.io/internal-openshift-hosted: "true"
7 include.release.openshift.io/self-managed-high-availability: "true"
8 include.release.openshift.io/single-node-developer: "true"
9 creationTimestamp: null
10 name: machinesets.machine.openshift.io
11spec:
12 group: machine.openshift.io
13 names:
14 kind: MachineSet
15 listKind: MachineSetList
16 plural: machinesets
17 singular: machineset
18 scope: Namespaced
19 versions:
20 - additionalPrinterColumns:
21 - description: Desired Replicas
22 jsonPath: .spec.replicas
23 name: Desired
24 type: integer
25 - description: Current Replicas
26 jsonPath: .status.replicas
27 name: Current
28 type: integer
29 - description: Ready Replicas
30 jsonPath: .status.readyReplicas
31 name: Ready
32 type: integer
33 - description: Observed number of available replicas
34 jsonPath: .status.availableReplicas
35 name: Available
36 type: string
37 - description: Machineset age
38 jsonPath: .metadata.creationTimestamp
39 name: Age
40 type: date
41 name: v1beta1
42 schema:
43 openAPIV3Schema:
44 description: 'MachineSet ensures that a specified number of machines replicas are running at any given time. Compatibility level 2: Stable within a major release for a minimum of 9 months or 3 minor releases (whichever is longer).'
45 type: object
46 properties:
47 apiVersion:
48 description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
49 type: string
50 kind:
51 description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
52 type: string
53 metadata:
54 type: object
55 spec:
56 description: MachineSetSpec defines the desired state of MachineSet
57 type: object
58 properties:
59 deletePolicy:
60 description: DeletePolicy defines the policy used to identify nodes to delete when downscaling. Defaults to "Random". Valid values are "Random, "Newest", "Oldest"
61 type: string
62 enum:
63 - Random
64 - Newest
65 - Oldest
66 minReadySeconds:
67 description: MinReadySeconds is the 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)
68 type: integer
69 format: int32
70 replicas:
71 description: Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1.
72 type: integer
73 format: int32
74 default: 1
75 selector:
76 description: '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'
77 type: object
78 properties:
79 matchExpressions:
80 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
81 type: array
82 items:
83 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
84 type: object
85 required:
86 - key
87 - operator
88 properties:
89 key:
90 description: key is the label key that the selector applies to.
91 type: string
92 operator:
93 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
94 type: string
95 values:
96 description: 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.
97 type: array
98 items:
99 type: string
100 matchLabels:
101 description: 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.
102 type: object
103 additionalProperties:
104 type: string
105 x-kubernetes-map-type: atomic
106 template:
107 description: Template is the object that describes the machine that will be created if insufficient replicas are detected.
108 type: object
109 properties:
110 metadata:
111 description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'
112 type: object
113 properties:
114 annotations:
115 description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
116 type: object
117 additionalProperties:
118 type: string
119 generateName:
120 description: "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. \n If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). \n Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency"
121 type: string
122 labels:
123 description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
124 type: object
125 additionalProperties:
126 type: string
127 name:
128 description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
129 type: string
130 namespace:
131 description: "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces"
132 type: string
133 ownerReferences:
134 description: List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.
135 type: array
136 items:
137 description: OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.
138 type: object
139 required:
140 - apiVersion
141 - kind
142 - name
143 - uid
144 properties:
145 apiVersion:
146 description: API version of the referent.
147 type: string
148 blockOwnerDeletion:
149 description: If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.
150 type: boolean
151 controller:
152 description: If true, this reference points to the managing controller.
153 type: boolean
154 kind:
155 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
156 type: string
157 name:
158 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names'
159 type: string
160 uid:
161 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids'
162 type: string
163 x-kubernetes-map-type: atomic
164 spec:
165 description: 'Specification of the desired behavior of the machine. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'
166 type: object
167 properties:
168 lifecycleHooks:
169 description: LifecycleHooks allow users to pause operations on the machine at certain predefined points within the machine lifecycle.
170 type: object
171 properties:
172 preDrain:
173 description: PreDrain hooks prevent the machine from being drained. This also blocks further lifecycle events, such as termination.
174 type: array
175 items:
176 description: LifecycleHook represents a single instance of a lifecycle hook
177 type: object
178 required:
179 - name
180 - owner
181 properties:
182 name:
183 description: Name defines a unique name for the lifcycle hook. The name should be unique and descriptive, ideally 1-3 words, in CamelCase or it may be namespaced, eg. foo.example.com/CamelCase. Names must be unique and should only be managed by a single entity.
184 type: string
185 maxLength: 256
186 minLength: 3
187 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
188 owner:
189 description: Owner defines the owner of the lifecycle hook. This should be descriptive enough so that users can identify who/what is responsible for blocking the lifecycle. This could be the name of a controller (e.g. clusteroperator/etcd) or an administrator managing the hook.
190 type: string
191 maxLength: 512
192 minLength: 3
193 x-kubernetes-list-map-keys:
194 - name
195 x-kubernetes-list-type: map
196 preTerminate:
197 description: PreTerminate hooks prevent the machine from being terminated. PreTerminate hooks be actioned after the Machine has been drained.
198 type: array
199 items:
200 description: LifecycleHook represents a single instance of a lifecycle hook
201 type: object
202 required:
203 - name
204 - owner
205 properties:
206 name:
207 description: Name defines a unique name for the lifcycle hook. The name should be unique and descriptive, ideally 1-3 words, in CamelCase or it may be namespaced, eg. foo.example.com/CamelCase. Names must be unique and should only be managed by a single entity.
208 type: string
209 maxLength: 256
210 minLength: 3
211 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
212 owner:
213 description: Owner defines the owner of the lifecycle hook. This should be descriptive enough so that users can identify who/what is responsible for blocking the lifecycle. This could be the name of a controller (e.g. clusteroperator/etcd) or an administrator managing the hook.
214 type: string
215 maxLength: 512
216 minLength: 3
217 x-kubernetes-list-map-keys:
218 - name
219 x-kubernetes-list-type: map
220 metadata:
221 description: ObjectMeta will autopopulate the Node created. Use this to indicate what labels, annotations, name prefix, etc., should be used when creating the Node.
222 type: object
223 properties:
224 annotations:
225 description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
226 type: object
227 additionalProperties:
228 type: string
229 generateName:
230 description: "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. \n If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). \n Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency"
231 type: string
232 labels:
233 description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
234 type: object
235 additionalProperties:
236 type: string
237 name:
238 description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
239 type: string
240 namespace:
241 description: "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces"
242 type: string
243 ownerReferences:
244 description: List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.
245 type: array
246 items:
247 description: OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.
248 type: object
249 required:
250 - apiVersion
251 - kind
252 - name
253 - uid
254 properties:
255 apiVersion:
256 description: API version of the referent.
257 type: string
258 blockOwnerDeletion:
259 description: If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.
260 type: boolean
261 controller:
262 description: If true, this reference points to the managing controller.
263 type: boolean
264 kind:
265 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
266 type: string
267 name:
268 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names'
269 type: string
270 uid:
271 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids'
272 type: string
273 x-kubernetes-map-type: atomic
274 providerID:
275 description: ProviderID is the identification ID of the machine provided by the provider. This field must match the provider ID as seen on the node object corresponding to this machine. This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a generic out-of-tree provider for autoscaler, this field is required by autoscaler to be able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver and then a comparison is done to find out unregistered machines and are marked for delete. This field will be set by the actuators and consumed by higher level entities like autoscaler that will be interfacing with cluster-api as generic provider.
276 type: string
277 providerSpec:
278 description: ProviderSpec details Provider-specific configuration to use during node creation.
279 type: object
280 properties:
281 value:
282 description: Value is an inlined, serialized representation of the resource configuration. It is recommended that providers maintain their own versioned API types that should be serialized/deserialized from this field, akin to component config.
283 type: object
284 x-kubernetes-preserve-unknown-fields: true
285 taints:
286 description: The list of the taints to be applied to the corresponding Node in additive manner. This list will not overwrite any other taints added to the Node on an ongoing basis by other entities. These taints should be actively reconciled e.g. if you ask the machine controller to apply a taint and then manually remove the taint the machine controller will put it back) but not have the machine controller remove any taints
287 type: array
288 items:
289 description: The node this Taint is attached to has the "effect" on any pod that does not tolerate the Taint.
290 type: object
291 required:
292 - effect
293 - key
294 properties:
295 effect:
296 description: Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
297 type: string
298 key:
299 description: Required. The taint key to be applied to a node.
300 type: string
301 timeAdded:
302 description: TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.
303 type: string
304 format: date-time
305 value:
306 description: The taint value corresponding to the taint key.
307 type: string
308 status:
309 description: MachineSetStatus defines the observed state of MachineSet
310 type: object
311 properties:
312 availableReplicas:
313 description: The number of available replicas (ready for at least minReadySeconds) for this MachineSet.
314 type: integer
315 format: int32
316 errorMessage:
317 type: string
318 errorReason:
319 description: "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. \n 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 MachineTemplate'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. \n Any transient errors that occur during the reconciliation of Machines can be added as events to the MachineSet object and/or logged in the controller's output."
320 type: string
321 fullyLabeledReplicas:
322 description: The number of replicas that have labels matching the labels of the machine template of the MachineSet.
323 type: integer
324 format: int32
325 observedGeneration:
326 description: ObservedGeneration reflects the generation of the most recently observed MachineSet.
327 type: integer
328 format: int64
329 readyReplicas:
330 description: The number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is "Ready".
331 type: integer
332 format: int32
333 replicas:
334 description: Replicas is the most recently observed number of replicas.
335 type: integer
336 format: int32
337 served: true
338 storage: true
339 subresources:
340 scale:
341 labelSelectorPath: .status.labelSelector
342 specReplicasPath: .spec.replicas
343 statusReplicasPath: .status.replicas
344 status: {}
345status:
346 acceptedNames:
347 kind: ""
348 plural: ""
349 conditions: []
350 storedVersions: []
View as plain text