Skip to content

Virtual Machine | Example

Examples.

Disk Volume

YAML
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
  name: mysql8-dv
spec:
  source:
    http:
      url: "https://cloud-images.ubuntu.com/releases/jammy/release/ubuntu-22.04-server-cloudimg-amd64.img"
  pvc:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 40Gi
    volumeMode: Filesystem
    storageClassName: local-path

Network | Multus

YAML
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: mysql8-lan
  namespace: vm
spec:
  config: '{
    "cniVersion": "0.3.1",
    "type": "bridge",
    "bridge": "br0",
    "ipam": {
      "type": "static",
      "addresses": [
        {
          "address": "10.0.50.42/24",
          "gateway": "10.0.50.1"
        }
      ],
      "dns": {
        "nameservers": ["1.1.1.1", "8.8.8.8"]
      }
    }
  }'

Virtual Machine

YAML
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: mysql8-vm
spec:
  runStrategy: RerunOnFailure
  template:
    metadata:
      labels:
        kubevirt.io/domain: mysql8-vm
    spec:
      domain:
        resources:
          overcommitGuestOverhead: true
          requests:
            memory: 1Gi
          limits:
            memory: 10Gi
        cpu:
          cores: 2
        memory:
          guest: 2Gi
        devices:
          interfaces:
            - name: default
              masquerade: {}
            - name: br0net
              bridge: {}
          disks:
            - name: mysql8-disk
              disk:
                bus: virtio
            - name: cloudinitdisk
              disk:
                bus: virtio
      networks:
        - name: default
          pod: {}
        - name: br0net
          multus:
            networkName: mysql8-lan
      volumes:
        - name: mysql8-disk
          dataVolume:
            name: mysql8-dv
        - name: cloudinitdisk
          cloudInitNoCloud:
            userData: |
              #cloud-config
              groups:
                - admingroup: [root,sys]
              hostname: mysql8
              packages:
                - htop
                - net-tools
                - procps
                - curl
                - iputils-ping
                - sudo
                - vim
                - zip
                - unzip
                - mysql-server-8.0
              users:
                - name: devops
                  lock_passwd: false
                  gecos: Dev Ops
                  homedir: /home/devops
                  sudo: ["ALL=(ALL) NOPASSWD:ALL"]
                  shell: /bin/bash
                  passwd: $6$RZCXI/p94Cpu/jb8$gVBd014f5zOXgVpCBtJtN1k1sJu3iDe4NOYcQVj4FQqD0eQFobuuXXXXXXXXXXXXXXXXXXXXeHwtwAqDl.  # mkpasswd -m sha-512 urpasshere
                  groups: users, sudo, admin
                  ssh_authorized_keys:
                    - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHEXXXXXXXXXXXXXXXXXXLw/c7TJSaMYvwlRCmSWC1b8 example1
                    - ssh-ed25519 AAAAC3NzaC1lZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1MK1Y+EeK9yzRY7d example2

                  groups: users, sudo, admin
              write_files:
                - path: /etc/netplan/99-enp2s0.yaml
                  content: |
                    network:
                      version: 2
                      ethernets:
                        enp2s0:
                          dhcp4: no
                          addresses: [10.0.50.42/24]
                          gateway4: 10.0.50.1
                          nameservers:
                            addresses: [10.0.50.15, 8.8.8.8]

              runcmd:
                - netplan apply