Metered Usage and Pricing

(Document status: wip)

A Pricing Table defines the terms under which a given provider is willing to rent its compute resources for running pods. The Pricing Table is typically represented using a Protobuf object encoding the prices for reserving or using certain resources.

resourcetypical usagesuggested/example metrics

cpu

reserve (while application is running)

kube_pod_resource_request{pod, resource=cpu}

memory

reserve (while application is running)

kube_pod_resource_request{pod, resource=memory}

storage

reserve (incl. while application is stopped)

kubelet_volume_stats_available_bytes{namespace}

nvidia.com/gpu(|shared)

reserve

kube_pod_resource_request{pod, resource=nvidia.com/gpu(|.shared)}

apocryph.network/ip

reserve

kube_service_spec_type{namespace, type=NodePort}

kubernetes.io/(in|e)gress-bandwidth

usage

nginx_ingress_controller_nginx_process_(read|write)_bytes_total

The pricing table must encompass all essential billing details for clients, and it might be as straightforward as this:

ResourceDescriptionPrice

CPU

N° of Cores/ N° of vCPUs

$0.0001 VCPU(min/s/ms)

RAM Capacity

Capacity (ex: GB)

$0.00001 GB/(min/s/ms)

Storage

Type (e.g., Block, Object)

$0.00001 GB/(min/s/ms)

GPU (Optional)

Model

$0.0001 per Execution (min/s/ms)

Or it could be split into categories with more detailed information:

Compute Pricing

  • CPU

    ResourceDescriptionNumber of CoresvCPUsModelTEE TypePrice per Unit

    CPU

    Processing power

    Cores

    vCPUs

    Intel, AMD, ARM, ...etc

    Enclaves, CVMs, ..etc

    $0.0001 VCPU(min/s/ms)

  • Ram

    ResourceDescriptionCapacityPrice

    RAM

    Memory capacity

    Capacity (ex: 1GB)

    $0.00001 GB/(min/s/ms)

Storage Pricing

ResourceDescriptionCapacityStorage TypePrice per Unit

Storage

Storage resources

Capacity (ex: 10GB)

Block, Object, ...etc

$000001 per GB(min/s/ms)