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.
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.
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.
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.
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.
Node template
A reusable blueprint that records the node type, labels and policies. You create it once and use it to build node groups.
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.
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.
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.
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.
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.
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.
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
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.
Networking
VPC networks, subnets, firewall rules and load balancers behave exactly as they do for ordinary VMs.
Storage
Persistent disks and images attach normally. Disks are not stored on the node itself.
Identity and access
Service accounts, IAM roles and audit logging apply as usual to the VMs.
Placement and billing
VMs are pinned to your nodes by rules, and billing moves from per-VM to per-node.
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
What the scheduler considers
Match the labels
Only nodes whose labels satisfy the VM’s affinity rule are candidates. All others are ignored.
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.
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.
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.
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
General purpose
Balanced CPU and memory. A sensible default for mixed estates, application servers and databases of moderate size.
Compute optimized
High per-core speed. Suited to game servers, high-performance computing and latency-sensitive processing.
Memory optimized
Very large memory per core. Suited to in-memory databases, large analytics engines and enterprise applications with huge working sets.
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 size | VM size | VMs that fit | Wasted vCPUs |
|---|---|---|---|
| 96 vCPUs | 32 vCPUs | 3 | 0 |
| 96 vCPUs | 48 vCPUs | 2 | 0 |
| 96 vCPUs | 64 vCPUs | 1 | 32 |
| 96 vCPUs | 40 vCPUs | 2 | 16 |
| 96 vCPUs | 16 vCPUs | 6 | 0 |
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.
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
| Mode | Behavior | Good for |
|---|---|---|
| Off | The 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 |
| On | Nodes 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 out | Nodes 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"]
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.
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.
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.
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.
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
| Need | Best policy | Trade-off |
|---|---|---|
| Maximum uptime, no licensing tied to a specific server | Default | VM may move to a server outside your group |
| Licenses tied to a specific physical server | Restart in place | Brief downtime during maintenance |
| Fixed server pool and high uptime | Migrate within node group | Requires 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.
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.
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.
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.
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.
Pin the licensed workloads
Use affinity labels so the licensed software runs only on the dedicated pool and nowhere else.
Choose a stable maintenance policy
Use restart in place or migrate within the group so VMs remain on a known set of servers.
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.
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.
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.
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.
Physical separation
No other customer’s VMs run on your servers.
Predictable neighbors
All VMs on a node are yours, so you control every source of contention.
Clear audit story
You can show exactly which servers hold regulated workloads.
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.
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"]
| Area | On shared hosts | On sole-tenant nodes |
|---|---|---|
| Networking | VPC subnets and firewall rules | Identical |
| Persistent disks | Network-attached, independent of host | Identical |
| Load balancing | Supported | Supported |
| Instance groups | Supported | Supported with node affinity in the template |
| Billing unit | Per VM resources | Per node |
| Placement | Chosen by Google | Chosen by your affinity rules |
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.
Single-project group
Simplest model. One project owns and uses the pool. Good for a single regulated application.
Selected-project sharing
The owner names specific projects that may use the pool. Good for a small number of related teams.
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.
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.
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.
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
Pack tightly
Choose VM sizes that divide evenly into the node, and fill nodes before adding new ones.
Share the pool
Let several teams use one pool so unused capacity in one team’s share is used by another.
Commit for the steady base
Use committed use discounts for the nodes you are certain to need all year.
Delete idle groups
Review node groups regularly and remove any that no longer hold workloads.
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.
Inventory the workloads
List every VM that must run on dedicated hardware, with its vCPU and memory need, and its growth outlook.
Standardize VM sizes
Round workloads to a small set of sizes that divide the node evenly. Fewer shapes mean tighter packing.
Choose the node type
Select the node whose vCPU to memory ratio matches your VMs, so neither resource is left unused.
Compute the node count
Divide total demand by node capacity, then round up. Remember that memory and vCPUs both limit placement.
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.
| Situation | What happens | Remedy |
|---|---|---|
| VMs are memory-heavy on a CPU-balanced node | Memory runs out first, leaving CPUs stranded | Use a memory-optimized node type |
| VMs are CPU-heavy on a memory-rich node | CPUs run out first, leaving memory stranded | Use a compute-optimized node type |
| Many odd-sized VMs | Gaps appear that no VM can fill | Standardize VM sizes |
| No buffer for maintenance | Migrations have nowhere to go | Add an extra node or choose a restart policy |
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
Allocated vCPU and memory
Shows how much of each node is committed to VMs, revealing stranded or exhausted nodes.
VM count per node
Shows how evenly VMs are spread and whether any node holds too many critical workloads.
Maintenance events
Shows when hosts are being updated and which VMs were moved or restarted.
Admin activity logs
Record who created, resized or deleted templates, groups and nodes, and where VMs were placed.
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.
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.
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
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.
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.
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.
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.
| Option | What you get | You manage | Best for |
|---|---|---|---|
| Standard shared VMs | VMs on shared physical hosts | VMs only | Most workloads, lowest cost |
| Sole-tenant nodes | Dedicated physical host running your VMs | VMs and node pool sizing | Per-server licensing, physical separation, predictable neighbors |
| Bare metal offerings | Direct hardware access without a hypervisor layer for your workload | Full machine | Workloads needing raw hardware access or specialized software stacks |
| Confidential VMs | Encrypted memory while in use on shared hosts | VMs | Protecting data in use from the host |
| Shielded VMs | Verified boot integrity on shared hosts | VMs | Defending against rootkits and boot tampering |
| VMware or specialized platform services | Managed dedicated environments for specific platforms | The guest platform | Lifting 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
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
Start from the requirement
Confirm that licensing, compliance or performance truly needs dedicated hardware before buying nodes.
Design labels deliberately
Use a clear label scheme so pools can grow without changing VM definitions.
Standardize VM sizes
Choose sizes that divide the node evenly to minimize stranded capacity.
Match policy to license
Choose the maintenance policy that your license and uptime needs can both accept.
Use two or more zones
Spread critical workloads across node groups in different zones for resilience.
Bake affinity into templates
Put node affinity into instance templates so healing and scaling always target the right pool.
Monitor utilization
Track node fill and set alerts for near-full and unexpectedly growing groups.
Govern and charge back
Restrict who can create nodes and attribute shared node cost to the teams using it.
Common mistakes
Creating nodes and never placing VMs on them. Without affinity rules, VMs land on shared hosts while the nodes bill silently.
Choosing the default maintenance policy for a per-server license. VMs may move to a different physical server and break the license assumption.
Ignoring zone availability. A node type or quota may not be available in the zone you want, and discovering that late delays projects.
Planning only for steady state. Without a buffer for maintenance and growth, the first migration event or deployment surge fails.
Assuming sole-tenancy solves every security requirement. It addresses physical separation only. Encryption, identity and network controls still apply.
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.
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.
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.
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.
Keep spare capacity
Hold enough free room so that losing one node or one zone still leaves capacity for the survivors.
Protect the data
Use snapshots, replication, and backups. Persistent disks survive node events, but regional or application level protection is still needed.
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
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.
VM must fit on one node
A VM cannot be larger than a single node’s capacity, and it cannot span two nodes.
Family compatibility
Only VMs from compatible machine families run on a given node type. Plan node types around your VM families.
Zone and type availability
Not every node type exists in every zone. Check before committing to a region.
Quotas on nodes and CPUs
Node counts and the CPUs they carry count against regional quotas. Request increases well before launches.
Immutable templates
Templates cannot be edited, so changes require a new template and a new group.
Affinity changes need a restart
Moving a VM between dedicated and shared hosting, or between pools, generally means stopping and restarting it.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.