API Overview ~~~~~~~~~~~~ With the installation of KubeVirt, new types are added to the Kubernetes API to manage Virtual Machines. You can interact with the new resources (via `kubectl`) as you would with any other API resource. VirtualMachineInstance API ~~~~~~~~~~~~~~~~~~~~~~~~~~ ______________________________________________________________________________ Note: A full API reference is available at https://kubevirt.io/api-reference/. ______________________________________________________________________________ Here is an example of a VirtualMachineInstance object: [source,yaml] ---- apiVersion: kubevirt.io/v1alpha2 kind: VirtualMachineInstance metadata: name: testvmi-nocloud spec: terminationGracePeriodSeconds: 30 domain: resources: requests: memory: 1024M devices: disks: - name: containerdisk volumeName: registryvolume disk: bus: virtio - name: emptydisk volumeName: emptydiskvolume disk: bus: virtio - disk: bus: virtio name: cloudinitdisk volumeName: cloudinitvolume volumes: - name: registryvolume containerDisk: image: kubevirt/fedora-cloud-container-disk-demo:latest - name: emptydiskvolume emptyDisk: capacity: "2Gi" - name: cloudinitvolume cloudInitNoCloud: userData: |- #cloud-config password: fedora chpasswd: { expire: False } ---- This example uses a fedora cloud image in combination with cloud-init and an ephemeral empty disk with a capacity of `2Gi`. For the sake of simplicity, the volume sources in this example are ephemeral and don’t require a provisioner in your cluster. What’s next ----------- * More information about persistent and ephemeral volumes: link:workloads/virtual-machines/disks-and-volumes.md[Disks and Volumes] * How to access a VirtualMachineInstance via `console` or `vnc`: link:workloads/virtual-machines/graphical-and-console-access.md[Graphical and Serial Console Access] * How to customize VirtualMachineInstances with `cloud-init`: link:workloads/virtual-machines/startup-scripts.md[Startup Scripts]