Skip to content

Configurable root disk size on a Machine that boots from a localDisk. #567

Description

@brsmnv

Summary

The MCM IronCore provider can size a root disk only through the VolumeClass name field. Without a VolumeClass, only an image ref is supported, and the disk size is exactly equal to the upstream image size.

With e.g. a Garden Linux image, the disk size is 1.8G. This leaves the VM with a disk too small for kubelet.

Setting a value for rootDisk.size results in a failed validation when volumeClassName is empty:

providerSpec.rootDisk.volumeClassName: Required value: volumeClassName is required

The IronCore API has a field that can be used to propagate the size 'request': localDisk.sizeLimit.

Basic example

Reproduce

MachineClass provider spec with a size and no class:

apiVersion: machine.sapcloud.io/v1alpha1
kind: MachineClass
metadata:
  name: worker
provider: ironcore
providerSpec:
  image: ghcr.io/ironcore-dev/gardenlinux/gardener:2150.7.0-kvm-amd64
  rootDisk:
    size: 20Gi
  # ...

Expected:

apiVersion: compute.ironcore.dev/v1alpha1
kind: Machine
spec:
  volumes:
  - name: root
    localDisk:
      image: ghcr.io/ironcore-dev/gardenlinux/gardener:2150.7.0-kvm-amd64
      sizeLimit: 20Gi

Actual result: the validation error above.

Related code

  • pkg/api/validation/validation.go: would need a change to the validation func.
  • pkg/ironcore/create_machine.go: buildMachineVolumes: needs a branch for rootDisk without volumeClassName

Motivation

Provisioning VMs with a (re-)sized root volume effectively requires a VolumeClass (Ceph). Allowing this will improve the support for IronCore+libvirt.

Context

In our scenario, the goal was to test whether Gardener can bootstrap a cluster when no storage infrastructure (Ceph) is available.

The example spec is generated from gardener-extension-provider-ironcore and the deployment gets stuck. The MachineClass is created but every Create fails on the validation error.

Related PR: ironcore-dev/libvirt-provider#777

  • the libvirt provider currently discards sizeLimit when image is set.
  • the PR bakes in support (in anticipation of this feature:) )

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    • Status
      No status
    • Status
      Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions