Skip to main content

Reference Architecture: Hypervisor

Purpose: For platform engineers, provides hypervisor selection guidance for the GA production platforms and explains where baremetal fits.

Overview

openCenter's GA production reference architecture centers on VMware vSphere and OpenStack (KVM). Baremetal remains a supported pre-provisioned host path, and Kind stays local-only. AWS is not part of the GA reference architecture.

Supported Hypervisors

Hypervisor / Host ModelMaturityUse CaseCSI DriverCloud Provider
VMware vSphere 7.0+ProductionEnterprise data centervSphere CSIvSphere Cloud Provider
OpenStack (KVM) Zed+ProductionPrivate cloud, multi-tenantOpenStack Cinder CSIOpenStack Cloud Provider
Linux baremetal hostsProductionExisting physical estatesExternal or platform-selected storageNone
KindDevelopmentLocal testing, CI/CDLocal pathNone

VMware vSphere Configuration

vCenter Server

SettingValue
vCenter Version7.0 U3 or 8.0+
Deployment SizeSmall (up to 100 hosts) or Medium (up to 400 hosts)
DatabaseEmbedded PostgreSQL (default)
SSO Domainvsphere.local (or customer domain)
NTPSync to same NTP source as ESXi hosts

ESXi Host Configuration

SettingValueReason
ESXi Version7.0 U3 or 8.0+Match vCenter version
Scratch PartitionPersistent (local datastore)Required for log persistence
NTPConfigured, syncedTime skew breaks certificates and etcd
SSHDisabled (enable only for troubleshooting)Security hardening
Lockdown ModeNormalPrevents direct host access; manage via vCenter
SyslogForward to central syslog / LokiAudit and troubleshooting
Power ManagementHigh PerformancePrevents CPU frequency scaling
NUMAExpose NUMA topology to VMsEnables NUMA-aware scheduling

vSphere Cluster Settings

SettingValueNotes
HA (High Availability)EnabledRestarts VMs on host failure
HA Admission ControlReserve 1 host capacityEnsures failover capacity
DRS (Distributed Resource Scheduler)Enabled, Fully AutomatedBalances VM placement across hosts
DRS Migration ThresholdLevel 3 (moderate)Avoids excessive vMotion
EVC (Enhanced vMotion Compatibility)Set to lowest CPU generation in clusterEnables vMotion between different CPU models
vSANOptional (see Virtual Storage)If using local storage
Proactive HAEnabled (if hardware supports)Migrates VMs before predicted failure

Resource Pools

Create resource pools to isolate Kubernetes roles and prevent resource contention.

Resource PoolCPU SharesMemory SharesCPU ReservationMemory Reservation
k8s-control-planeHighHigh24 GHz (3× 8 vCPU)48 GB (3× 16 GB)
k8s-workersNormalNormalNoneNone
infrastructureNormalNormal4 GHz8 GB

Reservations on the control plane pool guarantee that etcd and the API server always have CPU and memory, even when worker nodes are under heavy load.

VM Hardware Settings

SettingControl Plane VMWorker VM
Hardware Versionvmx-19 (vSphere 7.0 U2+)vmx-19
Guest OSUbuntu 22.04 LTS 64-bitUbuntu 22.04 LTS 64-bit
CPU Hot AddDisabledDisabled
Memory Hot AddDisabledDisabled
Disk ControllerPVSCSIPVSCSI
Network AdapterVMXNET3VMXNET3
Secure BootEnabledEnabled
vTPMEnabledEnabled

Disable CPU and Memory Hot Add. These features prevent NUMA optimization and add overhead. Size VMs correctly at creation instead.

OpenStack (KVM) Configuration

OpenStack Services Required

ServiceComponentPurpose
NovaComputeVM lifecycle management
NeutronNetworkingVirtual networks, security groups
CinderBlock StoragePersistent volumes for VMs
GlanceImageVM image repository
KeystoneIdentityAuthentication and authorization
Octavia (optional)Load BalancerKubernetes LoadBalancer services

Nova Compute Configuration

SettingValueReason
HypervisorKVM (libvirt)Native performance
CPU Modehost-passthroughExposes host CPU features to VMs
CPU Overcommit Ratio1.5:1 (max)Conservative for Kubernetes
Memory Overcommit Ratio1.0:1 (none)Kubernetes assumes dedicated memory
Huge Pages2 MB (enabled)Reduces TLB misses for large VMs
NUMA TopologyExpose to instancesEnables NUMA-aware placement

Flavor Definitions

Create dedicated flavors for Kubernetes nodes:

Flavor NamevCPUMemoryRoot DiskProperties
oc.cp.small48 GB100 GBhw:cpu_policy=dedicated, hw:mem_page_size=2048
oc.cp.medium816 GB200 GBhw:cpu_policy=dedicated, hw:mem_page_size=2048
oc.cp.large1632 GB500 GBhw:cpu_policy=dedicated, hw:mem_page_size=2048
oc.worker.general416 GB100 GBhw:mem_page_size=2048
oc.worker.compute816 GB100 GBhw:cpu_policy=dedicated
oc.worker.memory432 GB100 GBhw:mem_page_size=2048

Use hw:cpu_policy=dedicated for control plane nodes to pin vCPUs to physical cores. This eliminates CPU scheduling jitter that affects etcd latency.

Security Groups

RuleProtocolPortSourcePurpose
SSHTCP22Bastion SGNode access
Kubernetes APITCP6443Worker SG, Bastion SGAPI server
etcdTCP2379–2380Control Plane SGetcd cluster
KubeletTCP10250Control Plane SGKubelet API
NodePortTCP30000–32767Load Balancer SGService exposure
Calico BGPTCP179Node SGCNI networking
VXLANUDP4789Node SGOverlay network

Anti-Affinity Rules

Distribute Kubernetes control plane VMs across physical hosts to survive host failures.

vSphere

Create a DRS anti-affinity rule:

  • Rule type: "Separate Virtual Machines"
  • Members: all 3 control plane VMs
  • This ensures DRS never places two control plane VMs on the same ESXi host.

OpenStack

Use server groups with anti-affinity policy:

openstack server group create --policy anti-affinity k8s-control-plane

Reference the server group when creating control plane instances.

Considerations

  • Licensing: vSphere requires per-CPU licensing (vSphere Standard or Enterprise Plus). Enterprise Plus is required for DRS, vSAN, and distributed switches. OpenStack has no licensing cost but requires operational expertise.
  • Patching: Schedule ESXi/KVM host patching during maintenance windows. Use vSphere Update Manager (VUM) or OpenStack rolling upgrades to patch one host at a time while VMs migrate to remaining hosts.
  • Backup: Back up vCenter Server Appliance (VCSA) configuration regularly. For OpenStack, back up the control plane databases (MariaDB/Galera, RabbitMQ).
  • Monitoring: Deploy the vSphere Prometheus exporter or OpenStack exporter to feed hypervisor metrics into the Grafana stack.
  • Nested virtualization: Not supported for production. Kind clusters for development run inside VMs but do not use nested KVM/VT-x.