Skip to main content

Billing & Usage

The Billing & Subscriptions section lets you monitor resource consumption, manage your subscription plan, add extra capacity, and control payment for your entire organization — all from a single page under Manage Organization → Billing.

Overview Dashboard

Billing overview

The Overview tab shows your current state at a glance:

  • Current Plan — Active plan name and subscription start date
  • Monthly Cost — Total cost broken down as base plan + active add-ons
  • Active Add-ons — Turbo packages currently applied to the organization
  • Resource Usage — Live progress bars for every quota dimension:
    • CPU (cores used / total available)
    • Memory (GiB used / total available)
    • NVMe Storage (GiB used / total available)
    • Pods (count used / plan limit)
    • Public IPv4 (addresses used / plan limit)
    • Object Storage (GB used / plan limit)

The progress bars change color as usage rises: green → yellow → red. A resource shown in red is at or near its limit and may block new deployments.

From the Overview you can also:

  • View Plans — Browse and switch subscription plans
  • Manage Add-ons — Add or remove Turbo capacity packages
  • Manage Payment — Open the Stripe customer portal to update billing details

Subscription Plans

Available plans

Kube-DC offers three subscription plans. All resources are provisioned across your organization's projects on high-performance NVMe storage.

Dev PoolPro PoolScale Pool
Monthly price€19/month€49/month€99/month
Best forSandbox / DevProduction / TeamsHigh Load / VDC
CPU4 vCPU8 vCPU16 vCPU
Memory8 GB24 GB56 GB
NVMe Storage60 GB160 GB320 GB
Object Storage20 GB100 GB500 GB
Dedicated IPv4113
Max Pods100200500
Nested Clusters
BandwidthUnlimited 1Gbit/sUnlimited 1Gbit/sUnlimited 1Gbit/s

All plans include Nested Kubernetes clusters (KubeVirt), unlimited bandwidth, and full platform access with no feature restrictions.


Understanding Resource Quotas

All resources in your plan are shared across all projects in your organization. The quota is applied at the organization level, and any combination of usage across your projects counts toward it.

Example: An organization on the Pro Pool (8 vCPU, 24 GB RAM) with three projects — acme-dev, acme-staging, and acme-prod:

Organization total quota: 8 vCPU  /  24 GB RAM

acme-dev uses: 2 vCPU / 4 GB → remaining:
acme-staging uses: 2 vCPU / 8 GB → remaining:
acme-prod uses: 3 vCPU / 10 GB → remaining:
───── ────
Total used: 7 vCPU / 22 GB → 1 vCPU / 2 GB still available

There is no per-project quota split by default — projects draw from the same shared pool. If one project is idle, another can use all available resources. Organization admins can optionally set per-project limits to prevent one project from consuming everything; see Per-Project Resource Limits.

Burst Capacity

Each plan includes a burst allowance — the ability for your workloads to temporarily use more CPU and memory than the base plan quota, as long as capacity is available on the underlying infrastructure. Burst does not increase your quota; it allows short-term peaks above your reserved baseline.

PlanBurst MultiplierBase CPUMax CPU burst
Dev Pool4 vCPUup to 12 vCPU
Pro Pool8 vCPUup to 16 vCPU
Scale Pool1.5×16 vCPUup to 24 vCPU

Dev Pool has the highest burst ratio because development workloads tend to be bursty and intermittent. Scale Pool has a lower ratio to favor predictability for production loads.

info

Burst applies to CPU and memory. Storage, pods, and public IP quotas are fixed limits with no burst.


Resource Limits for Workloads

When Kubernetes enforces resource quotas across your organization, every running container must declare how much CPU and memory it needs. This is required for the platform to track usage accurately and schedule workloads fairly.

Automatic Defaults

You do not need to manually set resource values on every workload. The platform automatically applies default CPU and memory values to any container that doesn't specify them. These defaults are sized based on your active plan:

Dev PoolPro PoolScale Pool
Default CPU request100m250m500m
Default memory request128 Mi256 Mi512 Mi
Default CPU limit500m500m1 core
Default memory limit512 Mi512 Mi1 Gi
Max CPU per container2 cores4 cores8 cores
Max memory per container4 Gi12 Gi32 Gi
Max CPU per pod4 cores8 cores16 cores
Max memory per pod8 Gi24 Gi56 Gi
Max PVC storage60 Gi160 Gi320 Gi

Requests represent guaranteed resources reserved for your workload. Limits are the maximum a workload can use before it is throttled (CPU) or restarted (memory).

What This Means in Practice

  • A pod deployed without any resource declarations (e.g., a raw Kubernetes deployment with no resources: block) will automatically receive the plan's default request and limit values.
  • KubeVirt virtual machines translate their vCPU and memory settings into pod-level resource values automatically — no manual configuration needed.
  • The max per container cap prevents a single runaway container from consuming your entire organization's quota. If you need a container larger than the plan's max, contact support or upgrade to a higher plan.

When Workloads Are Rejected

Once your organization's quota is fully consumed, new workloads will fail to start with an error such as:

0/3 nodes are available: exceeded quota: plan-quota, requested: requests.cpu=500m, used: requests.cpu=8, limited: requests.cpu=8

To resolve this:

  • Delete unused pods or VMs to free quota
  • Add a Turbo Add-on to expand capacity
  • Upgrade to a higher plan

Turbo Add-ons

Turbo add-ons

Turbo Add-ons let you boost your organization's resources without switching plans. Add-ons are applied to your entire organization and stack — you can add the same package multiple times.

Turbo x1Turbo x2
Monthly price€9/month€16/month
Additional vCPU+2 cores+4 cores
Additional RAM+4 GB+8 GB
Additional Storage+20 GB+40 GB

Example: Scale Pool + 3× Turbo x1 + 2× Turbo x2 = €99 + €27 + €32 = €158/month, providing:

  • CPU: 16 + 6 + 8 = 30 vCPU (plus burst)
  • RAM: 56 + 12 + 16 = 84 GB
  • Storage: 320 + 60 + 80 = 460 GB

This matches the Overview screenshot above where Monthly Cost shows €158.

Adding a Turbo Add-on

  1. Navigate to Manage Organization → Billing → Turbo Add-ons
  2. Click Add Another on the desired package
  3. The add-on is billed immediately and quota is available within seconds

Removing a Turbo Add-on

  1. Navigate to Manage Organization → Billing → Turbo Add-ons
  2. Click Remove 1 on the package you want to reduce
Downgrade Check

Before removing an add-on, ensure your current resource usage fits within the reduced quota. If active workloads exceed the new limit, they will continue running but no new workloads will be schedulable until usage drops below the new quota.


Managing Your Subscription

Subscribing to a Plan

  1. Navigate to Manage Organization → Billing → Available Plans
  2. Click Subscribe on your desired plan
  3. You will be redirected to the Stripe checkout page to enter payment details
  4. After payment, you are returned to the Billing overview. The subscription is active immediately.

Changing Plans

You can upgrade or downgrade at any time from the Available Plans tab.

  1. Click Switch to [Plan Name] on the target plan
  2. Confirm the change in the dialog

On upgrade: The new quota is available immediately. Stripe prorates the billing amount for the current period.

On downgrade: The system checks whether your current resource usage fits within the new plan before allowing the change. If you are over the target plan's limits, you will need to scale down workloads first.

Canceling Your Subscription

  1. Navigate to Manage Organization → Billing → Subscription
  2. Click Cancel Subscription
  3. Confirm in the dialog

Cancellation takes effect at the end of the current billing period. Your subscription enters canceling status and your full resources remain available until the period ends.


Subscription Status

StatusResourcesNew DeploymentsPayment
ActiveFull plan quota✅ AllowedCurrent
TrialingFull plan quota✅ AllowedTrial period
CancelingFull plan quota✅ AllowedUntil period ends
SuspendedMinimal only❌ BlockedPayment failed
CanceledMinimal only, workloads paused❌ BlockedExpired

What Happens When a Subscription Is Suspended

If a payment fails, the subscription moves to suspended:

  1. 7-day grace period — all existing workloads continue running, but new deployments are blocked
  2. After 7 days — if payment is still not resolved:
    • All Deployments and StatefulSets are scaled to zero replicas
    • CronJobs are suspended
    • The organization quota drops to a minimal holding allocation

Original replica counts are saved and restored automatically when you re-subscribe.

Re-subscribing

If your subscription is suspended or canceled, click Subscribe from the Available Plans tab to start a new subscription. All previously running workloads are automatically restored to their original state.


Managing Payment

Click Manage Payment from the Billing Overview to open the Stripe Customer Portal. From there you can:

  • Update payment method — Change credit card or SEPA details
  • Download invoices — Access billing history and PDF receipts
  • View upcoming charges — Preview the next billing cycle
  • Update billing address — Change the address shown on invoices

The Stripe portal opens in the same tab. Click Return in the portal to come back to the Kube-DC console.


Per-Project Resource Limits

By default, all projects share the organization quota with no individual caps. Organization administrators can optionally cap individual projects to prevent a single project from consuming the entire budget.

To set a per-project limit using kubectl:

kubectl apply -f - <<EOF
apiVersion: v1
kind: ResourceQuota
metadata:
name: project-quota
namespace: myorg-dev # Project namespace: {org}-{project}
spec:
hard:
requests.cpu: "2"
requests.memory: "4Gi"
limits.cpu: "4"
limits.memory: "8Gi"
requests.storage: "20Gi"
pods: "50"
EOF

The effective limit for any resource is the lower of the per-project cap and the organization's remaining quota. Removing this quota (via kubectl delete resourcequota project-quota -n myorg-dev) returns the project to the shared pool with no individual cap.

info

Per-project quota management in the UI is planned for a future release. For now, kubectl is the supported method.


Troubleshooting

New pods or VMs fail to start with "exceeded quota"

  • Check the Overview dashboard for which resource is at its limit
  • Delete unused workloads to free capacity, or add a Turbo Add-on

Pods fail to start with "must specify resource limits"

  • This can happen if resource defaults are not yet applied in a newly created project
  • Wait 30–60 seconds for the defaults to propagate and retry
  • If it persists, confirm your organization has an active subscription

Turbo Add-on added but quota did not increase

  • The quota update is near-instant but may take up to 60 seconds to reflect in the Overview
  • Refresh the page; if still not updated, check the subscription status is active

Cannot switch to a lower plan ("usage exceeds target plan")

  • The Overview shows current usage for each resource
  • Scale down or delete workloads until usage falls within the target plan's limits, then retry

IPv4 at 100% — cannot create new LoadBalancer services

  • Dev Pool and Pro Pool include 1 dedicated IPv4 with no burst
  • Scale Pool includes 3 IPv4 addresses
  • Add-ons do not include additional IPv4 addresses; upgrade to Scale Pool for more

Workloads were scaled to zero unexpectedly

  • Check the subscription status in the Overview
  • The organization may have entered canceled state after the 7-day grace period
  • Re-subscribe to restore all workloads automatically