1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 name: virtualmachineinstances.kubevirt.io
5 labels:
6 app.kubernetes.io/component: kubevirt
7 app.kubernetes.io/managed-by: virt-operator
8 kubevirt.io: ""
9 annotations:
10 kubevirt.io/generation: "3"
11 kubevirt.io/install-strategy-identifier: d07de36ca46d4e186982d4a128be84f720815c45
12 kubevirt.io/install-strategy-registry: us-east1-docker.pkg.dev/ret-edge-pltf-infra/thirdparty/quay.io/kubevirt
13 kubevirt.io/install-strategy-version: v1.1.0
14 generation: 1
15spec:
16 conversion:
17 strategy: None
18 group: kubevirt.io
19 names:
20 kind: VirtualMachineInstance
21 categories:
22 - all
23 listKind: VirtualMachineInstanceList
24 plural: virtualmachineinstances
25 shortNames:
26 - vmi
27 - vmis
28 singular: virtualmachineinstance
29 scope: Namespaced
30 versions:
31 - name: v1
32 additionalPrinterColumns:
33 - name: Age
34 type: date
35 jsonPath: .metadata.creationTimestamp
36 - name: Phase
37 type: string
38 jsonPath: .status.phase
39 - name: IP
40 type: string
41 jsonPath: .status.interfaces[0].ipAddress
42 - name: NodeName
43 type: string
44 jsonPath: .status.nodeName
45 - name: Ready
46 type: string
47 jsonPath: .status.conditions[?(@.type=='Ready')].status
48 - name: Live-Migratable
49 type: string
50 priority: 1
51 jsonPath: .status.conditions[?(@.type=='LiveMigratable')].status
52 - name: Paused
53 type: string
54 priority: 1
55 jsonPath: .status.conditions[?(@.type=='Paused')].status
56 schema:
57 openAPIV3Schema:
58 type: object
59 description: VirtualMachineInstance is *the* VirtualMachineInstance Definition. It represents a virtual machine in the runtime environment of kubernetes.
60 properties:
61 apiVersion:
62 type: string
63 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'
64 kind:
65 type: string
66 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'
67 metadata:
68 type: object
69 spec:
70 type: object
71 description: VirtualMachineInstance Spec contains the VirtualMachineInstance specification.
72 properties:
73 terminationGracePeriodSeconds:
74 type: integer
75 description: Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.
76 format: int64
77 dnsPolicy:
78 type: string
79 description: Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.
80 hostname:
81 type: string
82 description: Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.
83 subdomain:
84 type: string
85 description: If specified, the fully qualified vmi hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.
86 schedulerName:
87 type: string
88 description: If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.
89 priorityClassName:
90 type: string
91 description: If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.
92 nodeSelector:
93 type: object
94 additionalProperties:
95 type: string
96 description: 'NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node''s labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'
97 volumes:
98 type: array
99 description: List of volumes that can be mounted by disks belonging to the vmi.
100 items:
101 type: object
102 description: Volume represents a named volume in a vmi.
103 properties:
104 name:
105 type: string
106 description: 'Volume''s name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
107 serviceAccount:
108 type: object
109 description: 'ServiceAccountVolumeSource represents a reference to a service account. There can only be one volume of this type! More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'
110 properties:
111 serviceAccountName:
112 type: string
113 description: 'Name of the service account in the pod''s namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'
114 cloudInitConfigDrive:
115 type: object
116 description: 'CloudInitConfigDrive represents a cloud-init Config Drive user-data source. The Config Drive data will be added as a disk to the vmi. A proper cloud-init installation is required inside the guest. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html'
117 properties:
118 secretRef:
119 type: object
120 description: UserDataSecretRef references a k8s secret that contains config drive userdata.
121 properties:
122 name:
123 type: string
124 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
125 networkData:
126 type: string
127 description: NetworkData contains config drive inline cloud-init networkdata.
128 networkDataBase64:
129 type: string
130 description: NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.
131 networkDataSecretRef:
132 type: object
133 description: NetworkDataSecretRef references a k8s secret that contains config drive networkdata.
134 properties:
135 name:
136 type: string
137 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
138 userData:
139 type: string
140 description: UserData contains config drive inline cloud-init userdata.
141 userDataBase64:
142 type: string
143 description: UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.
144 cloudInitNoCloud:
145 type: object
146 description: 'CloudInitNoCloud represents a cloud-init NoCloud user-data source. The NoCloud data will be added as a disk to the vmi. A proper cloud-init installation is required inside the guest. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html'
147 properties:
148 secretRef:
149 type: object
150 description: UserDataSecretRef references a k8s secret that contains NoCloud userdata.
151 properties:
152 name:
153 type: string
154 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
155 networkData:
156 type: string
157 description: NetworkData contains NoCloud inline cloud-init networkdata.
158 networkDataBase64:
159 type: string
160 description: NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.
161 networkDataSecretRef:
162 type: object
163 description: NetworkDataSecretRef references a k8s secret that contains NoCloud networkdata.
164 properties:
165 name:
166 type: string
167 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
168 userData:
169 type: string
170 description: UserData contains NoCloud inline cloud-init userdata.
171 userDataBase64:
172 type: string
173 description: UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.
174 configMap:
175 type: object
176 description: 'ConfigMapSource represents a reference to a ConfigMap in the same namespace. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/'
177 properties:
178 name:
179 type: string
180 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
181 optional:
182 type: boolean
183 description: Specify whether the ConfigMap or it's keys must be defined
184 volumeLabel:
185 type: string
186 description: The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are "cidata" (cloud-init), "config-2" (cloud-init) or "OEMDRV" (kickstart).
187 containerDisk:
188 type: object
189 description: 'ContainerDisk references a docker image, embedding a qcow or raw disk. More info: https://kubevirt.gitbooks.io/user-guide/registry-disk.html'
190 properties:
191 image:
192 type: string
193 description: Image is the name of the image with the embedded disk.
194 imagePullPolicy:
195 type: string
196 description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
197 imagePullSecret:
198 type: string
199 description: ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.
200 path:
201 type: string
202 description: Path defines the path to disk file in the container
203 required:
204 - image
205 dataVolume:
206 type: object
207 description: DataVolume represents the dynamic creation a PVC for this volume as well as the process of populating that PVC with a disk image.
208 properties:
209 name:
210 type: string
211 description: Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.
212 hotpluggable:
213 type: boolean
214 description: Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.
215 required:
216 - name
217 downwardAPI:
218 type: object
219 description: DownwardAPI represents downward API about the pod that should populate this volume
220 properties:
221 fields:
222 type: array
223 description: Fields is a list of downward API volume file
224 items:
225 type: object
226 description: DownwardAPIVolumeFile represents information to create the file containing the pod field
227 properties:
228 fieldRef:
229 type: object
230 description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'
231 properties:
232 apiVersion:
233 type: string
234 description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
235 fieldPath:
236 type: string
237 description: Path of the field to select in the specified API version.
238 required:
239 - fieldPath
240 resourceFieldRef:
241 type: object
242 description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'
243 properties:
244 containerName:
245 type: string
246 description: 'Container name: required for volumes, optional for env vars'
247 divisor:
248 anyOf:
249 - type: integer
250 - type: string
251 description: Specifies the output format of the exposed resources, defaults to "1"
252 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
253 x-kubernetes-int-or-string: true
254 resource:
255 type: string
256 description: 'Required: resource to select'
257 required:
258 - resource
259 mode:
260 type: integer
261 description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'
262 format: int32
263 path:
264 type: string
265 description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''
266 required:
267 - path
268 volumeLabel:
269 type: string
270 description: The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are "cidata" (cloud-init), "config-2" (cloud-init) or "OEMDRV" (kickstart).
271 downwardMetrics:
272 type: object
273 description: DownwardMetrics adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.
274 emptyDisk:
275 type: object
276 description: 'EmptyDisk represents a temporary disk which shares the vmis lifecycle. More info: https://kubevirt.gitbooks.io/user-guide/disks-and-volumes.html'
277 properties:
278 capacity:
279 anyOf:
280 - type: integer
281 - type: string
282 description: Capacity of the sparse disk.
283 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
284 x-kubernetes-int-or-string: true
285 required:
286 - capacity
287 ephemeral:
288 type: object
289 description: Ephemeral is a special volume source that "wraps" specified source and provides copy-on-write image on top of it.
290 properties:
291 persistentVolumeClaim:
292 type: object
293 description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
294 properties:
295 readOnly:
296 type: boolean
297 description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.
298 claimName:
299 type: string
300 description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
301 required:
302 - claimName
303 hostDisk:
304 type: object
305 description: HostDisk represents a disk created on the cluster level
306 properties:
307 type:
308 type: string
309 description: Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'
310 capacity:
311 anyOf:
312 - type: integer
313 - type: string
314 description: Capacity of the sparse disk
315 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
316 x-kubernetes-int-or-string: true
317 path:
318 type: string
319 description: The path to HostDisk image located on the cluster
320 shared:
321 type: boolean
322 description: Shared indicate whether the path is shared between nodes
323 required:
324 - path
325 - type
326 memoryDump:
327 type: object
328 description: MemoryDump is attached to the virt launcher and is populated with a memory dump of the vmi
329 properties:
330 readOnly:
331 type: boolean
332 description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.
333 claimName:
334 type: string
335 description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
336 hotpluggable:
337 type: boolean
338 description: Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.
339 required:
340 - claimName
341 persistentVolumeClaim:
342 type: object
343 description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
344 properties:
345 readOnly:
346 type: boolean
347 description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.
348 claimName:
349 type: string
350 description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
351 hotpluggable:
352 type: boolean
353 description: Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.
354 required:
355 - claimName
356 secret:
357 type: object
358 description: 'SecretVolumeSource represents a reference to a secret data in the same namespace. More info: https://kubernetes.io/docs/concepts/configuration/secret/'
359 properties:
360 optional:
361 type: boolean
362 description: Specify whether the Secret or it's keys must be defined
363 secretName:
364 type: string
365 description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
366 volumeLabel:
367 type: string
368 description: The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are "cidata" (cloud-init), "config-2" (cloud-init) or "OEMDRV" (kickstart).
369 sysprep:
370 type: object
371 description: Represents a Sysprep volume source.
372 properties:
373 configMap:
374 type: object
375 description: ConfigMap references a ConfigMap that contains Sysprep answer file named autounattend.xml that should be attached as disk of CDROM type.
376 properties:
377 name:
378 type: string
379 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
380 secret:
381 type: object
382 description: Secret references a k8s Secret that contains Sysprep answer file named autounattend.xml that should be attached as disk of CDROM type.
383 properties:
384 name:
385 type: string
386 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
387 required:
388 - name
389 affinity:
390 type: object
391 description: If affinity is specifies, obey all the affinity rules
392 properties:
393 nodeAffinity:
394 type: object
395 description: Describes node affinity scheduling rules for the pod.
396 properties:
397 preferredDuringSchedulingIgnoredDuringExecution:
398 type: array
399 description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
400 items:
401 type: object
402 description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
403 properties:
404 preference:
405 type: object
406 description: A node selector term, associated with the corresponding weight.
407 properties:
408 matchExpressions:
409 type: array
410 description: A list of node selector requirements by node's labels.
411 items:
412 type: object
413 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
414 properties:
415 key:
416 type: string
417 description: The label key that the selector applies to.
418 operator:
419 type: string
420 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
421 values:
422 type: array
423 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
424 items:
425 type: string
426 required:
427 - key
428 - operator
429 matchFields:
430 type: array
431 description: A list of node selector requirements by node's fields.
432 items:
433 type: object
434 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
435 properties:
436 key:
437 type: string
438 description: The label key that the selector applies to.
439 operator:
440 type: string
441 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
442 values:
443 type: array
444 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
445 items:
446 type: string
447 required:
448 - key
449 - operator
450 weight:
451 type: integer
452 description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
453 format: int32
454 required:
455 - preference
456 - weight
457 requiredDuringSchedulingIgnoredDuringExecution:
458 type: object
459 description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
460 properties:
461 nodeSelectorTerms:
462 type: array
463 description: Required. A list of node selector terms. The terms are ORed.
464 items:
465 type: object
466 description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
467 properties:
468 matchExpressions:
469 type: array
470 description: A list of node selector requirements by node's labels.
471 items:
472 type: object
473 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
474 properties:
475 key:
476 type: string
477 description: The label key that the selector applies to.
478 operator:
479 type: string
480 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
481 values:
482 type: array
483 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
484 items:
485 type: string
486 required:
487 - key
488 - operator
489 matchFields:
490 type: array
491 description: A list of node selector requirements by node's fields.
492 items:
493 type: object
494 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
495 properties:
496 key:
497 type: string
498 description: The label key that the selector applies to.
499 operator:
500 type: string
501 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
502 values:
503 type: array
504 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
505 items:
506 type: string
507 required:
508 - key
509 - operator
510 required:
511 - nodeSelectorTerms
512 podAffinity:
513 type: object
514 description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
515 properties:
516 preferredDuringSchedulingIgnoredDuringExecution:
517 type: array
518 description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
519 items:
520 type: object
521 description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
522 properties:
523 podAffinityTerm:
524 type: object
525 description: Required. A pod affinity term, associated with the corresponding weight.
526 properties:
527 labelSelector:
528 type: object
529 description: A label query over a set of resources, in this case pods.
530 properties:
531 matchExpressions:
532 type: array
533 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
534 items:
535 type: object
536 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
537 properties:
538 key:
539 type: string
540 description: key is the label key that the selector applies to.
541 operator:
542 type: string
543 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
544 values:
545 type: array
546 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.
547 items:
548 type: string
549 required:
550 - key
551 - operator
552 matchLabels:
553 type: object
554 additionalProperties:
555 type: string
556 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.
557 namespaceSelector:
558 type: object
559 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
560 properties:
561 matchExpressions:
562 type: array
563 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
564 items:
565 type: object
566 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
567 properties:
568 key:
569 type: string
570 description: key is the label key that the selector applies to.
571 operator:
572 type: string
573 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
574 values:
575 type: array
576 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.
577 items:
578 type: string
579 required:
580 - key
581 - operator
582 matchLabels:
583 type: object
584 additionalProperties:
585 type: string
586 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.
587 namespaces:
588 type: array
589 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
590 items:
591 type: string
592 topologyKey:
593 type: string
594 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
595 required:
596 - topologyKey
597 weight:
598 type: integer
599 description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
600 format: int32
601 required:
602 - podAffinityTerm
603 - weight
604 requiredDuringSchedulingIgnoredDuringExecution:
605 type: array
606 description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
607 items:
608 type: object
609 description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
610 properties:
611 labelSelector:
612 type: object
613 description: A label query over a set of resources, in this case pods.
614 properties:
615 matchExpressions:
616 type: array
617 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
618 items:
619 type: object
620 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
621 properties:
622 key:
623 type: string
624 description: key is the label key that the selector applies to.
625 operator:
626 type: string
627 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
628 values:
629 type: array
630 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.
631 items:
632 type: string
633 required:
634 - key
635 - operator
636 matchLabels:
637 type: object
638 additionalProperties:
639 type: string
640 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.
641 namespaceSelector:
642 type: object
643 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
644 properties:
645 matchExpressions:
646 type: array
647 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
648 items:
649 type: object
650 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
651 properties:
652 key:
653 type: string
654 description: key is the label key that the selector applies to.
655 operator:
656 type: string
657 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
658 values:
659 type: array
660 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.
661 items:
662 type: string
663 required:
664 - key
665 - operator
666 matchLabels:
667 type: object
668 additionalProperties:
669 type: string
670 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.
671 namespaces:
672 type: array
673 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
674 items:
675 type: string
676 topologyKey:
677 type: string
678 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
679 required:
680 - topologyKey
681 podAntiAffinity:
682 type: object
683 description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
684 properties:
685 preferredDuringSchedulingIgnoredDuringExecution:
686 type: array
687 description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
688 items:
689 type: object
690 description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
691 properties:
692 podAffinityTerm:
693 type: object
694 description: Required. A pod affinity term, associated with the corresponding weight.
695 properties:
696 labelSelector:
697 type: object
698 description: A label query over a set of resources, in this case pods.
699 properties:
700 matchExpressions:
701 type: array
702 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
703 items:
704 type: object
705 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
706 properties:
707 key:
708 type: string
709 description: key is the label key that the selector applies to.
710 operator:
711 type: string
712 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
713 values:
714 type: array
715 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.
716 items:
717 type: string
718 required:
719 - key
720 - operator
721 matchLabels:
722 type: object
723 additionalProperties:
724 type: string
725 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.
726 namespaceSelector:
727 type: object
728 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
729 properties:
730 matchExpressions:
731 type: array
732 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
733 items:
734 type: object
735 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
736 properties:
737 key:
738 type: string
739 description: key is the label key that the selector applies to.
740 operator:
741 type: string
742 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
743 values:
744 type: array
745 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.
746 items:
747 type: string
748 required:
749 - key
750 - operator
751 matchLabels:
752 type: object
753 additionalProperties:
754 type: string
755 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.
756 namespaces:
757 type: array
758 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
759 items:
760 type: string
761 topologyKey:
762 type: string
763 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
764 required:
765 - topologyKey
766 weight:
767 type: integer
768 description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
769 format: int32
770 required:
771 - podAffinityTerm
772 - weight
773 requiredDuringSchedulingIgnoredDuringExecution:
774 type: array
775 description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
776 items:
777 type: object
778 description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
779 properties:
780 labelSelector:
781 type: object
782 description: A label query over a set of resources, in this case pods.
783 properties:
784 matchExpressions:
785 type: array
786 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
787 items:
788 type: object
789 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
790 properties:
791 key:
792 type: string
793 description: key is the label key that the selector applies to.
794 operator:
795 type: string
796 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
797 values:
798 type: array
799 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.
800 items:
801 type: string
802 required:
803 - key
804 - operator
805 matchLabels:
806 type: object
807 additionalProperties:
808 type: string
809 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.
810 namespaceSelector:
811 type: object
812 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
813 properties:
814 matchExpressions:
815 type: array
816 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
817 items:
818 type: object
819 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
820 properties:
821 key:
822 type: string
823 description: key is the label key that the selector applies to.
824 operator:
825 type: string
826 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
827 values:
828 type: array
829 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.
830 items:
831 type: string
832 required:
833 - key
834 - operator
835 matchLabels:
836 type: object
837 additionalProperties:
838 type: string
839 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.
840 namespaces:
841 type: array
842 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
843 items:
844 type: string
845 topologyKey:
846 type: string
847 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
848 required:
849 - topologyKey
850 tolerations:
851 type: array
852 description: If toleration is specified, obey all the toleration rules.
853 items:
854 type: object
855 description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
856 properties:
857 value:
858 type: string
859 description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
860 effect:
861 type: string
862 description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
863 key:
864 type: string
865 description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
866 operator:
867 type: string
868 description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
869 tolerationSeconds:
870 type: integer
871 description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
872 format: int64
873 dnsConfig:
874 type: object
875 description: Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.
876 properties:
877 nameservers:
878 type: array
879 description: A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.
880 items:
881 type: string
882 options:
883 type: array
884 description: A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.
885 items:
886 type: object
887 description: PodDNSConfigOption defines DNS resolver options of a pod.
888 properties:
889 name:
890 type: string
891 description: Required.
892 value:
893 type: string
894 searches:
895 type: array
896 description: A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.
897 items:
898 type: string
899 livenessProbe:
900 type: object
901 description: 'Periodic probe of VirtualMachineInstance liveness. VirtualmachineInstances will be stopped if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
902 properties:
903 exec:
904 type: object
905 description: One and only one of the following should be specified. Exec specifies the action to take, it will be executed on the guest through the qemu-guest-agent. If the guest agent is not available, this probe will fail.
906 properties:
907 command:
908 type: array
909 description: 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.
910 items:
911 type: string
912 failureThreshold:
913 type: integer
914 description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
915 format: int32
916 guestAgentPing:
917 type: object
918 description: GuestAgentPing contacts the qemu-guest-agent for availability checks.
919 httpGet:
920 type: object
921 description: HTTPGet specifies the http request to perform.
922 properties:
923 port:
924 anyOf:
925 - type: integer
926 - type: string
927 description: 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.
928 x-kubernetes-int-or-string: true
929 host:
930 type: string
931 description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
932 httpHeaders:
933 type: array
934 description: Custom headers to set in the request. HTTP allows repeated headers.
935 items:
936 type: object
937 description: HTTPHeader describes a custom header to be used in HTTP probes
938 properties:
939 name:
940 type: string
941 description: The header field name
942 value:
943 type: string
944 description: The header field value
945 required:
946 - name
947 - value
948 path:
949 type: string
950 description: Path to access on the HTTP server.
951 scheme:
952 type: string
953 description: Scheme to use for connecting to the host. Defaults to HTTP.
954 required:
955 - port
956 initialDelaySeconds:
957 type: integer
958 description: 'Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
959 format: int32
960 periodSeconds:
961 type: integer
962 description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
963 format: int32
964 successThreshold:
965 type: integer
966 description: 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.
967 format: int32
968 tcpSocket:
969 type: object
970 description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
971 properties:
972 port:
973 anyOf:
974 - type: integer
975 - type: string
976 description: 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.
977 x-kubernetes-int-or-string: true
978 host:
979 type: string
980 description: 'Optional: Host name to connect to, defaults to the pod IP.'
981 required:
982 - port
983 timeoutSeconds:
984 type: integer
985 description: 'Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
986 format: int32
987 readinessProbe:
988 type: object
989 description: 'Periodic probe of VirtualMachineInstance service readiness. VirtualmachineInstances will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
990 properties:
991 exec:
992 type: object
993 description: One and only one of the following should be specified. Exec specifies the action to take, it will be executed on the guest through the qemu-guest-agent. If the guest agent is not available, this probe will fail.
994 properties:
995 command:
996 type: array
997 description: 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.
998 items:
999 type: string
1000 failureThreshold:
1001 type: integer
1002 description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
1003 format: int32
1004 guestAgentPing:
1005 type: object
1006 description: GuestAgentPing contacts the qemu-guest-agent for availability checks.
1007 httpGet:
1008 type: object
1009 description: HTTPGet specifies the http request to perform.
1010 properties:
1011 port:
1012 anyOf:
1013 - type: integer
1014 - type: string
1015 description: 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.
1016 x-kubernetes-int-or-string: true
1017 host:
1018 type: string
1019 description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
1020 httpHeaders:
1021 type: array
1022 description: Custom headers to set in the request. HTTP allows repeated headers.
1023 items:
1024 type: object
1025 description: HTTPHeader describes a custom header to be used in HTTP probes
1026 properties:
1027 name:
1028 type: string
1029 description: The header field name
1030 value:
1031 type: string
1032 description: The header field value
1033 required:
1034 - name
1035 - value
1036 path:
1037 type: string
1038 description: Path to access on the HTTP server.
1039 scheme:
1040 type: string
1041 description: Scheme to use for connecting to the host. Defaults to HTTP.
1042 required:
1043 - port
1044 initialDelaySeconds:
1045 type: integer
1046 description: 'Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
1047 format: int32
1048 periodSeconds:
1049 type: integer
1050 description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
1051 format: int32
1052 successThreshold:
1053 type: integer
1054 description: 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.
1055 format: int32
1056 tcpSocket:
1057 type: object
1058 description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
1059 properties:
1060 port:
1061 anyOf:
1062 - type: integer
1063 - type: string
1064 description: 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.
1065 x-kubernetes-int-or-string: true
1066 host:
1067 type: string
1068 description: 'Optional: Host name to connect to, defaults to the pod IP.'
1069 required:
1070 - port
1071 timeoutSeconds:
1072 type: integer
1073 description: 'Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
1074 format: int32
1075 accessCredentials:
1076 type: array
1077 description: Specifies a set of public keys to inject into the vm guest
1078 items:
1079 type: object
1080 description: AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.
1081 properties:
1082 sshPublicKey:
1083 type: object
1084 description: SSHPublicKey represents the source and method of applying a ssh public key into a guest virtual machine.
1085 properties:
1086 propagationMethod:
1087 type: object
1088 description: PropagationMethod represents how the public key is injected into the vm guest.
1089 properties:
1090 configDrive:
1091 type: object
1092 description: ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider
1093 noCloud:
1094 type: object
1095 description: NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider
1096 qemuGuestAgent:
1097 type: object
1098 description: QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.
1099 properties:
1100 users:
1101 type: array
1102 description: Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.
1103 items:
1104 type: string
1105 x-kubernetes-list-type: set
1106 required:
1107 - users
1108 source:
1109 type: object
1110 description: Source represents where the public keys are pulled from
1111 properties:
1112 secret:
1113 type: object
1114 description: Secret means that the access credential is pulled from a kubernetes secret
1115 properties:
1116 secretName:
1117 type: string
1118 description: SecretName represents the name of the secret in the VMI's namespace
1119 required:
1120 - secretName
1121 required:
1122 - propagationMethod
1123 - source
1124 userPassword:
1125 type: object
1126 description: UserPassword represents the source and method for applying a guest user's password
1127 properties:
1128 propagationMethod:
1129 type: object
1130 description: propagationMethod represents how the user passwords are injected into the vm guest.
1131 properties:
1132 qemuGuestAgent:
1133 type: object
1134 description: QemuGuestAgentAccessCredentailPropagation means passwords are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.
1135 source:
1136 type: object
1137 description: Source represents where the user passwords are pulled from
1138 properties:
1139 secret:
1140 type: object
1141 description: Secret means that the access credential is pulled from a kubernetes secret
1142 properties:
1143 secretName:
1144 type: string
1145 description: SecretName represents the name of the secret in the VMI's namespace
1146 required:
1147 - secretName
1148 required:
1149 - propagationMethod
1150 - source
1151 x-kubernetes-list-type: atomic
1152 architecture:
1153 type: string
1154 description: Specifies the architecture of the vm guest you are attempting to run. Defaults to the compiled architecture of the KubeVirt components
1155 domain:
1156 type: object
1157 description: Specification of the desired behavior of the VirtualMachineInstance on the host.
1158 properties:
1159 resources:
1160 type: object
1161 description: Resources describes the Compute Resources required by this vmi.
1162 properties:
1163 limits:
1164 type: object
1165 additionalProperties:
1166 anyOf:
1167 - type: integer
1168 - type: string
1169 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1170 x-kubernetes-int-or-string: true
1171 description: Limits describes the maximum amount of compute resources allowed. Valid resource keys are "memory" and "cpu".
1172 overcommitGuestOverhead:
1173 type: boolean
1174 description: Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.
1175 requests:
1176 type: object
1177 additionalProperties:
1178 anyOf:
1179 - type: integer
1180 - type: string
1181 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1182 x-kubernetes-int-or-string: true
1183 description: Requests is a description of the initial vmi resources. Valid resource keys are "memory" and "cpu".
1184 chassis:
1185 type: object
1186 description: Chassis specifies the chassis info passed to the domain.
1187 properties:
1188 asset:
1189 type: string
1190 manufacturer:
1191 type: string
1192 serial:
1193 type: string
1194 sku:
1195 type: string
1196 version:
1197 type: string
1198 clock:
1199 type: object
1200 description: Clock sets the clock and timers of the vmi.
1201 properties:
1202 timer:
1203 type: object
1204 description: Timer specifies whih timers are attached to the vmi.
1205 properties:
1206 hpet:
1207 type: object
1208 description: HPET (High Precision Event Timer) - multiple timers with periodic interrupts.
1209 properties:
1210 present:
1211 type: boolean
1212 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
1213 tickPolicy:
1214 type: string
1215 description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "merge", "discard".
1216 hyperv:
1217 type: object
1218 description: Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.
1219 properties:
1220 present:
1221 type: boolean
1222 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
1223 kvm:
1224 type: object
1225 description: "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests."
1226 properties:
1227 present:
1228 type: boolean
1229 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
1230 pit:
1231 type: object
1232 description: PIT (Programmable Interval Timer) - a timer with periodic interrupts.
1233 properties:
1234 present:
1235 type: boolean
1236 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
1237 tickPolicy:
1238 type: string
1239 description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "discard".
1240 rtc:
1241 type: object
1242 description: RTC (Real Time Clock) - a continuously running timer with periodic interrupts.
1243 properties:
1244 present:
1245 type: boolean
1246 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
1247 tickPolicy:
1248 type: string
1249 description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup".
1250 track:
1251 type: string
1252 description: Track the guest or the wall clock.
1253 timezone:
1254 type: string
1255 description: Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').
1256 utc:
1257 type: object
1258 description: UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.
1259 properties:
1260 offsetSeconds:
1261 type: integer
1262 description: OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.
1263 cpu:
1264 type: object
1265 description: CPU allow specified the detailed CPU topology inside the vmi.
1266 properties:
1267 cores:
1268 type: integer
1269 description: Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.
1270 format: int32
1271 dedicatedCpuPlacement:
1272 type: boolean
1273 description: DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.
1274 features:
1275 type: array
1276 description: Features specifies the CPU features list inside the VMI.
1277 items:
1278 type: object
1279 description: CPUFeature allows specifying a CPU feature.
1280 properties:
1281 name:
1282 type: string
1283 description: Name of the CPU feature
1284 policy:
1285 type: string
1286 description: 'Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require'
1287 required:
1288 - name
1289 isolateEmulatorThread:
1290 type: boolean
1291 description: IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.
1292 maxSockets:
1293 type: integer
1294 description: MaxSockets specifies the maximum amount of sockets that can be hotplugged
1295 format: int32
1296 model:
1297 type: string
1298 description: Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like "host-passthrough" to get the same CPU as the node and "host-model" to get CPU closest to the node one. Defaults to host-model.
1299 numa:
1300 type: object
1301 description: NUMA allows specifying settings for the guest NUMA topology
1302 properties:
1303 guestMappingPassthrough:
1304 type: object
1305 description: GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.
1306 realtime:
1307 type: object
1308 description: Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads
1309 properties:
1310 mask:
1311 type: string
1312 description: 'Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt''s expressions. Example: "0-3,^1","0,2,3","2-3"'
1313 sockets:
1314 type: integer
1315 description: Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.
1316 format: int32
1317 threads:
1318 type: integer
1319 description: Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.
1320 format: int32
1321 devices:
1322 type: object
1323 description: Devices allows adding disks, network interfaces, and others
1324 properties:
1325 autoattachGraphicsDevice:
1326 type: boolean
1327 description: Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.
1328 autoattachInputDevice:
1329 type: boolean
1330 description: Whether to attach an Input Device. Defaults to false.
1331 autoattachMemBalloon:
1332 type: boolean
1333 description: Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.
1334 autoattachPodInterface:
1335 type: boolean
1336 description: Whether to attach a pod network interface. Defaults to true.
1337 autoattachSerialConsole:
1338 type: boolean
1339 description: Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.
1340 autoattachVSOCK:
1341 type: boolean
1342 description: Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.
1343 blockMultiQueue:
1344 type: boolean
1345 description: Whether or not to enable virtio multi-queue for block devices. Defaults to false.
1346 clientPassthrough:
1347 type: object
1348 description: To configure and access client devices such as redirecting USB
1349 disableHotplug:
1350 type: boolean
1351 description: DisableHotplug disabled the ability to hotplug disks.
1352 disks:
1353 type: array
1354 description: Disks describes disks, cdroms and luns which are connected to the vmi.
1355 items:
1356 type: object
1357 properties:
1358 name:
1359 type: string
1360 description: Name is the device name
1361 blockSize:
1362 type: object
1363 description: If specified, the virtual disk will be presented with the given block sizes.
1364 properties:
1365 custom:
1366 type: object
1367 description: CustomBlockSize represents the desired logical and physical block size for a VM disk.
1368 properties:
1369 logical:
1370 type: integer
1371 physical:
1372 type: integer
1373 required:
1374 - logical
1375 - physical
1376 matchVolume:
1377 type: object
1378 description: Represents if a feature is enabled or disabled.
1379 properties:
1380 enabled:
1381 type: boolean
1382 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1383 bootOrder:
1384 type: integer
1385 description: BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.
1386 cache:
1387 type: string
1388 description: 'Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.'
1389 cdrom:
1390 type: object
1391 description: Attach a volume as a cdrom to the vmi.
1392 properties:
1393 bus:
1394 type: string
1395 description: 'Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.'
1396 readonly:
1397 type: boolean
1398 description: ReadOnly. Defaults to true.
1399 tray:
1400 type: string
1401 description: Tray indicates if the tray of the device is open or closed. Allowed values are "open" and "closed". Defaults to closed.
1402 dedicatedIOThread:
1403 type: boolean
1404 description: dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.
1405 disk:
1406 type: object
1407 description: Attach a volume as a disk to the vmi.
1408 properties:
1409 bus:
1410 type: string
1411 description: 'Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.'
1412 pciAddress:
1413 type: string
1414 description: 'If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10'
1415 readonly:
1416 type: boolean
1417 description: ReadOnly. Defaults to false.
1418 errorPolicy:
1419 type: string
1420 description: If specified, it can change the default error policy (stop) for the disk
1421 io:
1422 type: string
1423 description: 'IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.'
1424 lun:
1425 type: object
1426 description: Attach a volume as a LUN to the vmi.
1427 properties:
1428 bus:
1429 type: string
1430 description: 'Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.'
1431 readonly:
1432 type: boolean
1433 description: ReadOnly. Defaults to false.
1434 reservation:
1435 type: boolean
1436 description: Reservation indicates if the disk needs to support the persistent reservation for the SCSI disk
1437 serial:
1438 type: string
1439 description: Serial provides the ability to specify a serial number for the disk device.
1440 shareable:
1441 type: boolean
1442 description: If specified the disk is made sharable and multiple write from different VMs are permitted
1443 tag:
1444 type: string
1445 description: If specified, disk address and its tag will be provided to the guest via config drive metadata
1446 required:
1447 - name
1448 downwardMetrics:
1449 type: object
1450 description: DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.
1451 filesystems:
1452 type: array
1453 description: Filesystems describes filesystem which is connected to the vmi.
1454 items:
1455 type: object
1456 properties:
1457 name:
1458 type: string
1459 description: Name is the device name
1460 virtiofs:
1461 type: object
1462 description: Virtiofs is supported
1463 required:
1464 - name
1465 - virtiofs
1466 x-kubernetes-list-type: atomic
1467 gpus:
1468 type: array
1469 description: Whether to attach a GPU device to the vmi.
1470 items:
1471 type: object
1472 properties:
1473 name:
1474 type: string
1475 description: Name of the GPU device as exposed by a device plugin
1476 deviceName:
1477 type: string
1478 tag:
1479 type: string
1480 description: If specified, the virtual network interface address and its tag will be provided to the guest via config drive
1481 virtualGPUOptions:
1482 type: object
1483 properties:
1484 display:
1485 type: object
1486 properties:
1487 enabled:
1488 type: boolean
1489 description: Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.
1490 ramFB:
1491 type: object
1492 description: Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.
1493 properties:
1494 enabled:
1495 type: boolean
1496 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1497 required:
1498 - deviceName
1499 - name
1500 x-kubernetes-list-type: atomic
1501 hostDevices:
1502 type: array
1503 description: Whether to attach a host device to the vmi.
1504 items:
1505 type: object
1506 properties:
1507 name:
1508 type: string
1509 deviceName:
1510 type: string
1511 description: DeviceName is the resource name of the host device exposed by a device plugin
1512 tag:
1513 type: string
1514 description: If specified, the virtual network interface address and its tag will be provided to the guest via config drive
1515 required:
1516 - deviceName
1517 - name
1518 x-kubernetes-list-type: atomic
1519 inputs:
1520 type: array
1521 description: Inputs describe input devices
1522 items:
1523 type: object
1524 properties:
1525 name:
1526 type: string
1527 description: Name is the device name
1528 type:
1529 type: string
1530 description: 'Type indicated the type of input device. Supported values: tablet.'
1531 bus:
1532 type: string
1533 description: 'Bus indicates the bus of input device to emulate. Supported values: virtio, usb.'
1534 required:
1535 - name
1536 - type
1537 interfaces:
1538 type: array
1539 description: Interfaces describe network interfaces which are added to the vmi.
1540 items:
1541 type: object
1542 properties:
1543 name:
1544 type: string
1545 description: Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.
1546 ports:
1547 type: array
1548 description: List of ports to be forwarded to the virtual machine.
1549 items:
1550 type: object
1551 description: Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory
1552 properties:
1553 name:
1554 type: string
1555 description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
1556 protocol:
1557 type: string
1558 description: Protocol for port. Must be UDP or TCP. Defaults to "TCP".
1559 port:
1560 type: integer
1561 description: Number of port to expose for the virtual machine. This must be a valid port number, 0 < x < 65536.
1562 format: int32
1563 required:
1564 - port
1565 acpiIndex:
1566 type: integer
1567 description: If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).
1568 binding:
1569 type: object
1570 description: 'Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1'
1571 properties:
1572 name:
1573 type: string
1574 description: 'Name references to the binding name as denined in the kubevirt CR. version: 1alphav1'
1575 required:
1576 - name
1577 bootOrder:
1578 type: integer
1579 description: BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.
1580 bridge:
1581 type: object
1582 description: InterfaceBridge connects to a given network via a linux bridge.
1583 dhcpOptions:
1584 type: object
1585 description: If specified the network interface will pass additional DHCP options to the VMI
1586 properties:
1587 bootFileName:
1588 type: string
1589 description: If specified will pass option 67 to interface's DHCP server
1590 ntpServers:
1591 type: array
1592 description: If specified will pass the configured NTP server to the VM via DHCP option 042.
1593 items:
1594 type: string
1595 privateOptions:
1596 type: array
1597 description: 'If specified will pass extra DHCP options for private use, range: 224-254'
1598 items:
1599 type: object
1600 description: DHCPExtraOptions defines Extra DHCP options for a VM.
1601 properties:
1602 value:
1603 type: string
1604 description: Value is a String value for the Option provided Required.
1605 option:
1606 type: integer
1607 description: Option is an Integer value from 224-254 Required.
1608 required:
1609 - option
1610 - value
1611 tftpServerName:
1612 type: string
1613 description: If specified will pass option 66 to interface's DHCP server
1614 macAddress:
1615 type: string
1616 description: 'Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.'
1617 macvtap:
1618 type: object
1619 description: InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.
1620 masquerade:
1621 type: object
1622 description: InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.
1623 model:
1624 type: string
1625 description: 'Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio. TODO:(ihar) switch to enums once opengen-api supports them. See: https://github.com/kubernetes/kube-openapi/issues/51'
1626 passt:
1627 type: object
1628 description: InterfacePasst connects to a given network.
1629 pciAddress:
1630 type: string
1631 description: 'If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10'
1632 slirp:
1633 type: object
1634 description: InterfaceSlirp connects to a given network using QEMU user networking mode.
1635 sriov:
1636 type: object
1637 description: InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.
1638 state:
1639 type: string
1640 description: State represents the requested operational state of the interface. The (only) value supported is 'absent', expressing a request to remove the interface.
1641 tag:
1642 type: string
1643 description: If specified, the virtual network interface address and its tag will be provided to the guest via config drive
1644 required:
1645 - name
1646 logSerialConsole:
1647 type: boolean
1648 description: Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.
1649 networkInterfaceMultiqueue:
1650 type: boolean
1651 description: If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.
1652 rng:
1653 type: object
1654 description: Whether to have random number generator from host
1655 sound:
1656 type: object
1657 description: Whether to emulate a sound device.
1658 properties:
1659 name:
1660 type: string
1661 description: User's defined name for this sound device
1662 model:
1663 type: string
1664 description: 'We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9'
1665 required:
1666 - name
1667 tpm:
1668 type: object
1669 description: Whether to emulate a TPM device.
1670 properties:
1671 persistent:
1672 type: boolean
1673 description: Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false
1674 useVirtioTransitional:
1675 type: boolean
1676 description: Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).
1677 watchdog:
1678 type: object
1679 description: Watchdog describes a watchdog device which can be added to the vmi.
1680 properties:
1681 name:
1682 type: string
1683 description: Name of the watchdog.
1684 i6300esb:
1685 type: object
1686 description: i6300esb watchdog device.
1687 properties:
1688 action:
1689 type: string
1690 description: The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.
1691 required:
1692 - name
1693 features:
1694 type: object
1695 description: Features like acpi, apic, hyperv, smm.
1696 properties:
1697 acpi:
1698 type: object
1699 description: ACPI enables/disables ACPI inside the guest. Defaults to enabled.
1700 properties:
1701 enabled:
1702 type: boolean
1703 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1704 apic:
1705 type: object
1706 description: Defaults to the machine type setting.
1707 properties:
1708 enabled:
1709 type: boolean
1710 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1711 endOfInterrupt:
1712 type: boolean
1713 description: EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.
1714 hyperv:
1715 type: object
1716 description: Defaults to the machine type setting.
1717 properties:
1718 evmcs:
1719 type: object
1720 description: EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.
1721 properties:
1722 enabled:
1723 type: boolean
1724 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1725 frequencies:
1726 type: object
1727 description: Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.
1728 properties:
1729 enabled:
1730 type: boolean
1731 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1732 ipi:
1733 type: object
1734 description: IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
1735 properties:
1736 enabled:
1737 type: boolean
1738 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1739 reenlightenment:
1740 type: object
1741 description: Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.
1742 properties:
1743 enabled:
1744 type: boolean
1745 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1746 relaxed:
1747 type: object
1748 description: Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.
1749 properties:
1750 enabled:
1751 type: boolean
1752 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1753 reset:
1754 type: object
1755 description: Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.
1756 properties:
1757 enabled:
1758 type: boolean
1759 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1760 runtime:
1761 type: object
1762 description: Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.
1763 properties:
1764 enabled:
1765 type: boolean
1766 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1767 spinlocks:
1768 type: object
1769 description: Spinlocks allows to configure the spinlock retry attempts.
1770 properties:
1771 enabled:
1772 type: boolean
1773 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1774 spinlocks:
1775 type: integer
1776 description: Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.
1777 format: int32
1778 synic:
1779 type: object
1780 description: SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.
1781 properties:
1782 enabled:
1783 type: boolean
1784 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1785 synictimer:
1786 type: object
1787 description: SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.
1788 properties:
1789 direct:
1790 type: object
1791 description: Represents if a feature is enabled or disabled.
1792 properties:
1793 enabled:
1794 type: boolean
1795 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1796 enabled:
1797 type: boolean
1798 tlbflush:
1799 type: object
1800 description: TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
1801 properties:
1802 enabled:
1803 type: boolean
1804 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1805 vapic:
1806 type: object
1807 description: VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.
1808 properties:
1809 enabled:
1810 type: boolean
1811 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1812 vendorid:
1813 type: object
1814 description: VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.
1815 properties:
1816 enabled:
1817 type: boolean
1818 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1819 vendorid:
1820 type: string
1821 description: VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.
1822 vpindex:
1823 type: object
1824 description: VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.
1825 properties:
1826 enabled:
1827 type: boolean
1828 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1829 kvm:
1830 type: object
1831 description: Configure how KVM presence is exposed to the guest.
1832 properties:
1833 hidden:
1834 type: boolean
1835 description: Hide the KVM hypervisor from standard MSR based discovery. Defaults to false
1836 pvspinlock:
1837 type: object
1838 description: Notify the guest that the host supports paravirtual spinlocks. For older kernels this feature should be explicitly disabled.
1839 properties:
1840 enabled:
1841 type: boolean
1842 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1843 smm:
1844 type: object
1845 description: SMM enables/disables System Management Mode. TSEG not yet implemented.
1846 properties:
1847 enabled:
1848 type: boolean
1849 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
1850 firmware:
1851 type: object
1852 description: Firmware.
1853 properties:
1854 bootloader:
1855 type: object
1856 description: Settings to control the bootloader that is used.
1857 properties:
1858 bios:
1859 type: object
1860 description: If set (default), BIOS will be used.
1861 properties:
1862 useSerial:
1863 type: boolean
1864 description: If set, the BIOS output will be transmitted over serial
1865 efi:
1866 type: object
1867 description: If set, EFI will be used instead of BIOS.
1868 properties:
1869 persistent:
1870 type: boolean
1871 description: If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false
1872 secureBoot:
1873 type: boolean
1874 description: If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true
1875 kernelBoot:
1876 type: object
1877 description: Settings to set the kernel for booting.
1878 properties:
1879 container:
1880 type: object
1881 description: Container defines the container that containes kernel artifacts
1882 properties:
1883 image:
1884 type: string
1885 description: Image that contains initrd / kernel files.
1886 imagePullPolicy:
1887 type: string
1888 description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
1889 imagePullSecret:
1890 type: string
1891 description: ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.
1892 initrdPath:
1893 type: string
1894 description: the fully-qualified path to the ramdisk image in the host OS
1895 kernelPath:
1896 type: string
1897 description: The fully-qualified path to the kernel image in the host OS
1898 required:
1899 - image
1900 kernelArgs:
1901 type: string
1902 description: Arguments to be passed to the kernel at boot time
1903 serial:
1904 type: string
1905 description: The system-serial-number in SMBIOS
1906 uuid:
1907 type: string
1908 description: UUID reported by the vmi bios. Defaults to a random generated uid.
1909 ioThreadsPolicy:
1910 type: string
1911 description: 'Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto'
1912 launchSecurity:
1913 type: object
1914 description: Launch Security setting of the vmi.
1915 properties:
1916 sev:
1917 type: object
1918 description: AMD Secure Encrypted Virtualization (SEV).
1919 properties:
1920 attestation:
1921 type: object
1922 description: If specified, run the attestation process for a vmi.
1923 dhCert:
1924 type: string
1925 description: Base64 encoded guest owner's Diffie-Hellman key.
1926 policy:
1927 type: object
1928 description: 'Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.'
1929 properties:
1930 encryptedState:
1931 type: boolean
1932 description: SEV-ES is required. Defaults to false.
1933 session:
1934 type: string
1935 description: Base64 encoded session blob.
1936 machine:
1937 type: object
1938 description: Machine type.
1939 properties:
1940 type:
1941 type: string
1942 description: QEMU machine type is the actual chipset of the VirtualMachineInstance.
1943 memory:
1944 type: object
1945 description: Memory allow specifying the VMI memory features.
1946 properties:
1947 guest:
1948 anyOf:
1949 - type: integer
1950 - type: string
1951 description: Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.
1952 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1953 x-kubernetes-int-or-string: true
1954 hugepages:
1955 type: object
1956 description: Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.
1957 properties:
1958 pageSize:
1959 type: string
1960 description: PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.
1961 maxGuest:
1962 anyOf:
1963 - type: integer
1964 - type: string
1965 description: MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.
1966 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1967 x-kubernetes-int-or-string: true
1968 required:
1969 - devices
1970 evictionStrategy:
1971 type: string
1972 description: EvictionStrategy can be set to "LiveMigrate" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.
1973 networks:
1974 type: array
1975 description: List of networks that can be attached to a vm's virtual interface.
1976 items:
1977 type: object
1978 description: Network represents a network type and a resource that should be connected to the vm.
1979 properties:
1980 name:
1981 type: string
1982 description: 'Network name. Must be a DNS_LABEL and unique within the vm. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
1983 multus:
1984 type: object
1985 description: Represents the multus cni network.
1986 properties:
1987 default:
1988 type: boolean
1989 description: Select the default network and add it to the multus-cni.io/default-network annotation.
1990 networkName:
1991 type: string
1992 description: 'References to a NetworkAttachmentDefinition CRD object. Format: <networkName>, <namespace>/<networkName>. If namespace is not specified, VMI namespace is assumed.'
1993 required:
1994 - networkName
1995 pod:
1996 type: object
1997 description: Represents the stock pod network interface.
1998 properties:
1999 vmIPv6NetworkCIDR:
2000 type: string
2001 description: IPv6 CIDR for the vm network. Defaults to fd10:0:2::/120 if not specified.
2002 vmNetworkCIDR:
2003 type: string
2004 description: CIDR for vm network. Default 10.0.2.0/24 if not specified.
2005 required:
2006 - name
2007 startStrategy:
2008 type: string
2009 description: StartStrategy can be set to "Paused" if Virtual Machine should be started in paused state.
2010 topologySpreadConstraints:
2011 type: array
2012 description: TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.
2013 items:
2014 type: object
2015 description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.
2016 properties:
2017 labelSelector:
2018 type: object
2019 description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
2020 properties:
2021 matchExpressions:
2022 type: array
2023 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
2024 items:
2025 type: object
2026 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
2027 properties:
2028 key:
2029 type: string
2030 description: key is the label key that the selector applies to.
2031 operator:
2032 type: string
2033 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
2034 values:
2035 type: array
2036 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.
2037 items:
2038 type: string
2039 required:
2040 - key
2041 - operator
2042 matchLabels:
2043 type: object
2044 additionalProperties:
2045 type: string
2046 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.
2047 matchLabelKeys:
2048 type: array
2049 description: MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.
2050 items:
2051 type: string
2052 x-kubernetes-list-type: atomic
2053 maxSkew:
2054 type: integer
2055 description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When ''whenUnsatisfiable=DoNotSchedule'', it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When ''whenUnsatisfiable=ScheduleAnyway'', it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'
2056 format: int32
2057 minDomains:
2058 type: integer
2059 description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."
2060 format: int32
2061 nodeAffinityPolicy:
2062 type: string
2063 description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."
2064 nodeTaintsPolicy:
2065 type: string
2066 description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."
2067 topologyKey:
2068 type: string
2069 description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.
2070 whenUnsatisfiable:
2071 type: string
2072 description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'
2073 required:
2074 - maxSkew
2075 - topologyKey
2076 - whenUnsatisfiable
2077 x-kubernetes-list-map-keys:
2078 - topologyKey
2079 - whenUnsatisfiable
2080 x-kubernetes-list-type: map
2081 required:
2082 - domain
2083 status:
2084 type: object
2085 description: Status is the high level overview of how the VirtualMachineInstance is doing. It contains information available to controllers and users.
2086 properties:
2087 nodeName:
2088 type: string
2089 description: NodeName is the name where the VirtualMachineInstance is currently running.
2090 VSOCKCID:
2091 type: integer
2092 description: VSOCKCID is used to track the allocated VSOCK CID in the VM.
2093 format: int32
2094 activePods:
2095 type: object
2096 additionalProperties:
2097 type: string
2098 description: ActivePods is a mapping of pod UID to node name. It is possible for multiple pods to be running for a single VMI during migration.
2099 conditions:
2100 type: array
2101 description: Conditions are specific points in VirtualMachineInstance's pod runtime.
2102 items:
2103 type: object
2104 properties:
2105 type:
2106 type: string
2107 status:
2108 type: string
2109 lastProbeTime:
2110 type: string
2111 format: date-time
2112 nullable: true
2113 lastTransitionTime:
2114 type: string
2115 format: date-time
2116 nullable: true
2117 message:
2118 type: string
2119 reason:
2120 type: string
2121 required:
2122 - status
2123 - type
2124 currentCPUTopology:
2125 type: object
2126 description: CurrentCPUTopology specifies the current CPU topology used by the VM workload. Current topology may differ from the desired topology in the spec while CPU hotplug takes place.
2127 properties:
2128 cores:
2129 type: integer
2130 description: Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.
2131 format: int32
2132 sockets:
2133 type: integer
2134 description: Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.
2135 format: int32
2136 threads:
2137 type: integer
2138 description: Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.
2139 format: int32
2140 evacuationNodeName:
2141 type: string
2142 description: EvacuationNodeName is used to track the eviction process of a VMI. It stores the name of the node that we want to evacuate. It is meant to be used by KubeVirt core components only and can't be set or modified by users.
2143 fsFreezeStatus:
2144 type: string
2145 description: FSFreezeStatus is the state of the fs of the guest it can be either frozen or thawed
2146 guestOSInfo:
2147 type: object
2148 description: Guest OS Information
2149 properties:
2150 name:
2151 type: string
2152 description: Name of the Guest OS
2153 id:
2154 type: string
2155 description: Guest OS Id
2156 kernelRelease:
2157 type: string
2158 description: Guest OS Kernel Release
2159 kernelVersion:
2160 type: string
2161 description: Kernel version of the Guest OS
2162 machine:
2163 type: string
2164 description: Machine type of the Guest OS
2165 prettyName:
2166 type: string
2167 description: Guest OS Pretty Name
2168 version:
2169 type: string
2170 description: Guest OS Version
2171 versionId:
2172 type: string
2173 description: Version ID of the Guest OS
2174 interfaces:
2175 type: array
2176 description: Interfaces represent the details of available network interfaces.
2177 items:
2178 type: object
2179 properties:
2180 name:
2181 type: string
2182 description: Name of the interface, corresponds to name of the network assigned to the interface
2183 infoSource:
2184 type: string
2185 description: 'Specifies the origin of the interface data collected. values: domain, guest-agent, multus-status.'
2186 interfaceName:
2187 type: string
2188 description: The interface name inside the Virtual Machine
2189 ipAddress:
2190 type: string
2191 description: IP address of a Virtual Machine interface. It is always the first item of IPs
2192 ipAddresses:
2193 type: array
2194 description: List of all IP addresses of a Virtual Machine interface
2195 items:
2196 type: string
2197 mac:
2198 type: string
2199 description: Hardware address of a Virtual Machine interface
2200 queueCount:
2201 type: integer
2202 description: Specifies how many queues are allocated by MultiQueue
2203 format: int32
2204 launcherContainerImageVersion:
2205 type: string
2206 description: LauncherContainerImageVersion indicates what container image is currently active for the vmi.
2207 machine:
2208 type: object
2209 description: Machine shows the final resulting qemu machine type. This can be different than the machine type selected in the spec, due to qemus machine type alias mechanism.
2210 properties:
2211 type:
2212 type: string
2213 description: QEMU machine type is the actual chipset of the VirtualMachineInstance.
2214 memory:
2215 type: object
2216 description: Memory shows various informations about the VirtualMachine memory.
2217 properties:
2218 guestAtBoot:
2219 anyOf:
2220 - type: integer
2221 - type: string
2222 description: GuestAtBoot specifies with how much memory the VirtualMachine intiallly booted with.
2223 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2224 x-kubernetes-int-or-string: true
2225 guestCurrent:
2226 anyOf:
2227 - type: integer
2228 - type: string
2229 description: GuestCurrent specifies how much memory is currently available for the VirtualMachine.
2230 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2231 x-kubernetes-int-or-string: true
2232 guestRequested:
2233 anyOf:
2234 - type: integer
2235 - type: string
2236 description: GuestRequested specifies how much memory was requested (hotplug) for the VirtualMachine.
2237 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2238 x-kubernetes-int-or-string: true
2239 migrationMethod:
2240 type: string
2241 description: 'Represents the method using which the vmi can be migrated: live migration or block migration'
2242 migrationState:
2243 type: object
2244 description: Represents the status of a live migration
2245 properties:
2246 abortRequested:
2247 type: boolean
2248 description: Indicates that the migration has been requested to abort
2249 abortStatus:
2250 type: string
2251 description: Indicates the final status of the live migration abortion
2252 completed:
2253 type: boolean
2254 description: Indicates the migration completed
2255 endTimestamp:
2256 type: string
2257 description: The time the migration action ended
2258 format: date-time
2259 nullable: true
2260 failed:
2261 type: boolean
2262 description: Indicates that the migration failed
2263 migrationConfiguration:
2264 type: object
2265 description: Migration configurations to apply
2266 properties:
2267 allowAutoConverge:
2268 type: boolean
2269 description: AllowAutoConverge allows the platform to compromise performance/availability of VMIs to guarantee successful VMI live migrations. Defaults to false
2270 allowPostCopy:
2271 type: boolean
2272 description: AllowPostCopy enables post-copy live migrations. Such migrations allow even the busiest VMIs to successfully live-migrate. However, events like a network failure can cause a VMI crash. If set to true, migrations will still start in pre-copy, but switch to post-copy when CompletionTimeoutPerGiB triggers. Defaults to false
2273 bandwidthPerMigration:
2274 anyOf:
2275 - type: integer
2276 - type: string
2277 description: BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use. The value is in quantity per second. Defaults to 0 (no limit)
2278 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2279 x-kubernetes-int-or-string: true
2280 completionTimeoutPerGiB:
2281 type: integer
2282 description: CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take. If a live-migration takes longer to migrate than this value multiplied by the size of the VMI, the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800
2283 format: int64
2284 disableTLS:
2285 type: boolean
2286 description: When set to true, DisableTLS will disable the additional layer of live migration encryption provided by KubeVirt. This is usually a bad idea. Defaults to false
2287 matchSELinuxLevelOnMigration:
2288 type: boolean
2289 description: By default, the SELinux level of target virt-launcher pods is forced to the level of the source virt-launcher. When set to true, MatchSELinuxLevelOnMigration lets the CRI auto-assign a random level to the target. That will ensure the target virt-launcher doesn't share categories with another pod on the node. However, migrations will fail when using RWX volumes that don't automatically deal with SELinux levels.
2290 network:
2291 type: string
2292 description: Network is the name of the CNI network to use for live migrations. By default, migrations go through the pod network.
2293 nodeDrainTaintKey:
2294 type: string
2295 description: 'NodeDrainTaintKey defines the taint key that indicates a node should be drained. Note: this option relies on the deprecated node taint feature. Default: kubevirt.io/drain'
2296 parallelMigrationsPerCluster:
2297 type: integer
2298 description: ParallelMigrationsPerCluster is the total number of concurrent live migrations allowed cluster-wide. Defaults to 5
2299 format: int32
2300 parallelOutboundMigrationsPerNode:
2301 type: integer
2302 description: ParallelOutboundMigrationsPerNode is the maximum number of concurrent outgoing live migrations allowed per node. Defaults to 2
2303 format: int32
2304 progressTimeout:
2305 type: integer
2306 description: ProgressTimeout is the maximum number of seconds a live migration is allowed to make no progress. Hitting this timeout means a migration transferred 0 data for that many seconds. The migration is then considered stuck and therefore cancelled. Defaults to 150
2307 format: int64
2308 unsafeMigrationOverride:
2309 type: boolean
2310 description: UnsafeMigrationOverride allows live migrations to occur even if the compatibility check indicates the migration will be unsafe to the guest. Defaults to false
2311 migrationPolicyName:
2312 type: string
2313 description: Name of the migration policy. If string is empty, no policy is matched
2314 migrationUid:
2315 type: string
2316 description: The VirtualMachineInstanceMigration object associated with this migration
2317 mode:
2318 type: string
2319 description: Lets us know if the vmi is currently running pre or post copy migration
2320 sourceNode:
2321 type: string
2322 description: The source node that the VMI originated on
2323 startTimestamp:
2324 type: string
2325 description: The time the migration action began
2326 format: date-time
2327 nullable: true
2328 targetAttachmentPodUID:
2329 type: string
2330 description: The UID of the target attachment pod for hotplug volumes
2331 targetCPUSet:
2332 type: array
2333 description: If the VMI requires dedicated CPUs, this field will hold the dedicated CPU set on the target node
2334 items:
2335 type: integer
2336 x-kubernetes-list-type: atomic
2337 targetDirectMigrationNodePorts:
2338 type: object
2339 additionalProperties:
2340 type: integer
2341 description: The list of ports opened for live migration on the destination node
2342 targetNode:
2343 type: string
2344 description: The target node that the VMI is moving to
2345 targetNodeAddress:
2346 type: string
2347 description: The address of the target node to use for the migration
2348 targetNodeDomainDetected:
2349 type: boolean
2350 description: The Target Node has seen the Domain Start Event
2351 targetNodeDomainReadyTimestamp:
2352 type: string
2353 description: The timestamp at which the target node detects the domain is active
2354 format: date-time
2355 targetNodeTopology:
2356 type: string
2357 description: If the VMI requires dedicated CPUs, this field will hold the numa topology on the target node
2358 targetPod:
2359 type: string
2360 description: The target pod that the VMI is moving to
2361 migrationTransport:
2362 type: string
2363 description: This represents the migration transport
2364 phase:
2365 type: string
2366 description: Phase is the status of the VirtualMachineInstance in kubernetes world. It is not the VirtualMachineInstance status, but partially correlates to it.
2367 phaseTransitionTimestamps:
2368 type: array
2369 description: PhaseTransitionTimestamp is the timestamp of when the last phase change occurred
2370 items:
2371 type: object
2372 description: VirtualMachineInstancePhaseTransitionTimestamp gives a timestamp in relation to when a phase is set on a vmi
2373 properties:
2374 phase:
2375 type: string
2376 description: Phase is the status of the VirtualMachineInstance in kubernetes world. It is not the VirtualMachineInstance status, but partially correlates to it.
2377 phaseTransitionTimestamp:
2378 type: string
2379 description: PhaseTransitionTimestamp is the timestamp of when the phase change occurred
2380 format: date-time
2381 x-kubernetes-list-type: atomic
2382 qosClass:
2383 type: string
2384 description: 'The Quality of Service (QOS) classification assigned to the virtual machine instance based on resource requirements See PodQOSClass type for available QOS classes More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md'
2385 reason:
2386 type: string
2387 description: A brief CamelCase message indicating details about why the VMI is in this state. e.g. 'NodeUnresponsive'
2388 runtimeUser:
2389 type: integer
2390 description: RuntimeUser is used to determine what user will be used in launcher
2391 format: int64
2392 selinuxContext:
2393 type: string
2394 description: SELinuxContext is the actual SELinux context of the virt-launcher pod
2395 topologyHints:
2396 type: object
2397 properties:
2398 tscFrequency:
2399 type: integer
2400 format: int64
2401 virtualMachineRevisionName:
2402 type: string
2403 description: VirtualMachineRevisionName is used to get the vm revision of the vmi when doing an online vm snapshot
2404 volumeStatus:
2405 type: array
2406 description: VolumeStatus contains the statuses of all the volumes
2407 items:
2408 type: object
2409 description: VolumeStatus represents information about the status of volumes attached to the VirtualMachineInstance.
2410 properties:
2411 name:
2412 type: string
2413 description: Name is the name of the volume
2414 hotplugVolume:
2415 type: object
2416 description: If the volume is hotplug, this will contain the hotplug status.
2417 properties:
2418 attachPodName:
2419 type: string
2420 description: AttachPodName is the name of the pod used to attach the volume to the node.
2421 attachPodUID:
2422 type: string
2423 description: AttachPodUID is the UID of the pod used to attach the volume to the node.
2424 memoryDumpVolume:
2425 type: object
2426 description: If the volume is memorydump volume, this will contain the memorydump info.
2427 properties:
2428 claimName:
2429 type: string
2430 description: ClaimName is the name of the pvc the memory was dumped to
2431 endTimestamp:
2432 type: string
2433 description: EndTimestamp is the time when the memory dump completed
2434 format: date-time
2435 startTimestamp:
2436 type: string
2437 description: StartTimestamp is the time when the memory dump started
2438 format: date-time
2439 targetFileName:
2440 type: string
2441 description: TargetFileName is the name of the memory dump output
2442 message:
2443 type: string
2444 description: Message is a detailed message about the current hotplug volume phase
2445 persistentVolumeClaimInfo:
2446 type: object
2447 description: PersistentVolumeClaimInfo is information about the PVC that handler requires during start flow
2448 properties:
2449 accessModes:
2450 type: array
2451 description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
2452 items:
2453 type: string
2454 x-kubernetes-list-type: atomic
2455 capacity:
2456 type: object
2457 additionalProperties:
2458 anyOf:
2459 - type: integer
2460 - type: string
2461 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2462 x-kubernetes-int-or-string: true
2463 description: Capacity represents the capacity set on the corresponding PVC status
2464 filesystemOverhead:
2465 type: string
2466 description: Percentage of filesystem's size to be reserved when resizing the PVC
2467 pattern: ^(0(?:\.\d{1,3})?|1)$
2468 preallocated:
2469 type: boolean
2470 description: Preallocated indicates if the PVC's storage is preallocated or not
2471 requests:
2472 type: object
2473 additionalProperties:
2474 anyOf:
2475 - type: integer
2476 - type: string
2477 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2478 x-kubernetes-int-or-string: true
2479 description: Requests represents the resources requested by the corresponding PVC spec
2480 volumeMode:
2481 type: string
2482 description: VolumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
2483 phase:
2484 type: string
2485 description: Phase is the phase
2486 reason:
2487 type: string
2488 description: Reason is a brief description of why we are in the current hotplug volume phase
2489 size:
2490 type: integer
2491 description: Represents the size of the volume
2492 format: int64
2493 target:
2494 type: string
2495 description: 'Target is the target name used when adding the volume to the VM, eg: vda'
2496 required:
2497 - name
2498 - target
2499 x-kubernetes-list-type: atomic
2500 required:
2501 - spec
2502 served: true
2503 storage: true
2504 - name: v1alpha3
2505 additionalPrinterColumns:
2506 - name: Age
2507 type: date
2508 jsonPath: .metadata.creationTimestamp
2509 - name: Phase
2510 type: string
2511 jsonPath: .status.phase
2512 - name: IP
2513 type: string
2514 jsonPath: .status.interfaces[0].ipAddress
2515 - name: NodeName
2516 type: string
2517 jsonPath: .status.nodeName
2518 - name: Ready
2519 type: string
2520 jsonPath: .status.conditions[?(@.type=='Ready')].status
2521 - name: Live-Migratable
2522 type: string
2523 priority: 1
2524 jsonPath: .status.conditions[?(@.type=='LiveMigratable')].status
2525 - name: Paused
2526 type: string
2527 priority: 1
2528 jsonPath: .status.conditions[?(@.type=='Paused')].status
2529 deprecated: true
2530 deprecationWarning: kubevirt.io/v1alpha3 is now deprecated and will be removed in a future release.
2531 schema:
2532 openAPIV3Schema:
2533 type: object
2534 description: VirtualMachineInstance is *the* VirtualMachineInstance Definition. It represents a virtual machine in the runtime environment of kubernetes.
2535 properties:
2536 apiVersion:
2537 type: string
2538 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'
2539 kind:
2540 type: string
2541 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'
2542 metadata:
2543 type: object
2544 spec:
2545 type: object
2546 description: VirtualMachineInstance Spec contains the VirtualMachineInstance specification.
2547 properties:
2548 terminationGracePeriodSeconds:
2549 type: integer
2550 description: Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.
2551 format: int64
2552 dnsPolicy:
2553 type: string
2554 description: Set DNS policy for the pod. Defaults to "ClusterFirst". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.
2555 hostname:
2556 type: string
2557 description: Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.
2558 subdomain:
2559 type: string
2560 description: If specified, the fully qualified vmi hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.
2561 schedulerName:
2562 type: string
2563 description: If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.
2564 priorityClassName:
2565 type: string
2566 description: If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.
2567 nodeSelector:
2568 type: object
2569 additionalProperties:
2570 type: string
2571 description: 'NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node''s labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'
2572 volumes:
2573 type: array
2574 description: List of volumes that can be mounted by disks belonging to the vmi.
2575 items:
2576 type: object
2577 description: Volume represents a named volume in a vmi.
2578 properties:
2579 name:
2580 type: string
2581 description: 'Volume''s name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
2582 serviceAccount:
2583 type: object
2584 description: 'ServiceAccountVolumeSource represents a reference to a service account. There can only be one volume of this type! More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'
2585 properties:
2586 serviceAccountName:
2587 type: string
2588 description: 'Name of the service account in the pod''s namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'
2589 cloudInitConfigDrive:
2590 type: object
2591 description: 'CloudInitConfigDrive represents a cloud-init Config Drive user-data source. The Config Drive data will be added as a disk to the vmi. A proper cloud-init installation is required inside the guest. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html'
2592 properties:
2593 secretRef:
2594 type: object
2595 description: UserDataSecretRef references a k8s secret that contains config drive userdata.
2596 properties:
2597 name:
2598 type: string
2599 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
2600 networkData:
2601 type: string
2602 description: NetworkData contains config drive inline cloud-init networkdata.
2603 networkDataBase64:
2604 type: string
2605 description: NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.
2606 networkDataSecretRef:
2607 type: object
2608 description: NetworkDataSecretRef references a k8s secret that contains config drive networkdata.
2609 properties:
2610 name:
2611 type: string
2612 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
2613 userData:
2614 type: string
2615 description: UserData contains config drive inline cloud-init userdata.
2616 userDataBase64:
2617 type: string
2618 description: UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.
2619 cloudInitNoCloud:
2620 type: object
2621 description: 'CloudInitNoCloud represents a cloud-init NoCloud user-data source. The NoCloud data will be added as a disk to the vmi. A proper cloud-init installation is required inside the guest. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html'
2622 properties:
2623 secretRef:
2624 type: object
2625 description: UserDataSecretRef references a k8s secret that contains NoCloud userdata.
2626 properties:
2627 name:
2628 type: string
2629 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
2630 networkData:
2631 type: string
2632 description: NetworkData contains NoCloud inline cloud-init networkdata.
2633 networkDataBase64:
2634 type: string
2635 description: NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.
2636 networkDataSecretRef:
2637 type: object
2638 description: NetworkDataSecretRef references a k8s secret that contains NoCloud networkdata.
2639 properties:
2640 name:
2641 type: string
2642 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
2643 userData:
2644 type: string
2645 description: UserData contains NoCloud inline cloud-init userdata.
2646 userDataBase64:
2647 type: string
2648 description: UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.
2649 configMap:
2650 type: object
2651 description: 'ConfigMapSource represents a reference to a ConfigMap in the same namespace. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/'
2652 properties:
2653 name:
2654 type: string
2655 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
2656 optional:
2657 type: boolean
2658 description: Specify whether the ConfigMap or it's keys must be defined
2659 volumeLabel:
2660 type: string
2661 description: The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are "cidata" (cloud-init), "config-2" (cloud-init) or "OEMDRV" (kickstart).
2662 containerDisk:
2663 type: object
2664 description: 'ContainerDisk references a docker image, embedding a qcow or raw disk. More info: https://kubevirt.gitbooks.io/user-guide/registry-disk.html'
2665 properties:
2666 image:
2667 type: string
2668 description: Image is the name of the image with the embedded disk.
2669 imagePullPolicy:
2670 type: string
2671 description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
2672 imagePullSecret:
2673 type: string
2674 description: ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.
2675 path:
2676 type: string
2677 description: Path defines the path to disk file in the container
2678 required:
2679 - image
2680 dataVolume:
2681 type: object
2682 description: DataVolume represents the dynamic creation a PVC for this volume as well as the process of populating that PVC with a disk image.
2683 properties:
2684 name:
2685 type: string
2686 description: Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.
2687 hotpluggable:
2688 type: boolean
2689 description: Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.
2690 required:
2691 - name
2692 downwardAPI:
2693 type: object
2694 description: DownwardAPI represents downward API about the pod that should populate this volume
2695 properties:
2696 fields:
2697 type: array
2698 description: Fields is a list of downward API volume file
2699 items:
2700 type: object
2701 description: DownwardAPIVolumeFile represents information to create the file containing the pod field
2702 properties:
2703 fieldRef:
2704 type: object
2705 description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.'
2706 properties:
2707 apiVersion:
2708 type: string
2709 description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
2710 fieldPath:
2711 type: string
2712 description: Path of the field to select in the specified API version.
2713 required:
2714 - fieldPath
2715 resourceFieldRef:
2716 type: object
2717 description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.'
2718 properties:
2719 containerName:
2720 type: string
2721 description: 'Container name: required for volumes, optional for env vars'
2722 divisor:
2723 anyOf:
2724 - type: integer
2725 - type: string
2726 description: Specifies the output format of the exposed resources, defaults to "1"
2727 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2728 x-kubernetes-int-or-string: true
2729 resource:
2730 type: string
2731 description: 'Required: resource to select'
2732 required:
2733 - resource
2734 mode:
2735 type: integer
2736 description: 'Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.'
2737 format: int32
2738 path:
2739 type: string
2740 description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..'''
2741 required:
2742 - path
2743 volumeLabel:
2744 type: string
2745 description: The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are "cidata" (cloud-init), "config-2" (cloud-init) or "OEMDRV" (kickstart).
2746 downwardMetrics:
2747 type: object
2748 description: DownwardMetrics adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.
2749 emptyDisk:
2750 type: object
2751 description: 'EmptyDisk represents a temporary disk which shares the vmis lifecycle. More info: https://kubevirt.gitbooks.io/user-guide/disks-and-volumes.html'
2752 properties:
2753 capacity:
2754 anyOf:
2755 - type: integer
2756 - type: string
2757 description: Capacity of the sparse disk.
2758 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2759 x-kubernetes-int-or-string: true
2760 required:
2761 - capacity
2762 ephemeral:
2763 type: object
2764 description: Ephemeral is a special volume source that "wraps" specified source and provides copy-on-write image on top of it.
2765 properties:
2766 persistentVolumeClaim:
2767 type: object
2768 description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
2769 properties:
2770 readOnly:
2771 type: boolean
2772 description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.
2773 claimName:
2774 type: string
2775 description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
2776 required:
2777 - claimName
2778 hostDisk:
2779 type: object
2780 description: HostDisk represents a disk created on the cluster level
2781 properties:
2782 type:
2783 type: string
2784 description: Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'
2785 capacity:
2786 anyOf:
2787 - type: integer
2788 - type: string
2789 description: Capacity of the sparse disk
2790 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2791 x-kubernetes-int-or-string: true
2792 path:
2793 type: string
2794 description: The path to HostDisk image located on the cluster
2795 shared:
2796 type: boolean
2797 description: Shared indicate whether the path is shared between nodes
2798 required:
2799 - path
2800 - type
2801 memoryDump:
2802 type: object
2803 description: MemoryDump is attached to the virt launcher and is populated with a memory dump of the vmi
2804 properties:
2805 readOnly:
2806 type: boolean
2807 description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.
2808 claimName:
2809 type: string
2810 description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
2811 hotpluggable:
2812 type: boolean
2813 description: Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.
2814 required:
2815 - claimName
2816 persistentVolumeClaim:
2817 type: object
2818 description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
2819 properties:
2820 readOnly:
2821 type: boolean
2822 description: readOnly Will force the ReadOnly setting in VolumeMounts. Default false.
2823 claimName:
2824 type: string
2825 description: 'claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
2826 hotpluggable:
2827 type: boolean
2828 description: Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.
2829 required:
2830 - claimName
2831 secret:
2832 type: object
2833 description: 'SecretVolumeSource represents a reference to a secret data in the same namespace. More info: https://kubernetes.io/docs/concepts/configuration/secret/'
2834 properties:
2835 optional:
2836 type: boolean
2837 description: Specify whether the Secret or it's keys must be defined
2838 secretName:
2839 type: string
2840 description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
2841 volumeLabel:
2842 type: string
2843 description: The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are "cidata" (cloud-init), "config-2" (cloud-init) or "OEMDRV" (kickstart).
2844 sysprep:
2845 type: object
2846 description: Represents a Sysprep volume source.
2847 properties:
2848 configMap:
2849 type: object
2850 description: ConfigMap references a ConfigMap that contains Sysprep answer file named autounattend.xml that should be attached as disk of CDROM type.
2851 properties:
2852 name:
2853 type: string
2854 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
2855 secret:
2856 type: object
2857 description: Secret references a k8s Secret that contains Sysprep answer file named autounattend.xml that should be attached as disk of CDROM type.
2858 properties:
2859 name:
2860 type: string
2861 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
2862 required:
2863 - name
2864 affinity:
2865 type: object
2866 description: If affinity is specifies, obey all the affinity rules
2867 properties:
2868 nodeAffinity:
2869 type: object
2870 description: Describes node affinity scheduling rules for the pod.
2871 properties:
2872 preferredDuringSchedulingIgnoredDuringExecution:
2873 type: array
2874 description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
2875 items:
2876 type: object
2877 description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
2878 properties:
2879 preference:
2880 type: object
2881 description: A node selector term, associated with the corresponding weight.
2882 properties:
2883 matchExpressions:
2884 type: array
2885 description: A list of node selector requirements by node's labels.
2886 items:
2887 type: object
2888 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
2889 properties:
2890 key:
2891 type: string
2892 description: The label key that the selector applies to.
2893 operator:
2894 type: string
2895 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
2896 values:
2897 type: array
2898 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
2899 items:
2900 type: string
2901 required:
2902 - key
2903 - operator
2904 matchFields:
2905 type: array
2906 description: A list of node selector requirements by node's fields.
2907 items:
2908 type: object
2909 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
2910 properties:
2911 key:
2912 type: string
2913 description: The label key that the selector applies to.
2914 operator:
2915 type: string
2916 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
2917 values:
2918 type: array
2919 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
2920 items:
2921 type: string
2922 required:
2923 - key
2924 - operator
2925 weight:
2926 type: integer
2927 description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
2928 format: int32
2929 required:
2930 - preference
2931 - weight
2932 requiredDuringSchedulingIgnoredDuringExecution:
2933 type: object
2934 description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
2935 properties:
2936 nodeSelectorTerms:
2937 type: array
2938 description: Required. A list of node selector terms. The terms are ORed.
2939 items:
2940 type: object
2941 description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
2942 properties:
2943 matchExpressions:
2944 type: array
2945 description: A list of node selector requirements by node's labels.
2946 items:
2947 type: object
2948 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
2949 properties:
2950 key:
2951 type: string
2952 description: The label key that the selector applies to.
2953 operator:
2954 type: string
2955 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
2956 values:
2957 type: array
2958 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
2959 items:
2960 type: string
2961 required:
2962 - key
2963 - operator
2964 matchFields:
2965 type: array
2966 description: A list of node selector requirements by node's fields.
2967 items:
2968 type: object
2969 description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
2970 properties:
2971 key:
2972 type: string
2973 description: The label key that the selector applies to.
2974 operator:
2975 type: string
2976 description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
2977 values:
2978 type: array
2979 description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
2980 items:
2981 type: string
2982 required:
2983 - key
2984 - operator
2985 required:
2986 - nodeSelectorTerms
2987 podAffinity:
2988 type: object
2989 description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
2990 properties:
2991 preferredDuringSchedulingIgnoredDuringExecution:
2992 type: array
2993 description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
2994 items:
2995 type: object
2996 description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
2997 properties:
2998 podAffinityTerm:
2999 type: object
3000 description: Required. A pod affinity term, associated with the corresponding weight.
3001 properties:
3002 labelSelector:
3003 type: object
3004 description: A label query over a set of resources, in this case pods.
3005 properties:
3006 matchExpressions:
3007 type: array
3008 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3009 items:
3010 type: object
3011 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3012 properties:
3013 key:
3014 type: string
3015 description: key is the label key that the selector applies to.
3016 operator:
3017 type: string
3018 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3019 values:
3020 type: array
3021 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.
3022 items:
3023 type: string
3024 required:
3025 - key
3026 - operator
3027 matchLabels:
3028 type: object
3029 additionalProperties:
3030 type: string
3031 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.
3032 namespaceSelector:
3033 type: object
3034 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
3035 properties:
3036 matchExpressions:
3037 type: array
3038 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3039 items:
3040 type: object
3041 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3042 properties:
3043 key:
3044 type: string
3045 description: key is the label key that the selector applies to.
3046 operator:
3047 type: string
3048 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3049 values:
3050 type: array
3051 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.
3052 items:
3053 type: string
3054 required:
3055 - key
3056 - operator
3057 matchLabels:
3058 type: object
3059 additionalProperties:
3060 type: string
3061 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.
3062 namespaces:
3063 type: array
3064 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
3065 items:
3066 type: string
3067 topologyKey:
3068 type: string
3069 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
3070 required:
3071 - topologyKey
3072 weight:
3073 type: integer
3074 description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
3075 format: int32
3076 required:
3077 - podAffinityTerm
3078 - weight
3079 requiredDuringSchedulingIgnoredDuringExecution:
3080 type: array
3081 description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
3082 items:
3083 type: object
3084 description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
3085 properties:
3086 labelSelector:
3087 type: object
3088 description: A label query over a set of resources, in this case pods.
3089 properties:
3090 matchExpressions:
3091 type: array
3092 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3093 items:
3094 type: object
3095 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3096 properties:
3097 key:
3098 type: string
3099 description: key is the label key that the selector applies to.
3100 operator:
3101 type: string
3102 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3103 values:
3104 type: array
3105 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.
3106 items:
3107 type: string
3108 required:
3109 - key
3110 - operator
3111 matchLabels:
3112 type: object
3113 additionalProperties:
3114 type: string
3115 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.
3116 namespaceSelector:
3117 type: object
3118 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
3119 properties:
3120 matchExpressions:
3121 type: array
3122 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3123 items:
3124 type: object
3125 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3126 properties:
3127 key:
3128 type: string
3129 description: key is the label key that the selector applies to.
3130 operator:
3131 type: string
3132 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3133 values:
3134 type: array
3135 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.
3136 items:
3137 type: string
3138 required:
3139 - key
3140 - operator
3141 matchLabels:
3142 type: object
3143 additionalProperties:
3144 type: string
3145 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.
3146 namespaces:
3147 type: array
3148 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
3149 items:
3150 type: string
3151 topologyKey:
3152 type: string
3153 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
3154 required:
3155 - topologyKey
3156 podAntiAffinity:
3157 type: object
3158 description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
3159 properties:
3160 preferredDuringSchedulingIgnoredDuringExecution:
3161 type: array
3162 description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
3163 items:
3164 type: object
3165 description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
3166 properties:
3167 podAffinityTerm:
3168 type: object
3169 description: Required. A pod affinity term, associated with the corresponding weight.
3170 properties:
3171 labelSelector:
3172 type: object
3173 description: A label query over a set of resources, in this case pods.
3174 properties:
3175 matchExpressions:
3176 type: array
3177 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3178 items:
3179 type: object
3180 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3181 properties:
3182 key:
3183 type: string
3184 description: key is the label key that the selector applies to.
3185 operator:
3186 type: string
3187 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3188 values:
3189 type: array
3190 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.
3191 items:
3192 type: string
3193 required:
3194 - key
3195 - operator
3196 matchLabels:
3197 type: object
3198 additionalProperties:
3199 type: string
3200 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.
3201 namespaceSelector:
3202 type: object
3203 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
3204 properties:
3205 matchExpressions:
3206 type: array
3207 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3208 items:
3209 type: object
3210 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3211 properties:
3212 key:
3213 type: string
3214 description: key is the label key that the selector applies to.
3215 operator:
3216 type: string
3217 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3218 values:
3219 type: array
3220 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.
3221 items:
3222 type: string
3223 required:
3224 - key
3225 - operator
3226 matchLabels:
3227 type: object
3228 additionalProperties:
3229 type: string
3230 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.
3231 namespaces:
3232 type: array
3233 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
3234 items:
3235 type: string
3236 topologyKey:
3237 type: string
3238 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
3239 required:
3240 - topologyKey
3241 weight:
3242 type: integer
3243 description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
3244 format: int32
3245 required:
3246 - podAffinityTerm
3247 - weight
3248 requiredDuringSchedulingIgnoredDuringExecution:
3249 type: array
3250 description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
3251 items:
3252 type: object
3253 description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
3254 properties:
3255 labelSelector:
3256 type: object
3257 description: A label query over a set of resources, in this case pods.
3258 properties:
3259 matchExpressions:
3260 type: array
3261 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3262 items:
3263 type: object
3264 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3265 properties:
3266 key:
3267 type: string
3268 description: key is the label key that the selector applies to.
3269 operator:
3270 type: string
3271 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3272 values:
3273 type: array
3274 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.
3275 items:
3276 type: string
3277 required:
3278 - key
3279 - operator
3280 matchLabels:
3281 type: object
3282 additionalProperties:
3283 type: string
3284 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.
3285 namespaceSelector:
3286 type: object
3287 description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
3288 properties:
3289 matchExpressions:
3290 type: array
3291 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
3292 items:
3293 type: object
3294 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
3295 properties:
3296 key:
3297 type: string
3298 description: key is the label key that the selector applies to.
3299 operator:
3300 type: string
3301 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
3302 values:
3303 type: array
3304 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.
3305 items:
3306 type: string
3307 required:
3308 - key
3309 - operator
3310 matchLabels:
3311 type: object
3312 additionalProperties:
3313 type: string
3314 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.
3315 namespaces:
3316 type: array
3317 description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
3318 items:
3319 type: string
3320 topologyKey:
3321 type: string
3322 description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
3323 required:
3324 - topologyKey
3325 tolerations:
3326 type: array
3327 description: If toleration is specified, obey all the toleration rules.
3328 items:
3329 type: object
3330 description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
3331 properties:
3332 value:
3333 type: string
3334 description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
3335 effect:
3336 type: string
3337 description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
3338 key:
3339 type: string
3340 description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
3341 operator:
3342 type: string
3343 description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
3344 tolerationSeconds:
3345 type: integer
3346 description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
3347 format: int64
3348 dnsConfig:
3349 type: object
3350 description: Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.
3351 properties:
3352 nameservers:
3353 type: array
3354 description: A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.
3355 items:
3356 type: string
3357 options:
3358 type: array
3359 description: A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.
3360 items:
3361 type: object
3362 description: PodDNSConfigOption defines DNS resolver options of a pod.
3363 properties:
3364 name:
3365 type: string
3366 description: Required.
3367 value:
3368 type: string
3369 searches:
3370 type: array
3371 description: A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.
3372 items:
3373 type: string
3374 livenessProbe:
3375 type: object
3376 description: 'Periodic probe of VirtualMachineInstance liveness. VirtualmachineInstances will be stopped if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
3377 properties:
3378 exec:
3379 type: object
3380 description: One and only one of the following should be specified. Exec specifies the action to take, it will be executed on the guest through the qemu-guest-agent. If the guest agent is not available, this probe will fail.
3381 properties:
3382 command:
3383 type: array
3384 description: 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.
3385 items:
3386 type: string
3387 failureThreshold:
3388 type: integer
3389 description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
3390 format: int32
3391 guestAgentPing:
3392 type: object
3393 description: GuestAgentPing contacts the qemu-guest-agent for availability checks.
3394 httpGet:
3395 type: object
3396 description: HTTPGet specifies the http request to perform.
3397 properties:
3398 port:
3399 anyOf:
3400 - type: integer
3401 - type: string
3402 description: 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.
3403 x-kubernetes-int-or-string: true
3404 host:
3405 type: string
3406 description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
3407 httpHeaders:
3408 type: array
3409 description: Custom headers to set in the request. HTTP allows repeated headers.
3410 items:
3411 type: object
3412 description: HTTPHeader describes a custom header to be used in HTTP probes
3413 properties:
3414 name:
3415 type: string
3416 description: The header field name
3417 value:
3418 type: string
3419 description: The header field value
3420 required:
3421 - name
3422 - value
3423 path:
3424 type: string
3425 description: Path to access on the HTTP server.
3426 scheme:
3427 type: string
3428 description: Scheme to use for connecting to the host. Defaults to HTTP.
3429 required:
3430 - port
3431 initialDelaySeconds:
3432 type: integer
3433 description: 'Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
3434 format: int32
3435 periodSeconds:
3436 type: integer
3437 description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
3438 format: int32
3439 successThreshold:
3440 type: integer
3441 description: 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.
3442 format: int32
3443 tcpSocket:
3444 type: object
3445 description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
3446 properties:
3447 port:
3448 anyOf:
3449 - type: integer
3450 - type: string
3451 description: 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.
3452 x-kubernetes-int-or-string: true
3453 host:
3454 type: string
3455 description: 'Optional: Host name to connect to, defaults to the pod IP.'
3456 required:
3457 - port
3458 timeoutSeconds:
3459 type: integer
3460 description: 'Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
3461 format: int32
3462 readinessProbe:
3463 type: object
3464 description: 'Periodic probe of VirtualMachineInstance service readiness. VirtualmachineInstances will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
3465 properties:
3466 exec:
3467 type: object
3468 description: One and only one of the following should be specified. Exec specifies the action to take, it will be executed on the guest through the qemu-guest-agent. If the guest agent is not available, this probe will fail.
3469 properties:
3470 command:
3471 type: array
3472 description: 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.
3473 items:
3474 type: string
3475 failureThreshold:
3476 type: integer
3477 description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
3478 format: int32
3479 guestAgentPing:
3480 type: object
3481 description: GuestAgentPing contacts the qemu-guest-agent for availability checks.
3482 httpGet:
3483 type: object
3484 description: HTTPGet specifies the http request to perform.
3485 properties:
3486 port:
3487 anyOf:
3488 - type: integer
3489 - type: string
3490 description: 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.
3491 x-kubernetes-int-or-string: true
3492 host:
3493 type: string
3494 description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
3495 httpHeaders:
3496 type: array
3497 description: Custom headers to set in the request. HTTP allows repeated headers.
3498 items:
3499 type: object
3500 description: HTTPHeader describes a custom header to be used in HTTP probes
3501 properties:
3502 name:
3503 type: string
3504 description: The header field name
3505 value:
3506 type: string
3507 description: The header field value
3508 required:
3509 - name
3510 - value
3511 path:
3512 type: string
3513 description: Path to access on the HTTP server.
3514 scheme:
3515 type: string
3516 description: Scheme to use for connecting to the host. Defaults to HTTP.
3517 required:
3518 - port
3519 initialDelaySeconds:
3520 type: integer
3521 description: 'Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
3522 format: int32
3523 periodSeconds:
3524 type: integer
3525 description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
3526 format: int32
3527 successThreshold:
3528 type: integer
3529 description: 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.
3530 format: int32
3531 tcpSocket:
3532 type: object
3533 description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
3534 properties:
3535 port:
3536 anyOf:
3537 - type: integer
3538 - type: string
3539 description: 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.
3540 x-kubernetes-int-or-string: true
3541 host:
3542 type: string
3543 description: 'Optional: Host name to connect to, defaults to the pod IP.'
3544 required:
3545 - port
3546 timeoutSeconds:
3547 type: integer
3548 description: 'Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
3549 format: int32
3550 accessCredentials:
3551 type: array
3552 description: Specifies a set of public keys to inject into the vm guest
3553 items:
3554 type: object
3555 description: AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.
3556 properties:
3557 sshPublicKey:
3558 type: object
3559 description: SSHPublicKey represents the source and method of applying a ssh public key into a guest virtual machine.
3560 properties:
3561 propagationMethod:
3562 type: object
3563 description: PropagationMethod represents how the public key is injected into the vm guest.
3564 properties:
3565 configDrive:
3566 type: object
3567 description: ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider
3568 noCloud:
3569 type: object
3570 description: NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider
3571 qemuGuestAgent:
3572 type: object
3573 description: QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.
3574 properties:
3575 users:
3576 type: array
3577 description: Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.
3578 items:
3579 type: string
3580 x-kubernetes-list-type: set
3581 required:
3582 - users
3583 source:
3584 type: object
3585 description: Source represents where the public keys are pulled from
3586 properties:
3587 secret:
3588 type: object
3589 description: Secret means that the access credential is pulled from a kubernetes secret
3590 properties:
3591 secretName:
3592 type: string
3593 description: SecretName represents the name of the secret in the VMI's namespace
3594 required:
3595 - secretName
3596 required:
3597 - propagationMethod
3598 - source
3599 userPassword:
3600 type: object
3601 description: UserPassword represents the source and method for applying a guest user's password
3602 properties:
3603 propagationMethod:
3604 type: object
3605 description: propagationMethod represents how the user passwords are injected into the vm guest.
3606 properties:
3607 qemuGuestAgent:
3608 type: object
3609 description: QemuGuestAgentAccessCredentailPropagation means passwords are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.
3610 source:
3611 type: object
3612 description: Source represents where the user passwords are pulled from
3613 properties:
3614 secret:
3615 type: object
3616 description: Secret means that the access credential is pulled from a kubernetes secret
3617 properties:
3618 secretName:
3619 type: string
3620 description: SecretName represents the name of the secret in the VMI's namespace
3621 required:
3622 - secretName
3623 required:
3624 - propagationMethod
3625 - source
3626 x-kubernetes-list-type: atomic
3627 architecture:
3628 type: string
3629 description: Specifies the architecture of the vm guest you are attempting to run. Defaults to the compiled architecture of the KubeVirt components
3630 domain:
3631 type: object
3632 description: Specification of the desired behavior of the VirtualMachineInstance on the host.
3633 properties:
3634 resources:
3635 type: object
3636 description: Resources describes the Compute Resources required by this vmi.
3637 properties:
3638 limits:
3639 type: object
3640 additionalProperties:
3641 anyOf:
3642 - type: integer
3643 - type: string
3644 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
3645 x-kubernetes-int-or-string: true
3646 description: Limits describes the maximum amount of compute resources allowed. Valid resource keys are "memory" and "cpu".
3647 overcommitGuestOverhead:
3648 type: boolean
3649 description: Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.
3650 requests:
3651 type: object
3652 additionalProperties:
3653 anyOf:
3654 - type: integer
3655 - type: string
3656 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
3657 x-kubernetes-int-or-string: true
3658 description: Requests is a description of the initial vmi resources. Valid resource keys are "memory" and "cpu".
3659 chassis:
3660 type: object
3661 description: Chassis specifies the chassis info passed to the domain.
3662 properties:
3663 asset:
3664 type: string
3665 manufacturer:
3666 type: string
3667 serial:
3668 type: string
3669 sku:
3670 type: string
3671 version:
3672 type: string
3673 clock:
3674 type: object
3675 description: Clock sets the clock and timers of the vmi.
3676 properties:
3677 timer:
3678 type: object
3679 description: Timer specifies whih timers are attached to the vmi.
3680 properties:
3681 hpet:
3682 type: object
3683 description: HPET (High Precision Event Timer) - multiple timers with periodic interrupts.
3684 properties:
3685 present:
3686 type: boolean
3687 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
3688 tickPolicy:
3689 type: string
3690 description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "merge", "discard".
3691 hyperv:
3692 type: object
3693 description: Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.
3694 properties:
3695 present:
3696 type: boolean
3697 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
3698 kvm:
3699 type: object
3700 description: "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests."
3701 properties:
3702 present:
3703 type: boolean
3704 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
3705 pit:
3706 type: object
3707 description: PIT (Programmable Interval Timer) - a timer with periodic interrupts.
3708 properties:
3709 present:
3710 type: boolean
3711 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
3712 tickPolicy:
3713 type: string
3714 description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup", "discard".
3715 rtc:
3716 type: object
3717 description: RTC (Real Time Clock) - a continuously running timer with periodic interrupts.
3718 properties:
3719 present:
3720 type: boolean
3721 description: Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.
3722 tickPolicy:
3723 type: string
3724 description: TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of "delay", "catchup".
3725 track:
3726 type: string
3727 description: Track the guest or the wall clock.
3728 timezone:
3729 type: string
3730 description: Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').
3731 utc:
3732 type: object
3733 description: UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.
3734 properties:
3735 offsetSeconds:
3736 type: integer
3737 description: OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.
3738 cpu:
3739 type: object
3740 description: CPU allow specified the detailed CPU topology inside the vmi.
3741 properties:
3742 cores:
3743 type: integer
3744 description: Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.
3745 format: int32
3746 dedicatedCpuPlacement:
3747 type: boolean
3748 description: DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.
3749 features:
3750 type: array
3751 description: Features specifies the CPU features list inside the VMI.
3752 items:
3753 type: object
3754 description: CPUFeature allows specifying a CPU feature.
3755 properties:
3756 name:
3757 type: string
3758 description: Name of the CPU feature
3759 policy:
3760 type: string
3761 description: 'Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require'
3762 required:
3763 - name
3764 isolateEmulatorThread:
3765 type: boolean
3766 description: IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.
3767 maxSockets:
3768 type: integer
3769 description: MaxSockets specifies the maximum amount of sockets that can be hotplugged
3770 format: int32
3771 model:
3772 type: string
3773 description: Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like "host-passthrough" to get the same CPU as the node and "host-model" to get CPU closest to the node one. Defaults to host-model.
3774 numa:
3775 type: object
3776 description: NUMA allows specifying settings for the guest NUMA topology
3777 properties:
3778 guestMappingPassthrough:
3779 type: object
3780 description: GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.
3781 realtime:
3782 type: object
3783 description: Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads
3784 properties:
3785 mask:
3786 type: string
3787 description: 'Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt''s expressions. Example: "0-3,^1","0,2,3","2-3"'
3788 sockets:
3789 type: integer
3790 description: Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.
3791 format: int32
3792 threads:
3793 type: integer
3794 description: Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.
3795 format: int32
3796 devices:
3797 type: object
3798 description: Devices allows adding disks, network interfaces, and others
3799 properties:
3800 autoattachGraphicsDevice:
3801 type: boolean
3802 description: Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.
3803 autoattachInputDevice:
3804 type: boolean
3805 description: Whether to attach an Input Device. Defaults to false.
3806 autoattachMemBalloon:
3807 type: boolean
3808 description: Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.
3809 autoattachPodInterface:
3810 type: boolean
3811 description: Whether to attach a pod network interface. Defaults to true.
3812 autoattachSerialConsole:
3813 type: boolean
3814 description: Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.
3815 autoattachVSOCK:
3816 type: boolean
3817 description: Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.
3818 blockMultiQueue:
3819 type: boolean
3820 description: Whether or not to enable virtio multi-queue for block devices. Defaults to false.
3821 clientPassthrough:
3822 type: object
3823 description: To configure and access client devices such as redirecting USB
3824 disableHotplug:
3825 type: boolean
3826 description: DisableHotplug disabled the ability to hotplug disks.
3827 disks:
3828 type: array
3829 description: Disks describes disks, cdroms and luns which are connected to the vmi.
3830 items:
3831 type: object
3832 properties:
3833 name:
3834 type: string
3835 description: Name is the device name
3836 blockSize:
3837 type: object
3838 description: If specified, the virtual disk will be presented with the given block sizes.
3839 properties:
3840 custom:
3841 type: object
3842 description: CustomBlockSize represents the desired logical and physical block size for a VM disk.
3843 properties:
3844 logical:
3845 type: integer
3846 physical:
3847 type: integer
3848 required:
3849 - logical
3850 - physical
3851 matchVolume:
3852 type: object
3853 description: Represents if a feature is enabled or disabled.
3854 properties:
3855 enabled:
3856 type: boolean
3857 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
3858 bootOrder:
3859 type: integer
3860 description: BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.
3861 cache:
3862 type: string
3863 description: 'Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.'
3864 cdrom:
3865 type: object
3866 description: Attach a volume as a cdrom to the vmi.
3867 properties:
3868 bus:
3869 type: string
3870 description: 'Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.'
3871 readonly:
3872 type: boolean
3873 description: ReadOnly. Defaults to true.
3874 tray:
3875 type: string
3876 description: Tray indicates if the tray of the device is open or closed. Allowed values are "open" and "closed". Defaults to closed.
3877 dedicatedIOThread:
3878 type: boolean
3879 description: dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.
3880 disk:
3881 type: object
3882 description: Attach a volume as a disk to the vmi.
3883 properties:
3884 bus:
3885 type: string
3886 description: 'Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.'
3887 pciAddress:
3888 type: string
3889 description: 'If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10'
3890 readonly:
3891 type: boolean
3892 description: ReadOnly. Defaults to false.
3893 errorPolicy:
3894 type: string
3895 description: If specified, it can change the default error policy (stop) for the disk
3896 io:
3897 type: string
3898 description: 'IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.'
3899 lun:
3900 type: object
3901 description: Attach a volume as a LUN to the vmi.
3902 properties:
3903 bus:
3904 type: string
3905 description: 'Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.'
3906 readonly:
3907 type: boolean
3908 description: ReadOnly. Defaults to false.
3909 reservation:
3910 type: boolean
3911 description: Reservation indicates if the disk needs to support the persistent reservation for the SCSI disk
3912 serial:
3913 type: string
3914 description: Serial provides the ability to specify a serial number for the disk device.
3915 shareable:
3916 type: boolean
3917 description: If specified the disk is made sharable and multiple write from different VMs are permitted
3918 tag:
3919 type: string
3920 description: If specified, disk address and its tag will be provided to the guest via config drive metadata
3921 required:
3922 - name
3923 downwardMetrics:
3924 type: object
3925 description: DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.
3926 filesystems:
3927 type: array
3928 description: Filesystems describes filesystem which is connected to the vmi.
3929 items:
3930 type: object
3931 properties:
3932 name:
3933 type: string
3934 description: Name is the device name
3935 virtiofs:
3936 type: object
3937 description: Virtiofs is supported
3938 required:
3939 - name
3940 - virtiofs
3941 x-kubernetes-list-type: atomic
3942 gpus:
3943 type: array
3944 description: Whether to attach a GPU device to the vmi.
3945 items:
3946 type: object
3947 properties:
3948 name:
3949 type: string
3950 description: Name of the GPU device as exposed by a device plugin
3951 deviceName:
3952 type: string
3953 tag:
3954 type: string
3955 description: If specified, the virtual network interface address and its tag will be provided to the guest via config drive
3956 virtualGPUOptions:
3957 type: object
3958 properties:
3959 display:
3960 type: object
3961 properties:
3962 enabled:
3963 type: boolean
3964 description: Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.
3965 ramFB:
3966 type: object
3967 description: Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.
3968 properties:
3969 enabled:
3970 type: boolean
3971 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
3972 required:
3973 - deviceName
3974 - name
3975 x-kubernetes-list-type: atomic
3976 hostDevices:
3977 type: array
3978 description: Whether to attach a host device to the vmi.
3979 items:
3980 type: object
3981 properties:
3982 name:
3983 type: string
3984 deviceName:
3985 type: string
3986 description: DeviceName is the resource name of the host device exposed by a device plugin
3987 tag:
3988 type: string
3989 description: If specified, the virtual network interface address and its tag will be provided to the guest via config drive
3990 required:
3991 - deviceName
3992 - name
3993 x-kubernetes-list-type: atomic
3994 inputs:
3995 type: array
3996 description: Inputs describe input devices
3997 items:
3998 type: object
3999 properties:
4000 name:
4001 type: string
4002 description: Name is the device name
4003 type:
4004 type: string
4005 description: 'Type indicated the type of input device. Supported values: tablet.'
4006 bus:
4007 type: string
4008 description: 'Bus indicates the bus of input device to emulate. Supported values: virtio, usb.'
4009 required:
4010 - name
4011 - type
4012 interfaces:
4013 type: array
4014 description: Interfaces describe network interfaces which are added to the vmi.
4015 items:
4016 type: object
4017 properties:
4018 name:
4019 type: string
4020 description: Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.
4021 ports:
4022 type: array
4023 description: List of ports to be forwarded to the virtual machine.
4024 items:
4025 type: object
4026 description: Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory
4027 properties:
4028 name:
4029 type: string
4030 description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
4031 protocol:
4032 type: string
4033 description: Protocol for port. Must be UDP or TCP. Defaults to "TCP".
4034 port:
4035 type: integer
4036 description: Number of port to expose for the virtual machine. This must be a valid port number, 0 < x < 65536.
4037 format: int32
4038 required:
4039 - port
4040 acpiIndex:
4041 type: integer
4042 description: If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).
4043 binding:
4044 type: object
4045 description: 'Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1'
4046 properties:
4047 name:
4048 type: string
4049 description: 'Name references to the binding name as denined in the kubevirt CR. version: 1alphav1'
4050 required:
4051 - name
4052 bootOrder:
4053 type: integer
4054 description: BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.
4055 bridge:
4056 type: object
4057 description: InterfaceBridge connects to a given network via a linux bridge.
4058 dhcpOptions:
4059 type: object
4060 description: If specified the network interface will pass additional DHCP options to the VMI
4061 properties:
4062 bootFileName:
4063 type: string
4064 description: If specified will pass option 67 to interface's DHCP server
4065 ntpServers:
4066 type: array
4067 description: If specified will pass the configured NTP server to the VM via DHCP option 042.
4068 items:
4069 type: string
4070 privateOptions:
4071 type: array
4072 description: 'If specified will pass extra DHCP options for private use, range: 224-254'
4073 items:
4074 type: object
4075 description: DHCPExtraOptions defines Extra DHCP options for a VM.
4076 properties:
4077 value:
4078 type: string
4079 description: Value is a String value for the Option provided Required.
4080 option:
4081 type: integer
4082 description: Option is an Integer value from 224-254 Required.
4083 required:
4084 - option
4085 - value
4086 tftpServerName:
4087 type: string
4088 description: If specified will pass option 66 to interface's DHCP server
4089 macAddress:
4090 type: string
4091 description: 'Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.'
4092 macvtap:
4093 type: object
4094 description: InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.
4095 masquerade:
4096 type: object
4097 description: InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.
4098 model:
4099 type: string
4100 description: 'Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio. TODO:(ihar) switch to enums once opengen-api supports them. See: https://github.com/kubernetes/kube-openapi/issues/51'
4101 passt:
4102 type: object
4103 description: InterfacePasst connects to a given network.
4104 pciAddress:
4105 type: string
4106 description: 'If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10'
4107 slirp:
4108 type: object
4109 description: InterfaceSlirp connects to a given network using QEMU user networking mode.
4110 sriov:
4111 type: object
4112 description: InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.
4113 state:
4114 type: string
4115 description: State represents the requested operational state of the interface. The (only) value supported is 'absent', expressing a request to remove the interface.
4116 tag:
4117 type: string
4118 description: If specified, the virtual network interface address and its tag will be provided to the guest via config drive
4119 required:
4120 - name
4121 logSerialConsole:
4122 type: boolean
4123 description: Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.
4124 networkInterfaceMultiqueue:
4125 type: boolean
4126 description: If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.
4127 rng:
4128 type: object
4129 description: Whether to have random number generator from host
4130 sound:
4131 type: object
4132 description: Whether to emulate a sound device.
4133 properties:
4134 name:
4135 type: string
4136 description: User's defined name for this sound device
4137 model:
4138 type: string
4139 description: 'We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9'
4140 required:
4141 - name
4142 tpm:
4143 type: object
4144 description: Whether to emulate a TPM device.
4145 properties:
4146 persistent:
4147 type: boolean
4148 description: Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false
4149 useVirtioTransitional:
4150 type: boolean
4151 description: Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).
4152 watchdog:
4153 type: object
4154 description: Watchdog describes a watchdog device which can be added to the vmi.
4155 properties:
4156 name:
4157 type: string
4158 description: Name of the watchdog.
4159 i6300esb:
4160 type: object
4161 description: i6300esb watchdog device.
4162 properties:
4163 action:
4164 type: string
4165 description: The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.
4166 required:
4167 - name
4168 features:
4169 type: object
4170 description: Features like acpi, apic, hyperv, smm.
4171 properties:
4172 acpi:
4173 type: object
4174 description: ACPI enables/disables ACPI inside the guest. Defaults to enabled.
4175 properties:
4176 enabled:
4177 type: boolean
4178 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4179 apic:
4180 type: object
4181 description: Defaults to the machine type setting.
4182 properties:
4183 enabled:
4184 type: boolean
4185 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4186 endOfInterrupt:
4187 type: boolean
4188 description: EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.
4189 hyperv:
4190 type: object
4191 description: Defaults to the machine type setting.
4192 properties:
4193 evmcs:
4194 type: object
4195 description: EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.
4196 properties:
4197 enabled:
4198 type: boolean
4199 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4200 frequencies:
4201 type: object
4202 description: Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.
4203 properties:
4204 enabled:
4205 type: boolean
4206 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4207 ipi:
4208 type: object
4209 description: IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
4210 properties:
4211 enabled:
4212 type: boolean
4213 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4214 reenlightenment:
4215 type: object
4216 description: Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.
4217 properties:
4218 enabled:
4219 type: boolean
4220 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4221 relaxed:
4222 type: object
4223 description: Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.
4224 properties:
4225 enabled:
4226 type: boolean
4227 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4228 reset:
4229 type: object
4230 description: Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.
4231 properties:
4232 enabled:
4233 type: boolean
4234 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4235 runtime:
4236 type: object
4237 description: Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.
4238 properties:
4239 enabled:
4240 type: boolean
4241 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4242 spinlocks:
4243 type: object
4244 description: Spinlocks allows to configure the spinlock retry attempts.
4245 properties:
4246 enabled:
4247 type: boolean
4248 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4249 spinlocks:
4250 type: integer
4251 description: Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.
4252 format: int32
4253 synic:
4254 type: object
4255 description: SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.
4256 properties:
4257 enabled:
4258 type: boolean
4259 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4260 synictimer:
4261 type: object
4262 description: SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.
4263 properties:
4264 direct:
4265 type: object
4266 description: Represents if a feature is enabled or disabled.
4267 properties:
4268 enabled:
4269 type: boolean
4270 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4271 enabled:
4272 type: boolean
4273 tlbflush:
4274 type: object
4275 description: TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.
4276 properties:
4277 enabled:
4278 type: boolean
4279 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4280 vapic:
4281 type: object
4282 description: VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.
4283 properties:
4284 enabled:
4285 type: boolean
4286 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4287 vendorid:
4288 type: object
4289 description: VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.
4290 properties:
4291 enabled:
4292 type: boolean
4293 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4294 vendorid:
4295 type: string
4296 description: VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.
4297 vpindex:
4298 type: object
4299 description: VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.
4300 properties:
4301 enabled:
4302 type: boolean
4303 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4304 kvm:
4305 type: object
4306 description: Configure how KVM presence is exposed to the guest.
4307 properties:
4308 hidden:
4309 type: boolean
4310 description: Hide the KVM hypervisor from standard MSR based discovery. Defaults to false
4311 pvspinlock:
4312 type: object
4313 description: Notify the guest that the host supports paravirtual spinlocks. For older kernels this feature should be explicitly disabled.
4314 properties:
4315 enabled:
4316 type: boolean
4317 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4318 smm:
4319 type: object
4320 description: SMM enables/disables System Management Mode. TSEG not yet implemented.
4321 properties:
4322 enabled:
4323 type: boolean
4324 description: Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.
4325 firmware:
4326 type: object
4327 description: Firmware.
4328 properties:
4329 bootloader:
4330 type: object
4331 description: Settings to control the bootloader that is used.
4332 properties:
4333 bios:
4334 type: object
4335 description: If set (default), BIOS will be used.
4336 properties:
4337 useSerial:
4338 type: boolean
4339 description: If set, the BIOS output will be transmitted over serial
4340 efi:
4341 type: object
4342 description: If set, EFI will be used instead of BIOS.
4343 properties:
4344 persistent:
4345 type: boolean
4346 description: If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false
4347 secureBoot:
4348 type: boolean
4349 description: If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true
4350 kernelBoot:
4351 type: object
4352 description: Settings to set the kernel for booting.
4353 properties:
4354 container:
4355 type: object
4356 description: Container defines the container that containes kernel artifacts
4357 properties:
4358 image:
4359 type: string
4360 description: Image that contains initrd / kernel files.
4361 imagePullPolicy:
4362 type: string
4363 description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
4364 imagePullSecret:
4365 type: string
4366 description: ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.
4367 initrdPath:
4368 type: string
4369 description: the fully-qualified path to the ramdisk image in the host OS
4370 kernelPath:
4371 type: string
4372 description: The fully-qualified path to the kernel image in the host OS
4373 required:
4374 - image
4375 kernelArgs:
4376 type: string
4377 description: Arguments to be passed to the kernel at boot time
4378 serial:
4379 type: string
4380 description: The system-serial-number in SMBIOS
4381 uuid:
4382 type: string
4383 description: UUID reported by the vmi bios. Defaults to a random generated uid.
4384 ioThreadsPolicy:
4385 type: string
4386 description: 'Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto'
4387 launchSecurity:
4388 type: object
4389 description: Launch Security setting of the vmi.
4390 properties:
4391 sev:
4392 type: object
4393 description: AMD Secure Encrypted Virtualization (SEV).
4394 properties:
4395 attestation:
4396 type: object
4397 description: If specified, run the attestation process for a vmi.
4398 dhCert:
4399 type: string
4400 description: Base64 encoded guest owner's Diffie-Hellman key.
4401 policy:
4402 type: object
4403 description: 'Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.'
4404 properties:
4405 encryptedState:
4406 type: boolean
4407 description: SEV-ES is required. Defaults to false.
4408 session:
4409 type: string
4410 description: Base64 encoded session blob.
4411 machine:
4412 type: object
4413 description: Machine type.
4414 properties:
4415 type:
4416 type: string
4417 description: QEMU machine type is the actual chipset of the VirtualMachineInstance.
4418 memory:
4419 type: object
4420 description: Memory allow specifying the VMI memory features.
4421 properties:
4422 guest:
4423 anyOf:
4424 - type: integer
4425 - type: string
4426 description: Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.
4427 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4428 x-kubernetes-int-or-string: true
4429 hugepages:
4430 type: object
4431 description: Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.
4432 properties:
4433 pageSize:
4434 type: string
4435 description: PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.
4436 maxGuest:
4437 anyOf:
4438 - type: integer
4439 - type: string
4440 description: MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.
4441 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4442 x-kubernetes-int-or-string: true
4443 required:
4444 - devices
4445 evictionStrategy:
4446 type: string
4447 description: EvictionStrategy can be set to "LiveMigrate" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.
4448 networks:
4449 type: array
4450 description: List of networks that can be attached to a vm's virtual interface.
4451 items:
4452 type: object
4453 description: Network represents a network type and a resource that should be connected to the vm.
4454 properties:
4455 name:
4456 type: string
4457 description: 'Network name. Must be a DNS_LABEL and unique within the vm. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
4458 multus:
4459 type: object
4460 description: Represents the multus cni network.
4461 properties:
4462 default:
4463 type: boolean
4464 description: Select the default network and add it to the multus-cni.io/default-network annotation.
4465 networkName:
4466 type: string
4467 description: 'References to a NetworkAttachmentDefinition CRD object. Format: <networkName>, <namespace>/<networkName>. If namespace is not specified, VMI namespace is assumed.'
4468 required:
4469 - networkName
4470 pod:
4471 type: object
4472 description: Represents the stock pod network interface.
4473 properties:
4474 vmIPv6NetworkCIDR:
4475 type: string
4476 description: IPv6 CIDR for the vm network. Defaults to fd10:0:2::/120 if not specified.
4477 vmNetworkCIDR:
4478 type: string
4479 description: CIDR for vm network. Default 10.0.2.0/24 if not specified.
4480 required:
4481 - name
4482 startStrategy:
4483 type: string
4484 description: StartStrategy can be set to "Paused" if Virtual Machine should be started in paused state.
4485 topologySpreadConstraints:
4486 type: array
4487 description: TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.
4488 items:
4489 type: object
4490 description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.
4491 properties:
4492 labelSelector:
4493 type: object
4494 description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
4495 properties:
4496 matchExpressions:
4497 type: array
4498 description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
4499 items:
4500 type: object
4501 description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
4502 properties:
4503 key:
4504 type: string
4505 description: key is the label key that the selector applies to.
4506 operator:
4507 type: string
4508 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
4509 values:
4510 type: array
4511 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.
4512 items:
4513 type: string
4514 required:
4515 - key
4516 - operator
4517 matchLabels:
4518 type: object
4519 additionalProperties:
4520 type: string
4521 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.
4522 matchLabelKeys:
4523 type: array
4524 description: MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.
4525 items:
4526 type: string
4527 x-kubernetes-list-type: atomic
4528 maxSkew:
4529 type: integer
4530 description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When ''whenUnsatisfiable=DoNotSchedule'', it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When ''whenUnsatisfiable=ScheduleAnyway'', it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'
4531 format: int32
4532 minDomains:
4533 type: integer
4534 description: "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew. \n This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)."
4535 format: int32
4536 nodeAffinityPolicy:
4537 type: string
4538 description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. \n If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."
4539 nodeTaintsPolicy:
4540 type: string
4541 description: "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included. \n If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag."
4542 topologyKey:
4543 type: string
4544 description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.
4545 whenUnsatisfiable:
4546 type: string
4547 description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'
4548 required:
4549 - maxSkew
4550 - topologyKey
4551 - whenUnsatisfiable
4552 x-kubernetes-list-map-keys:
4553 - topologyKey
4554 - whenUnsatisfiable
4555 x-kubernetes-list-type: map
4556 required:
4557 - domain
4558 status:
4559 type: object
4560 description: Status is the high level overview of how the VirtualMachineInstance is doing. It contains information available to controllers and users.
4561 properties:
4562 nodeName:
4563 type: string
4564 description: NodeName is the name where the VirtualMachineInstance is currently running.
4565 VSOCKCID:
4566 type: integer
4567 description: VSOCKCID is used to track the allocated VSOCK CID in the VM.
4568 format: int32
4569 activePods:
4570 type: object
4571 additionalProperties:
4572 type: string
4573 description: ActivePods is a mapping of pod UID to node name. It is possible for multiple pods to be running for a single VMI during migration.
4574 conditions:
4575 type: array
4576 description: Conditions are specific points in VirtualMachineInstance's pod runtime.
4577 items:
4578 type: object
4579 properties:
4580 type:
4581 type: string
4582 status:
4583 type: string
4584 lastProbeTime:
4585 type: string
4586 format: date-time
4587 nullable: true
4588 lastTransitionTime:
4589 type: string
4590 format: date-time
4591 nullable: true
4592 message:
4593 type: string
4594 reason:
4595 type: string
4596 required:
4597 - status
4598 - type
4599 currentCPUTopology:
4600 type: object
4601 description: CurrentCPUTopology specifies the current CPU topology used by the VM workload. Current topology may differ from the desired topology in the spec while CPU hotplug takes place.
4602 properties:
4603 cores:
4604 type: integer
4605 description: Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.
4606 format: int32
4607 sockets:
4608 type: integer
4609 description: Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.
4610 format: int32
4611 threads:
4612 type: integer
4613 description: Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.
4614 format: int32
4615 evacuationNodeName:
4616 type: string
4617 description: EvacuationNodeName is used to track the eviction process of a VMI. It stores the name of the node that we want to evacuate. It is meant to be used by KubeVirt core components only and can't be set or modified by users.
4618 fsFreezeStatus:
4619 type: string
4620 description: FSFreezeStatus is the state of the fs of the guest it can be either frozen or thawed
4621 guestOSInfo:
4622 type: object
4623 description: Guest OS Information
4624 properties:
4625 name:
4626 type: string
4627 description: Name of the Guest OS
4628 id:
4629 type: string
4630 description: Guest OS Id
4631 kernelRelease:
4632 type: string
4633 description: Guest OS Kernel Release
4634 kernelVersion:
4635 type: string
4636 description: Kernel version of the Guest OS
4637 machine:
4638 type: string
4639 description: Machine type of the Guest OS
4640 prettyName:
4641 type: string
4642 description: Guest OS Pretty Name
4643 version:
4644 type: string
4645 description: Guest OS Version
4646 versionId:
4647 type: string
4648 description: Version ID of the Guest OS
4649 interfaces:
4650 type: array
4651 description: Interfaces represent the details of available network interfaces.
4652 items:
4653 type: object
4654 properties:
4655 name:
4656 type: string
4657 description: Name of the interface, corresponds to name of the network assigned to the interface
4658 infoSource:
4659 type: string
4660 description: 'Specifies the origin of the interface data collected. values: domain, guest-agent, multus-status.'
4661 interfaceName:
4662 type: string
4663 description: The interface name inside the Virtual Machine
4664 ipAddress:
4665 type: string
4666 description: IP address of a Virtual Machine interface. It is always the first item of IPs
4667 ipAddresses:
4668 type: array
4669 description: List of all IP addresses of a Virtual Machine interface
4670 items:
4671 type: string
4672 mac:
4673 type: string
4674 description: Hardware address of a Virtual Machine interface
4675 queueCount:
4676 type: integer
4677 description: Specifies how many queues are allocated by MultiQueue
4678 format: int32
4679 launcherContainerImageVersion:
4680 type: string
4681 description: LauncherContainerImageVersion indicates what container image is currently active for the vmi.
4682 machine:
4683 type: object
4684 description: Machine shows the final resulting qemu machine type. This can be different than the machine type selected in the spec, due to qemus machine type alias mechanism.
4685 properties:
4686 type:
4687 type: string
4688 description: QEMU machine type is the actual chipset of the VirtualMachineInstance.
4689 memory:
4690 type: object
4691 description: Memory shows various informations about the VirtualMachine memory.
4692 properties:
4693 guestAtBoot:
4694 anyOf:
4695 - type: integer
4696 - type: string
4697 description: GuestAtBoot specifies with how much memory the VirtualMachine intiallly booted with.
4698 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4699 x-kubernetes-int-or-string: true
4700 guestCurrent:
4701 anyOf:
4702 - type: integer
4703 - type: string
4704 description: GuestCurrent specifies how much memory is currently available for the VirtualMachine.
4705 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4706 x-kubernetes-int-or-string: true
4707 guestRequested:
4708 anyOf:
4709 - type: integer
4710 - type: string
4711 description: GuestRequested specifies how much memory was requested (hotplug) for the VirtualMachine.
4712 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4713 x-kubernetes-int-or-string: true
4714 migrationMethod:
4715 type: string
4716 description: 'Represents the method using which the vmi can be migrated: live migration or block migration'
4717 migrationState:
4718 type: object
4719 description: Represents the status of a live migration
4720 properties:
4721 abortRequested:
4722 type: boolean
4723 description: Indicates that the migration has been requested to abort
4724 abortStatus:
4725 type: string
4726 description: Indicates the final status of the live migration abortion
4727 completed:
4728 type: boolean
4729 description: Indicates the migration completed
4730 endTimestamp:
4731 type: string
4732 description: The time the migration action ended
4733 format: date-time
4734 nullable: true
4735 failed:
4736 type: boolean
4737 description: Indicates that the migration failed
4738 migrationConfiguration:
4739 type: object
4740 description: Migration configurations to apply
4741 properties:
4742 allowAutoConverge:
4743 type: boolean
4744 description: AllowAutoConverge allows the platform to compromise performance/availability of VMIs to guarantee successful VMI live migrations. Defaults to false
4745 allowPostCopy:
4746 type: boolean
4747 description: AllowPostCopy enables post-copy live migrations. Such migrations allow even the busiest VMIs to successfully live-migrate. However, events like a network failure can cause a VMI crash. If set to true, migrations will still start in pre-copy, but switch to post-copy when CompletionTimeoutPerGiB triggers. Defaults to false
4748 bandwidthPerMigration:
4749 anyOf:
4750 - type: integer
4751 - type: string
4752 description: BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use. The value is in quantity per second. Defaults to 0 (no limit)
4753 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4754 x-kubernetes-int-or-string: true
4755 completionTimeoutPerGiB:
4756 type: integer
4757 description: CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take. If a live-migration takes longer to migrate than this value multiplied by the size of the VMI, the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800
4758 format: int64
4759 disableTLS:
4760 type: boolean
4761 description: When set to true, DisableTLS will disable the additional layer of live migration encryption provided by KubeVirt. This is usually a bad idea. Defaults to false
4762 matchSELinuxLevelOnMigration:
4763 type: boolean
4764 description: By default, the SELinux level of target virt-launcher pods is forced to the level of the source virt-launcher. When set to true, MatchSELinuxLevelOnMigration lets the CRI auto-assign a random level to the target. That will ensure the target virt-launcher doesn't share categories with another pod on the node. However, migrations will fail when using RWX volumes that don't automatically deal with SELinux levels.
4765 network:
4766 type: string
4767 description: Network is the name of the CNI network to use for live migrations. By default, migrations go through the pod network.
4768 nodeDrainTaintKey:
4769 type: string
4770 description: 'NodeDrainTaintKey defines the taint key that indicates a node should be drained. Note: this option relies on the deprecated node taint feature. Default: kubevirt.io/drain'
4771 parallelMigrationsPerCluster:
4772 type: integer
4773 description: ParallelMigrationsPerCluster is the total number of concurrent live migrations allowed cluster-wide. Defaults to 5
4774 format: int32
4775 parallelOutboundMigrationsPerNode:
4776 type: integer
4777 description: ParallelOutboundMigrationsPerNode is the maximum number of concurrent outgoing live migrations allowed per node. Defaults to 2
4778 format: int32
4779 progressTimeout:
4780 type: integer
4781 description: ProgressTimeout is the maximum number of seconds a live migration is allowed to make no progress. Hitting this timeout means a migration transferred 0 data for that many seconds. The migration is then considered stuck and therefore cancelled. Defaults to 150
4782 format: int64
4783 unsafeMigrationOverride:
4784 type: boolean
4785 description: UnsafeMigrationOverride allows live migrations to occur even if the compatibility check indicates the migration will be unsafe to the guest. Defaults to false
4786 migrationPolicyName:
4787 type: string
4788 description: Name of the migration policy. If string is empty, no policy is matched
4789 migrationUid:
4790 type: string
4791 description: The VirtualMachineInstanceMigration object associated with this migration
4792 mode:
4793 type: string
4794 description: Lets us know if the vmi is currently running pre or post copy migration
4795 sourceNode:
4796 type: string
4797 description: The source node that the VMI originated on
4798 startTimestamp:
4799 type: string
4800 description: The time the migration action began
4801 format: date-time
4802 nullable: true
4803 targetAttachmentPodUID:
4804 type: string
4805 description: The UID of the target attachment pod for hotplug volumes
4806 targetCPUSet:
4807 type: array
4808 description: If the VMI requires dedicated CPUs, this field will hold the dedicated CPU set on the target node
4809 items:
4810 type: integer
4811 x-kubernetes-list-type: atomic
4812 targetDirectMigrationNodePorts:
4813 type: object
4814 additionalProperties:
4815 type: integer
4816 description: The list of ports opened for live migration on the destination node
4817 targetNode:
4818 type: string
4819 description: The target node that the VMI is moving to
4820 targetNodeAddress:
4821 type: string
4822 description: The address of the target node to use for the migration
4823 targetNodeDomainDetected:
4824 type: boolean
4825 description: The Target Node has seen the Domain Start Event
4826 targetNodeDomainReadyTimestamp:
4827 type: string
4828 description: The timestamp at which the target node detects the domain is active
4829 format: date-time
4830 targetNodeTopology:
4831 type: string
4832 description: If the VMI requires dedicated CPUs, this field will hold the numa topology on the target node
4833 targetPod:
4834 type: string
4835 description: The target pod that the VMI is moving to
4836 migrationTransport:
4837 type: string
4838 description: This represents the migration transport
4839 phase:
4840 type: string
4841 description: Phase is the status of the VirtualMachineInstance in kubernetes world. It is not the VirtualMachineInstance status, but partially correlates to it.
4842 phaseTransitionTimestamps:
4843 type: array
4844 description: PhaseTransitionTimestamp is the timestamp of when the last phase change occurred
4845 items:
4846 type: object
4847 description: VirtualMachineInstancePhaseTransitionTimestamp gives a timestamp in relation to when a phase is set on a vmi
4848 properties:
4849 phase:
4850 type: string
4851 description: Phase is the status of the VirtualMachineInstance in kubernetes world. It is not the VirtualMachineInstance status, but partially correlates to it.
4852 phaseTransitionTimestamp:
4853 type: string
4854 description: PhaseTransitionTimestamp is the timestamp of when the phase change occurred
4855 format: date-time
4856 x-kubernetes-list-type: atomic
4857 qosClass:
4858 type: string
4859 description: 'The Quality of Service (QOS) classification assigned to the virtual machine instance based on resource requirements See PodQOSClass type for available QOS classes More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md'
4860 reason:
4861 type: string
4862 description: A brief CamelCase message indicating details about why the VMI is in this state. e.g. 'NodeUnresponsive'
4863 runtimeUser:
4864 type: integer
4865 description: RuntimeUser is used to determine what user will be used in launcher
4866 format: int64
4867 selinuxContext:
4868 type: string
4869 description: SELinuxContext is the actual SELinux context of the virt-launcher pod
4870 topologyHints:
4871 type: object
4872 properties:
4873 tscFrequency:
4874 type: integer
4875 format: int64
4876 virtualMachineRevisionName:
4877 type: string
4878 description: VirtualMachineRevisionName is used to get the vm revision of the vmi when doing an online vm snapshot
4879 volumeStatus:
4880 type: array
4881 description: VolumeStatus contains the statuses of all the volumes
4882 items:
4883 type: object
4884 description: VolumeStatus represents information about the status of volumes attached to the VirtualMachineInstance.
4885 properties:
4886 name:
4887 type: string
4888 description: Name is the name of the volume
4889 hotplugVolume:
4890 type: object
4891 description: If the volume is hotplug, this will contain the hotplug status.
4892 properties:
4893 attachPodName:
4894 type: string
4895 description: AttachPodName is the name of the pod used to attach the volume to the node.
4896 attachPodUID:
4897 type: string
4898 description: AttachPodUID is the UID of the pod used to attach the volume to the node.
4899 memoryDumpVolume:
4900 type: object
4901 description: If the volume is memorydump volume, this will contain the memorydump info.
4902 properties:
4903 claimName:
4904 type: string
4905 description: ClaimName is the name of the pvc the memory was dumped to
4906 endTimestamp:
4907 type: string
4908 description: EndTimestamp is the time when the memory dump completed
4909 format: date-time
4910 startTimestamp:
4911 type: string
4912 description: StartTimestamp is the time when the memory dump started
4913 format: date-time
4914 targetFileName:
4915 type: string
4916 description: TargetFileName is the name of the memory dump output
4917 message:
4918 type: string
4919 description: Message is a detailed message about the current hotplug volume phase
4920 persistentVolumeClaimInfo:
4921 type: object
4922 description: PersistentVolumeClaimInfo is information about the PVC that handler requires during start flow
4923 properties:
4924 accessModes:
4925 type: array
4926 description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
4927 items:
4928 type: string
4929 x-kubernetes-list-type: atomic
4930 capacity:
4931 type: object
4932 additionalProperties:
4933 anyOf:
4934 - type: integer
4935 - type: string
4936 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4937 x-kubernetes-int-or-string: true
4938 description: Capacity represents the capacity set on the corresponding PVC status
4939 filesystemOverhead:
4940 type: string
4941 description: Percentage of filesystem's size to be reserved when resizing the PVC
4942 pattern: ^(0(?:\.\d{1,3})?|1)$
4943 preallocated:
4944 type: boolean
4945 description: Preallocated indicates if the PVC's storage is preallocated or not
4946 requests:
4947 type: object
4948 additionalProperties:
4949 anyOf:
4950 - type: integer
4951 - type: string
4952 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
4953 x-kubernetes-int-or-string: true
4954 description: Requests represents the resources requested by the corresponding PVC spec
4955 volumeMode:
4956 type: string
4957 description: VolumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
4958 phase:
4959 type: string
4960 description: Phase is the phase
4961 reason:
4962 type: string
4963 description: Reason is a brief description of why we are in the current hotplug volume phase
4964 size:
4965 type: integer
4966 description: Represents the size of the volume
4967 format: int64
4968 target:
4969 type: string
4970 description: 'Target is the target name used when adding the volume to the VM, eg: vda'
4971 required:
4972 - name
4973 - target
4974 x-kubernetes-list-type: atomic
4975 required:
4976 - spec
4977 served: true
4978 storage: false
View as plain text