Sole-Tenant Nodes in Google Cloud: Dedicated Servers for Licensing, Compliance and Isolation

Sole-Tenant Nodes in Google Cloud: Dedicated Servers for Licensing, Compliance and Isolation

A deep, plain-English guide to how sole-tenant nodes work: node types, templates, groups, placement rules, maintenance behavior, licensing, cost, security and the patterns that keep dedicated capacity efficient.

Picture an apartment building where most residents share walls, hallways, and elevators with strangers. Now picture renting an entire floor. You still live in the same building and use the same front door, but nobody you do not know is on your floor. You decide who moves in, how the rooms are arranged, and you can tell your landlord exactly which floor is yours. Sole-tenant nodes are that rented floor in Google Cloud: a whole physical server reserved for your virtual machines and nobody else’s.

1What Sole-Tenant Nodes Are and Why They Exist

A sole-tenant node is a physical Compute Engine server dedicated to the virtual machines of a single project, or of the projects you choose to share it with.

Normally, Compute Engine is multi-tenant. That means many customers’ virtual machines run side by side on the same physical server, separated by strong software isolation. This is efficient and cheap, and for most workloads it is completely sufficient. But some organizations have needs that sharing cannot meet. They may have software licenses tied to physical servers, compliance rules that demand physical separation from other customers, or performance requirements that cannot tolerate any outside activity on the same hardware.

Sole-tenant nodes solve these problems. When you create one, Google sets aside an entire physical host in a zone for you. Only your virtual machines, the ones you choose to place there, run on it. You still use the normal Compute Engine tools, the same images, disks, networks, and APIs. The difference lies underneath: the hardware is yours alone.

Simple Analogy

A regular virtual machine is like a seat on a shared bus. A sole-tenant node is like chartering the whole bus. You pay for the entire bus whether it is full or empty, but you control who rides, and nobody else’s passengers are on board.

The three reasons people choose it

The first reason is licensing. Some commercial software is licensed by physical cores or physical sockets rather than by virtual machine. To use such licenses honestly and cheaply, you need to know and control exactly which physical server your workload runs on. The second reason is compliance and security isolation. Some regulations, contracts, or internal policies require that regulated workloads not share hardware with other customers. The third reason is performance isolation. Even well-managed shared hosts can occasionally show a noisy neighbor effect, where another tenant’s heavy activity affects your latency. With dedicated hardware, that effect from outside tenants disappears.

1 owner
Only your VMs run on the physical server
Same APIs
Normal Compute Engine disks, networks and images
Pay per node
You pay for the whole server, not per VM
i
Good to Know

Sole-tenancy is a placement feature, not a different kind of virtual machine. Your VMs are ordinary Compute Engine instances. What changes is where they are allowed to land and who else may land there.

2Core Concepts You Must Know Cold

Sole-tenancy has a compact vocabulary, and every later chapter assumes you know these terms.

Each concept below is explained by what it is, why it exists, and where you will meet it. Take a moment with each card, because confusing two of them is the most common source of design mistakes.

Term 1

Sole-tenant node

One dedicated physical server in a zone. It has a fixed number of virtual CPUs and a fixed amount of memory that your VMs share among themselves.

Term 2

Node type

The hardware shape of a node, such as its processor family, vCPU count and memory size. The type decides which VM families can run on it.

Term 3

Node template

A reusable blueprint that records the node type, labels and policies. You create it once and use it to build node groups.

Term 4

Node group

A set of sole-tenant nodes in one zone built from the same template. It is the unit you resize, share and schedule against.

Term 5

Node affinity

Rules on a VM that say which nodes it may or may not run on. Affinity is how a VM finds its way onto dedicated hardware.

Term 6

Affinity label

A key and value pair attached to nodes and matched by VM affinity rules. Labels let you group nodes by purpose, such as a licensing pool.

Term 7

Maintenance policy

The rule for what happens to VMs when Google must update the physical host: move them live, restart them in place, or move them inside the group.

Term 8

Overcommit

An optional setting on supported setups that lets total VM vCPUs on a node exceed its physical capacity, relying on idle time between VMs.

Simple Analogy

Think of a hotel floor. The node type is the floor plan, the template is the architect’s drawing, the node group is the set of floors you rent, and node affinity is the guest list that says which guests may stay on which floor.

Node versus virtual machine

A node is not a virtual machine. You cannot log into a node, install software on it, or run programs directly on it. A node is a container for VMs: a slice of physical hardware with a capacity limit. Your virtual machines are what run your applications, and they occupy a portion of the node’s capacity.

!
Common Misconception

Some beginners think a sole-tenant node is a bare metal server that gives raw hardware access. It is not. VMs still run on a hypervisor, and you manage them as VMs. If you need bare metal access, that is a different product family.

3Architecture and Components

The design is simple: a template creates a group, the group holds nodes, and VMs are matched to nodes by rules.

The architecture has three layers. At the bottom are the physical servers, which Google owns and operates in its data centers. In the middle is the grouping layer, made of templates and node groups, which you configure. At the top are your virtual machines, which carry scheduling rules that decide whether they land on shared hosts or dedicated nodes.

flowchart TD
  T["Node Template: type, labels, policies"] --> G["Node Group in one zone"]
  G --> N1["Node 1 physical server"]
  G --> N2["Node 2 physical server"]
  G --> N3["Node 3 physical server"]
  V1["VM with node affinity rule"] --> N1
  V2["VM with node affinity rule"] --> N1
  V3["VM with node affinity rule"] --> N2
  V4["VM with node affinity rule"] --> N3
  P["Project and Organization"] -.owns or shares.-> G
        
FIG 1 — Template, group, nodes and the VMs placed on them

Everything is zonal

A node group lives in a single zone. Physical servers cannot span zones, so neither can a group. This has a direct consequence for resilience: if you want to survive the loss of a zone, you need node groups in more than one zone, with copies of your workload in each.

What stays the same as normal Compute Engine

Everything outside placement works as usual. VMs on sole-tenant nodes attach persistent disks, join your Virtual Private Cloud networks, use the same firewall rules and routes, sit behind the same load balancers, and use the same images. This means moving a workload onto dedicated hardware usually requires no change to the application at all.

Unchanged

Networking

VPC networks, subnets, firewall rules and load balancers behave exactly as they do for ordinary VMs.

Unchanged

Storage

Persistent disks and images attach normally. Disks are not stored on the node itself.

Unchanged

Identity and access

Service accounts, IAM roles and audit logging apply as usual to the VMs.

Changed

Placement and billing

VMs are pinned to your nodes by rules, and billing moves from per-VM to per-node.

Simple Analogy

Renting a private floor in a building does not change the building’s plumbing, power, or elevators. Those are shared infrastructure. What you changed is who occupies the floor and how you are billed for it.

4How Placement Works: Node Affinity in Depth

Creating a node does not move any VM onto it. A VM lands on a node only when its affinity rules say so.

This is the idea beginners miss most often. If you create a node group and then create an ordinary VM, that VM goes to a shared host as always. The node group sits empty and you pay for it. To use dedicated nodes, each VM must carry a node affinity rule that points at them.

Labels and the two rule types

Every node carries labels. Some are applied automatically, including labels that identify the node group name and the individual node name. You can add your own through the node template, for example a label that marks a pool as holding a particular licensed database. A VM’s affinity rule then states either that it must run on nodes with a given label, or that it must not run on nodes with a given label. The first style is used to pin workloads to dedicated hardware. The second style is used to keep a workload away from certain nodes.

sequenceDiagram
  participant U as Operator
  participant API as Compute Engine API
  participant S as Scheduler
  participant N as Node Group
  U->>API: Create VM with node affinity label
  API->>S: Find nodes matching the label
  S->>N: Check free vCPU and memory
  alt A matching node has room
    N-->>S: Capacity available
    S-->>API: VM placed on that node
  else No node has room
    S-->>API: Placement fails or autoscaler adds a node
  end
  API-->>U: VM running or error returned
        
FIG 2 — How a VM finds a dedicated node

What the scheduler considers

1

Match the labels

Only nodes whose labels satisfy the VM’s affinity rule are candidates. All others are ignored.

2

Check compatibility

The VM’s machine family must be compatible with the node type. A node built for one processor family cannot host VMs of an incompatible family.

3

Check free capacity

The node must have enough unused vCPUs and memory for the VM. The VM’s size cannot exceed the room left on a single node.

4

Place or fail

If a node qualifies, the VM starts there. If none do, creation fails unless the node group can grow by autoscaling.

Designing a label strategy

Labels are cheap and powerful, so plan them. A good scheme separates pools by purpose, environment, or license. For instance, one label might identify production database nodes, another might identify nodes holding a specific licensed product. Because VMs pick nodes by label, a clean scheme lets you grow a pool by adding nodes without touching any VM definitions.

!
Common Mistake

Forgetting the affinity rule and expecting VMs to land on dedicated nodes automatically. Without the rule they run on shared hosts, while the empty nodes quietly bill you.

5Node Types and Right-Sizing

The node type decides what hardware you rent, so it is the first and most expensive choice you make.

Node types are named by their family, vCPU count, and memory in gigabytes. For example, a name that reads as the N1 family with ninety-six vCPUs and six hundred twenty-four gigabytes of memory describes the whole server, not one VM. Google offers node types across several general-purpose, compute-optimized, and memory-optimized processor families, and the list changes over time. Always confirm which node types exist in your target zone, because availability differs by zone.

Match the family to the workload

Family

General purpose

Balanced CPU and memory. A sensible default for mixed estates, application servers and databases of moderate size.

Family

Compute optimized

High per-core speed. Suited to game servers, high-performance computing and latency-sensitive processing.

Family

Memory optimized

Very large memory per core. Suited to in-memory databases, large analytics engines and enterprise applications with huge working sets.

Family

Accelerator and storage variants

Some node types include local storage or graphics processors. Check availability and billing rules before planning around them.

Why VM shape matters as much as node shape

A node is a fixed pool. Imagine a node with ninety-six vCPUs. If your VMs each need sixty-four vCPUs, only one fits on that node and thirty-two vCPUs are stranded, because no second VM can use the leftover. If your VMs need thirty-two vCPUs each, three fit perfectly with nothing wasted. This is the bin packing problem, and choosing VM sizes that divide evenly into the node size is one of the best ways to control cost.

Node sizeVM sizeVMs that fitWasted vCPUs
96 vCPUs32 vCPUs30
96 vCPUs48 vCPUs20
96 vCPUs64 vCPUs132
96 vCPUs40 vCPUs216
96 vCPUs16 vCPUs60
Simple Analogy

Packing a suitcase is easier with similar-sized items. Large awkward bags leave gaps no other bag can fill. Choosing VM sizes that divide into the node leaves no wasted space, just as packing evenly sized boxes fills a truck.

i
Practical Tip

Before buying nodes, list every VM you plan to place, round each to a realistic size, and test how many nodes the total requires. A short spreadsheet exercise can save a large recurring bill.

6Node Templates, Node Groups and Autoscaling

Templates define what a node is. Groups define how many you have and how they grow.

The node template

A node template records the choices that should be uniform across a pool: the node type, the affinity labels, and certain policies. Because the template is a separate object, you can reuse it to create many groups, in many zones, with identical properties. Templates cannot be edited after creation. If you need different properties, you create a new template and a new group. This keeps pools predictable and auditable.

The node group

The node group is where you decide size. You can set a fixed number of nodes, or you can let the group scale. You can also choose which projects may use the group, and you set the maintenance policy and, where relevant, the maintenance window at the group level.

Autoscaling modes

ModeBehaviorGood for
OffThe group stays at the size you set. You add and remove nodes manually.Fixed licensed pools where the number of physical servers must be controlled exactly
OnNodes are added when VMs cannot be placed and removed when nodes are empty, within minimum and maximum limits.Variable workloads such as development and test fleets
Only scale outNodes are added when needed but never removed automatically.Pools where you want growth to be automatic but shrinkage to be a deliberate decision

When autoscaling is enabled, you set a minimum and a maximum number of nodes. The maximum is an important safety valve because every node costs money whether or not VMs are on it. Autoscaling reacts to placement demand, meaning it adds a node when a new VM cannot fit anywhere, not to CPU usage inside the VMs. It also removes nodes only when they hold no VMs, so scale-in depends on how your VMs are spread across nodes.

flowchart LR
  A["New VM requested with node affinity"] --> B{"Room on existing node?"}
  B -- Yes --> C["Place VM on that node"]
  B -- No --> D{"Autoscaling allows growth?"}
  D -- Yes --> E["Add a node up to the maximum"]
  E --> C
  D -- No --> F["Request fails with no capacity"]
  C --> G{"Node later empty?"}
  G -- Yes --> H["Scale in if mode allows removal"]
        
FIG 3 — The autoscaling decision path
Simple Analogy

Autoscaling a node group is like a hotel that opens another floor only when a guest arrives and every existing room is full, and closes a floor only when it is completely empty. It reacts to bookings, not to how busy the rooms are inside.

!
Common Mistake

Leaving autoscaling on for a pool tied to per-server licenses. A new node means a new physical server, which can trigger new license obligations you did not plan for. Fixed pools are safer for such cases.

7Maintenance Policies and Host Events

Physical servers need updates, and your maintenance policy decides how your VMs experience them.

Google periodically performs maintenance on host machines. On shared hosts, VMs are usually live migrated, meaning moved to another host while still running, with only a brief pause. With sole-tenant nodes you have a choice, because moving a VM to a different physical server can break a licensing or isolation promise. Three policies exist, and picking the right one is a core design decision.

Policy 1

Default

VMs live migrate to another sole-tenant node when maintenance is needed. This gives the best uptime but means a VM may end up on a physical server different from the original.

Policy 2

Restart in place

VMs are stopped, the host is updated, and the VMs restart on the same node. Downtime occurs, but each VM stays on the same physical server.

Policy 3

Migrate within node group

VMs live migrate to other nodes inside the same group, never leaving the pool. This keeps uptime and stays within a fixed set of servers, but needs spare capacity in the group.

Choosing between them

NeedBest policyTrade-off
Maximum uptime, no licensing tied to a specific serverDefaultVM may move to a server outside your group
Licenses tied to a specific physical serverRestart in placeBrief downtime during maintenance
Fixed server pool and high uptimeMigrate within node groupRequires spare capacity and careful sizing

Why spare capacity matters

For a policy that moves VMs inside the group, there must be room to move them into. If every node is full, maintenance has nowhere to send the VMs. Plan a buffer, such as an extra node, so that taking one node out of service for maintenance still leaves enough room for its VMs elsewhere. Also check the current documentation for how autoscaling and maintenance windows interact with each policy before combining them.

Simple Analogy

When a hotel renovates a room, it can move guests to another hotel, ask them to leave and come back to the same room later, or move them to a spare room in the same building. Each option trades convenience against sameness, just like the three maintenance policies.

i
Practical Tip

Treat maintenance behavior as a design input, not a setting to discover later. Ask the licensing and compliance owners early which of the three policies they can accept.

8Bring Your Own License and Hardware Visibility

Licensing is the most common business reason to adopt sole-tenant nodes, and it is easy to misunderstand.

Some enterprise software, including certain operating systems, databases, and middleware, is licensed by counting physical cores or physical processors rather than by counting virtual machines. If you run such software on shared hosts in a public cloud, you may be unable to prove which physical server it ran on, and some license terms simply do not allow it. If you already own licenses, you may want to bring them to the cloud instead of buying new ones.

How sole-tenancy helps

On a sole-tenant node, the physical server is dedicated and identifiable. You know how many physical cores the node has, and you know all the VMs running on it are yours. That allows many organizations to count licenses against the dedicated server instead of against each virtual machine. Where license rules also care about the processor type, the node type tells you the processor family, and Google provides visibility into hardware details that support license audits. Because the details of these tools evolve, confirm the current options in the official documentation.

1

Read the license terms carefully

Determine whether the vendor licenses by core, by socket, by VM, or by user, and whether dedicated cloud hardware is explicitly allowed.

2

Choose the node type to match

Pick a node type whose processor family and core count align with the license metric, and confirm with the vendor or your licensing advisor.

3

Pin the licensed workloads

Use affinity labels so the licensed software runs only on the dedicated pool and nowhere else.

4

Choose a stable maintenance policy

Use restart in place or migrate within the group so VMs remain on a known set of servers.

5

Record and audit

Keep records of which VMs ran on which nodes and when, using audit logs and inventory exports, so you can answer a vendor audit confidently.

“A license you cannot prove you are using correctly is a liability. A dedicated server turns a guess into a record.”

Fixed pools versus growing pools

For per-server licensing, a fixed-size group with a stable maintenance policy is easiest to defend. Every new node is a new physical server and may need an additional license. Plan growth as a deliberate licensing decision rather than an automatic reaction to load.

!
Important Reminder

This guide explains technology, not legal terms. Whether a given license may run on a given cloud setup is a contract question. Always confirm with the software vendor or a licensing specialist.

9Compliance, Security Isolation and Performance Isolation

Dedicated hardware removes some risks and some uncertainties, but it is not a complete security solution.

Compliance drivers

Some regulations, customer contracts, or internal risk policies state that sensitive workloads must not share physical hardware with workloads from other organizations. Sole-tenant nodes let you satisfy that specific requirement. The requirement is often written into financial, healthcare, government, and defense-related frameworks or into contracts with large customers. Note that sole-tenancy meets the physical separation clause only; frameworks have many other requirements, such as access control, encryption, and audit, which you must handle separately.

Security isolation

Shared hosts are well isolated by the hypervisor, and Google invests heavily in that boundary. Still, some organizations want a stronger story: the only workloads that share the hardware are their own. This reduces the exposure to a class of risks known as side-channel attacks, where one tenant tries to learn information about another by observing shared hardware behavior. Dedicated hardware removes outside tenants from that picture, although your own VMs on the same node still share it with each other.

!
Common Misconception

Sole-tenancy does not isolate your own workloads from each other. If you place a sensitive VM and an untrusted VM on the same node, they still share that server. Use affinity labels to separate trust levels onto different nodes.

Performance isolation

Latency-sensitive systems, such as trading platforms, real-time bidding engines, and gaming back ends, may dislike any variation in performance. With outside tenants gone, the main sources of variation left are your own workloads. You can then control contention by deciding how many VMs share each node, leaving headroom, and separating heavy workloads from sensitive ones.

Benefit 1

Physical separation

No other customer’s VMs run on your servers.

Benefit 2

Predictable neighbors

All VMs on a node are yours, so you control every source of contention.

Benefit 3

Clear audit story

You can show exactly which servers hold regulated workloads.

Benefit 4

Stronger separation of trust zones

Dedicated pools per trust level keep sensitive and untrusted VMs apart.

Combining with other protections

Sole-tenancy works alongside, not instead of, other controls. Encryption, Shielded VMs, careful identity design, private networking, and organization policies all remain essential. Where regulations require customer-managed encryption keys or confidential computing, check compatibility between those features and your chosen node type before committing to a design.

Simple Analogy

Renting a private floor means no strangers share your hallway, which is a real benefit. But you still need locks on your office doors, because the people on your own floor may not all be allowed in every room.

10Networking, Storage and Everything That Stays the Same

A pleasant surprise: almost nothing about the surrounding architecture changes when you adopt sole-tenancy.

VMs on sole-tenant nodes belong to normal subnets in your Virtual Private Cloud. They receive internal addresses, can have external addresses, obey the same firewall rules, and can be targets of the same load balancers and managed instance groups. This means existing network designs, security tooling, and monitoring continue to work.

Storage behavior

Persistent disks are network-attached and independent of the node. If a VM moves to another node, its disks follow it without data loss. Local disks, where supported by the node type, live on the physical server and have different durability behavior, so treat them as temporary scratch space unless you have a clear plan. Image sources, snapshots, and backups work as in standard Compute Engine.

Managed instance groups and containers

Instance templates can include node affinity, so a managed instance group can create and heal VMs directly onto your dedicated nodes. Google Kubernetes Engine can also place node pools on sole-tenant nodes, so a whole container platform can run on dedicated hardware. In both cases, the affinity rule is the bridge between the workload and the dedicated pool.

flowchart LR
  U["Users"] --> LB["Load Balancer"]
  LB --> MIG["Managed Instance Group with node affinity"]
  MIG --> NG["Sole-Tenant Node Group"]
  NG --> PD["Persistent Disks"]
  NG --> VPC["VPC Subnet and Firewall Rules"]
  VPC --> DB["Private Services and Databases"]
        
FIG 4 — Standard Google Cloud building blocks around dedicated nodes
AreaOn shared hostsOn sole-tenant nodes
NetworkingVPC subnets and firewall rulesIdentical
Persistent disksNetwork-attached, independent of hostIdentical
Load balancingSupportedSupported
Instance groupsSupportedSupported with node affinity in the template
Billing unitPer VM resourcesPer node
PlacementChosen by GoogleChosen by your affinity rules
i
Practical Tip

When migrating an existing workload to sole-tenant nodes, use an instance template with the affinity rule baked in. That way every replacement VM created during healing or scaling lands on the right pool without manual steps.

11Access Control, Sharing Across Projects and Governance

Dedicated capacity is expensive, so governance is as important as technology.

Who may create nodes

Creating templates and groups requires specific permissions on Compute Engine resources. Because a node group represents a recurring cost, organizations commonly restrict these permissions to a small platform or infrastructure team, while allowing application teams to create VMs that target approved pools. This separates the people who buy capacity from the people who use it.

Sharing a node group across projects

By default a node group serves only the project that owns it. Sharing settings let the owner allow other projects to place VMs on the group. You can share with specific projects or across the organization, depending on the setting. Sharing is powerful because it lets many teams fill the same nodes, which raises utilization and lowers cost per team. It also needs clear rules about who pays, who sets priorities, and who can see what.

Model 1

Single-project group

Simplest model. One project owns and uses the pool. Good for a single regulated application.

Model 2

Selected-project sharing

The owner names specific projects that may use the pool. Good for a small number of related teams.

Model 3

Organization-wide sharing

Any project in the organization may use the pool. Good for a central platform team offering shared dedicated capacity.

Chargeback and visibility

When several teams share nodes, cost allocation becomes a question. The node cost lands on the owning project, while VM usage belongs to the teams. Use labels on VMs and billing exports to estimate each team’s share of node usage, and agree on a chargeback rule such as a share proportional to vCPU hours consumed.

Policy guardrails

Organization policies and approval processes can prevent accidental creation of expensive node groups. Combine these with budget alerts so unexpected growth is noticed quickly. Audit logs record who created or resized node groups and which VMs were placed on them, which supports both security review and licensing evidence.

Simple Analogy

A company that rents a whole office floor usually lets facilities management decide the lease, while teams simply request desks. Node group governance mirrors that split: a small group buys the floor, and many teams use the desks.

!
Common Mistake

Sharing a node group organization-wide without chargeback. One team’s large VMs can fill the pool, forcing everyone else to ask for new nodes, with nobody feeling responsible for the bill.

12The Cost Model

You pay for the node, not for the VMs, and that changes how you think about efficiency.

On shared hosts, you pay for the vCPUs and memory of each VM while it runs. On sole-tenant nodes, you pay for all the vCPUs and memory of the node for as long as the node exists, regardless of how many VMs run on it or whether any run at all. Google also applies a sole-tenancy premium on top of the node’s normal price, and it has historically been around ten percent. VMs placed on the node carry no separate compute charge. Discounts such as sustained use and committed use arrangements can apply to node usage. Always check the official pricing page for the current premium and discount rules, since these details can change.

Whole node
Billed for all vCPUs and memory, used or not
Premium
A sole-tenancy premium applies on top of base price
Discounts
Committed and sustained use may reduce cost

Utilization is everything

If a node is ninety percent filled with VMs, you pay a small amount for the unused tenth. If it is thirty percent filled, you pay for seventy percent of nothing. So the central cost metric is node utilization, the share of node vCPUs and memory actually assigned to VMs. Teams that treat sole-tenancy like shared VMs, spinning up one node per small workload, often discover very low utilization and bills that surprise them.

Cost Advantages

  • Existing licenses may be reused, avoiding new license purchases
  • Predictable monthly cost for a fixed pool
  • Committed use discounts can lower steady-state cost
  • High utilization lowers cost per VM
  • Consolidating many small VMs onto few nodes simplifies planning

Cost Risks

  • Paying for idle capacity on partly filled nodes
  • Sole-tenancy premium on top of normal pricing
  • Stranded vCPUs from poor bin packing
  • Spare capacity required for maintenance policies
  • Forgotten empty node groups still bill

Practical cost levers

Lever 1

Pack tightly

Choose VM sizes that divide evenly into the node, and fill nodes before adding new ones.

Lever 2

Share the pool

Let several teams use one pool so unused capacity in one team’s share is used by another.

Lever 3

Commit for the steady base

Use committed use discounts for the nodes you are certain to need all year.

Lever 4

Delete idle groups

Review node groups regularly and remove any that no longer hold workloads.

Simple Analogy

Renting a whole apartment building floor makes sense if you fill most rooms. If only two of ten rooms are used, you are paying a lot for empty space. The rent is the same whether the rooms are full or empty, so filling them is the way to save money.

13Capacity Planning and Bin Packing

Because nodes are fixed-size, planning capacity is a puzzle worth solving carefully.

Capacity planning for sole-tenant nodes combines three considerations: the size of your VMs, the size of the node, and the buffer you need for maintenance and growth. Doing the arithmetic on paper before ordering nodes is cheap, and mistakes are expensive.

1

Inventory the workloads

List every VM that must run on dedicated hardware, with its vCPU and memory need, and its growth outlook.

2

Standardize VM sizes

Round workloads to a small set of sizes that divide the node evenly. Fewer shapes mean tighter packing.

3

Choose the node type

Select the node whose vCPU to memory ratio matches your VMs, so neither resource is left unused.

4

Compute the node count

Divide total demand by node capacity, then round up. Remember that memory and vCPUs both limit placement.

5

Add the buffer

Add capacity for maintenance migrations, failures, and expected growth, according to the policy you chose.

The two-dimensional trap

Each node has both a vCPU limit and a memory limit. A node may run out of memory long before it runs out of vCPUs if your VMs are memory-heavy, and the reverse is true for CPU-heavy VMs. Choose the node type so the ratio of memory to CPU on the node resembles the ratio in your VMs. If your VMs use a lot of memory per vCPU, a memory-optimized node type will pack them much better than a general-purpose one.

SituationWhat happensRemedy
VMs are memory-heavy on a CPU-balanced nodeMemory runs out first, leaving CPUs strandedUse a memory-optimized node type
VMs are CPU-heavy on a memory-rich nodeCPUs run out first, leaving memory strandedUse a compute-optimized node type
Many odd-sized VMsGaps appear that no VM can fillStandardize VM sizes
No buffer for maintenanceMigrations have nowhere to goAdd an extra node or choose a restart policy
i
Practical Tip

Review utilization monthly. Capacity plans drift as workloads grow or shrink, and a quick monthly check catches both stranded capacity and impending shortages.

14Operations: Monitoring, Logging and Lifecycle

Running dedicated nodes well means watching both the nodes and the VMs on them.

Operational visibility has two layers. The node layer answers questions about capacity: how full is each node, which VMs are on it, and is there room for more. The VM layer answers the usual questions about application health. Both are needed because a node can be healthy while a VM on it is struggling, and the reverse.

What to watch

Capacity

Allocated vCPU and memory

Shows how much of each node is committed to VMs, revealing stranded or exhausted nodes.

Capacity

VM count per node

Shows how evenly VMs are spread and whether any node holds too many critical workloads.

Events

Maintenance events

Shows when hosts are being updated and which VMs were moved or restarted.

Audit

Admin activity logs

Record who created, resized or deleted templates, groups and nodes, and where VMs were placed.

Cost

Billing exports

Show node spend over time and allow utilization based cost reviews.

Alerting that helps

Alert when a node group approaches full capacity, because the next VM placement will fail or force autoscaling. Alert on unexpected node count growth, which can signal a runaway deployment. Alert on upcoming maintenance events for pools with strict licensing. Treat these as capacity signals separate from application health signals.

Lifecycle management

Node templates are immutable, so changes mean new templates and new groups. A typical change process creates the new group, moves workloads over using updated affinity, validates, then removes the old group. Because VMs have to be stopped and restarted to change their affinity, plan these moves in maintenance windows and test the process in a lower environment first.

Simple Analogy

A building manager watches both the occupancy of the floors and the condition of each office. A full floor is a capacity problem, a broken air conditioner is a health problem. You need to watch both kinds of signal.

!
Common Mistake

Monitoring only application metrics. Capacity trouble then appears suddenly, as a failed VM creation during an incident, exactly when you most need to add capacity.

15Design Patterns and Anti-Patterns

A few well-known patterns solve most sole-tenancy problems, and a few traps repeat across organizations.

Patterns that work well

Licensed pool

A fixed-size node group dedicated to a licensed product. Affinity labels pin only that product to the pool, maintenance uses a stable policy, and growth is a deliberate decision tied to license purchases.

Regulated enclave

A separate node group for workloads under strict regulation, kept apart from general workloads by labels. Auditors can see exactly which servers hold regulated data.

Trust-tier separation

Different node groups for different trust levels, so a sensitive service never shares a server with a less trusted one, even within the same organization.

Shared platform pool

A central team runs one large, shared node group and offers it to many projects. High utilization lowers cost per team, and chargeback keeps usage fair.

Burst on shared, base on dedicated

Run the steady base load on dedicated nodes, perhaps with committed use discounts, and let non-regulated bursts go to ordinary shared VMs. This keeps dedicated capacity small and efficient.

Anti-patterns to avoid

ANTI-PATTERN-01 Avoid
Problem

A separate node group is created for every small application, each with only a few VMs.

Why It’s Harmful

Every node bills in full, so lightly used nodes waste money. Dozens of half-empty nodes can cost many times what a few well-filled nodes would.

Correct Approach

Consolidate compatible workloads into shared pools, separating only where compliance or trust really demands it.

ANTI-PATTERN-02 Avoid
Problem

Node groups with autoscaling enabled are used for per-server licensed software.

Why It’s Harmful

Every automatic new node is a new physical server and can create unplanned license liabilities.

Correct Approach

Use fixed-size groups for per-server licensing and increase size only after a conscious licensing decision.

ANTI-PATTERN-03 Avoid
Problem

Mixing sensitive and untrusted VMs on the same node because both are inside the same dedicated group.

Why It’s Harmful

The dedicated group protects you from outside customers, not from your own workloads. Mixed trust levels on one server defeat the purpose of isolation.

Correct Approach

Separate trust tiers using distinct labels and distinct node groups, and enforce the separation through affinity rules.

ANTI-PATTERN-04 Avoid
Problem

A single-node group is used for a critical workload, with no spare capacity and a migration-based maintenance policy.

Why It’s Harmful

Maintenance has nowhere to move VMs, and a node failure takes the workload down. Resilience is absent.

Correct Approach

Use at least two nodes, ideally across zones, with spare capacity matching your maintenance policy.

16Sole-Tenant Nodes Compared with Other Options

Dedicated hardware is one option among several, and each answers a different need.

Google Cloud offers multiple ways to get isolation, control, or special hardware. Understanding how they differ prevents you from buying a more expensive option than your requirement needs.

OptionWhat you getYou manageBest for
Standard shared VMsVMs on shared physical hostsVMs onlyMost workloads, lowest cost
Sole-tenant nodesDedicated physical host running your VMsVMs and node pool sizingPer-server licensing, physical separation, predictable neighbors
Bare metal offeringsDirect hardware access without a hypervisor layer for your workloadFull machineWorkloads needing raw hardware access or specialized software stacks
Confidential VMsEncrypted memory while in use on shared hostsVMsProtecting data in use from the host
Shielded VMsVerified boot integrity on shared hostsVMsDefending against rootkits and boot tampering
VMware or specialized platform servicesManaged dedicated environments for specific platformsThe guest platformLifting specific virtualization stacks to the cloud

How to choose

Start with the requirement, not the product. If the requirement is protection of data in memory, Confidential VMs may already satisfy it at no hardware dedication cost. If the requirement is boot integrity, Shielded VMs answer it. If the requirement is physical separation or per-server license counting, sole-tenant nodes are the natural fit. If the requirement is raw hardware access, a bare metal offering is the closer match. These can also be combined, so a sole-tenant design may add Shielded VMs for boot protection.

Sole-Tenancy Advantages

  • Physical separation from other customers
  • Server-level visibility for license counting
  • Controlled placement and maintenance behavior
  • Same tools and APIs as ordinary VMs
  • Option to share capacity across projects

Sole-Tenancy Trade-offs

  • Pay for whole nodes, used or not
  • Sole-tenancy premium on base price
  • Capacity planning burden shifts to you
  • Nodes are zonal, so resilience needs multiple groups
  • Not a bare metal or raw hardware solution
Simple Analogy

Shared VMs are shared apartments. Sole-tenant nodes are a private apartment you furnish yourself. Bare metal is a private house where you can knock down walls. Choose the smallest home that satisfies your actual needs.

17Best Practices and Common Mistakes

A short checklist separates efficient dedicated pools from expensive, half-empty ones.

Best practices

Practice 1

Start from the requirement

Confirm that licensing, compliance or performance truly needs dedicated hardware before buying nodes.

Practice 2

Design labels deliberately

Use a clear label scheme so pools can grow without changing VM definitions.

Practice 3

Standardize VM sizes

Choose sizes that divide the node evenly to minimize stranded capacity.

Practice 4

Match policy to license

Choose the maintenance policy that your license and uptime needs can both accept.

Practice 5

Use two or more zones

Spread critical workloads across node groups in different zones for resilience.

Practice 6

Bake affinity into templates

Put node affinity into instance templates so healing and scaling always target the right pool.

Practice 7

Monitor utilization

Track node fill and set alerts for near-full and unexpectedly growing groups.

Practice 8

Govern and charge back

Restrict who can create nodes and attribute shared node cost to the teams using it.

Common mistakes

!
Mistake 1

Creating nodes and never placing VMs on them. Without affinity rules, VMs land on shared hosts while the nodes bill silently.

!
Mistake 2

Choosing the default maintenance policy for a per-server license. VMs may move to a different physical server and break the license assumption.

!
Mistake 3

Ignoring zone availability. A node type or quota may not be available in the zone you want, and discovering that late delays projects.

!
Mistake 4

Planning only for steady state. Without a buffer for maintenance and growth, the first migration event or deployment surge fails.

!
Mistake 5

Assuming sole-tenancy solves every security requirement. It addresses physical separation only. Encryption, identity and network controls still apply.

i
Habit Worth Building

Hold a short quarterly review of every node group: purpose, utilization, owner, and renewal of discounts. Pools without a clear owner and purpose are the first candidates for removal.

18Real-World and Industry Scenarios

Seeing how organizations combine the pieces makes the concepts concrete.

Enterprise database migration with existing licenses

A large company runs a commercial database licensed by physical cores in its own data center. Moving to the cloud on shared hosts would mean buying new licenses. The team instead builds a fixed node group with a node type matched to the license, pins the database VMs with affinity labels, and uses a stable maintenance policy. Existing licenses are reused, and the migration saves a major purchase.

Financial services regulated workloads

A bank has a policy that systems handling customer account data must not share hardware with other companies. The bank creates a dedicated regulated enclave node group, restricts it with organization policies, and logs all placements for auditors. Less sensitive systems stay on ordinary shared VMs to keep costs under control.

Healthcare data processing

A healthcare provider processes patient records and wants a clear separation story for its compliance team. A dedicated node group, combined with encryption and strict identity controls, forms a documented boundary. The team uses trust-tier labels so analytics workloads never share servers with systems of record.

Latency-sensitive trading or bidding platform

A firm running a real-time bidding engine saw occasional latency variation that it suspected came from neighboring workloads on shared hosts. Moving the engine onto compute-optimized sole-tenant nodes gave predictable neighbors. The team controls contention by limiting how many VMs share each node.

Game server hosting

A game studio needs consistent per-core performance during peak hours. It runs game servers on dedicated compute-optimized nodes, using autoscaling to add nodes as new matches begin and removing empty nodes afterwards. Cost stays tied to demand while performance stays predictable.

Software vendor hosting customer environments

A software vendor hosts separate environments for large customers who insist on dedicated hardware. Each customer gets a node group, labeled and billed to its own project. Contracts reference the physical separation, and the vendor can prove it with audit logs.

i
Pattern to Notice

In every scenario, dedicated nodes serve one clear requirement, licensing, compliance or performance, while everything else stays on cheaper shared infrastructure.

19Resilience, High Availability and Disaster Recovery

Dedicated hardware does not make a workload more available; design decides that.

A node is a single physical server, and a node group lives in a single zone. If you put a critical workload on one node, its availability depends on that server and zone. Designing for resilience therefore follows the same rules as any distributed system, with extra attention to the fixed nature of node capacity.

1

Use more than one node

Spread replicas of each service across at least two nodes so a single server problem does not take the service down.

2

Use more than one zone

Create node groups in separate zones with copies of the workload in each, fronted by a load balancer or replication.

3

Keep spare capacity

Hold enough free room so that losing one node or one zone still leaves capacity for the survivors.

4

Protect the data

Use snapshots, replication, and backups. Persistent disks survive node events, but regional or application level protection is still needed.

5

Rehearse failure

Practice taking a node or zone out of service to confirm that the surviving capacity can carry the load.

The licensing and resilience tension

Resilience wants spare nodes and multiple zones. Per-server licensing wants a small, controlled number of servers. These goals pull against each other, and the balance depends on your license terms. Some licenses allow passive standby servers at reduced cost, while others do not. Involve licensing specialists when designing disaster recovery for licensed pools.

Zonal capacity and quota risk

During a zonal failure, many organizations try to create new capacity in surviving zones at the same moment. Node types and quotas may be limited there. Reserve capacity ahead of time by pre-creating nodes, requesting quota increases early, and testing failover in advance rather than discovering limits during an outage.

flowchart TD
  LB["Global or Regional Load Balancer"] --> ZA["Zone A Node Group"]
  LB --> ZB["Zone B Node Group"]
  ZA --> A1["Replica 1"]
  ZA --> A2["Replica 2"]
  ZB --> B1["Replica 3"]
  ZB --> B2["Replica 4"]
  A1 --> DB["Replicated Data Layer"]
  B1 --> DB
        
FIG 5 — Replicas spread across nodes and zones
!
Common Mistake

Running replicas on dedicated nodes in only one zone. A zonal outage then removes every replica at once, and dedicated hardware gives no protection against that.

20Limits, Quotas and Practical Gotchas

A handful of constraints surprise teams, so it pays to know them before design review.

Always confirm the exact current limits in the official documentation, because values and supported features change over time. The themes below are the ones that most often matter in practice.

Gotcha 1

VM must fit on one node

A VM cannot be larger than a single node’s capacity, and it cannot span two nodes.

Gotcha 2

Family compatibility

Only VMs from compatible machine families run on a given node type. Plan node types around your VM families.

Gotcha 3

Zone and type availability

Not every node type exists in every zone. Check before committing to a region.

Gotcha 4

Quotas on nodes and CPUs

Node counts and the CPUs they carry count against regional quotas. Request increases well before launches.

Gotcha 5

Immutable templates

Templates cannot be edited, so changes require a new template and a new group.

Gotcha 6

Affinity changes need a restart

Moving a VM between dedicated and shared hosting, or between pools, generally means stopping and restarting it.

Gotcha 7

Feature compatibility

Some features, such as certain accelerators, local storage options, overcommit settings or confidential computing, depend on node type. Verify support for each.

Overcommit with care

On supported setups, you can allow the VMs on a node to be configured with more total vCPUs than the node physically offers. This can raise utilization when workloads are idle much of the time, because VMs rarely use all their CPUs at once. The risk is contention: if several VMs become busy simultaneously, they compete for the same physical cores. Overcommit suits lightly loaded development or test pools, and it is a poor fit for latency-sensitive or license-counted workloads where the physical core count matters.

Zonal
Node groups live in a single zone
Immutable
Templates cannot be edited after creation
Verify
Check node type and feature support per zone
i
Practical Tip

Build a short pre-launch checklist: node type available in the zone, quota requested, VM sizes validated against node capacity, affinity labels agreed, maintenance policy approved, and alerts configured.

21Frequently Asked Questions

Short answers to the questions engineers and architects ask most.

Q1Is a sole-tenant node the same as a bare metal server?

No. A sole-tenant node is a dedicated physical host, but your workloads still run as virtual machines on a hypervisor. Bare metal offerings give direct access to hardware without that virtualization layer for your workload.

Q2Do VMs automatically use my sole-tenant nodes once I create them?

No. A VM must carry a node affinity rule that points to your node labels. Without it, the VM runs on shared hosts and the nodes sit empty while still billing.

Q3Do I pay for the VMs on a sole-tenant node?

You pay for the node, meaning all its vCPUs and memory plus a sole-tenancy premium, rather than paying for each VM’s compute separately. Other resources such as disks and network traffic are still billed as usual. Check current pricing for exact details.

Q4Can a node group span multiple zones?

No. A node group lives in one zone because a physical server is in one zone. Use separate node groups in different zones for zonal resilience.

Q5Which maintenance policy should I pick for per-server licenses?

Policies that keep VMs on a fixed set of servers, restart in place or migrate within the node group, are the usual choices. The default policy can move VMs to other nodes. Confirm the exact requirement with your licensing owner.

Q6Can I share a node group with other projects?

Yes. Share settings let the owning project allow specific projects, or the whole organization, to place VMs on the group. Agree on chargeback rules so cost is fair.

Q7Does sole-tenancy protect my workloads from each other?

No. It separates you from other customers. VMs of your own that share a node still share that server, so separate trust levels onto different nodes with labels.

Q8Can managed instance groups and Kubernetes use sole-tenant nodes?

Yes. Instance templates can include node affinity, and container platforms can place node pools on dedicated nodes. In both cases, the affinity rule connects the workload to the pool.

Q9Is autoscaling a good idea for node groups?

It suits variable workloads such as test fleets or game servers. For per-server licensed pools, fixed size is usually safer, because every automatically added node is a new physical server.

Q10What is the single most important metric for sole-tenancy cost?

Node utilization, the share of each node’s vCPUs and memory assigned to VMs. High utilization turns a premium product into a reasonable one, while low utilization wastes money quickly.

22Summary and Key Takeaways

Sole-tenant nodes give you something simple and valuable: a physical Google Cloud server that belongs to your workloads alone. That single fact supports three important use cases. It lets you reuse per-core or per-socket licenses, it provides physical separation required by some regulations and contracts, and it gives predictable performance without outside neighbors. The rest of the platform, networking, disks, images and management tools, stays familiar.

The trade-off is that you now think like a capacity planner. You pay for whole nodes, so fill them. You choose maintenance behavior, so match it to your license and uptime needs. You place VMs with affinity rules, so design labels carefully. Used on purpose, for a clear requirement, sole-tenancy is efficient and defensible. Used casually, it becomes a collection of half-empty and expensive servers.

Key Takeaways

  • Dedicated hardware, ordinary VMs — a node is a physical server reserved for you, and your workloads still run as normal Compute Engine VMs with familiar networking and storage.
  • Affinity decides placement — creating nodes does nothing until VMs carry node affinity rules that point to your labels, so design the label scheme with care.
  • Templates build groups, groups hold nodes — templates are immutable blueprints, groups are zonal pools, and autoscaling should be avoided for per-server licensed pools.
  • Pick the maintenance policy on purpose — default, restart in place and migrate within group trade uptime against server stability, and the right choice follows your license and availability needs.
  • Utilization drives cost — you pay for the whole node plus a premium, so standardize VM sizes, match node type to the memory to CPU ratio, and delete idle groups.
  • Isolation has limits — sole-tenancy separates you from other customers, not your own workloads from each other, and it complements encryption, identity and network controls rather than replacing them.
  • Resilience is a design choice — use multiple nodes and zones, keep spare capacity, rehearse failure, and reconcile disaster recovery with license terms.