aws / aws/eks-anywhere

Capability of numCoresPerSocket management

Open
#5,892 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Go
Stars
2.1k
Forks
328
Avg merge
1d 4h
Merged PRs (30d)
9

Description

**What would you like to be added**:
Currently we are able to manage CPU and Memory of vSphere VMs those are member of EKS Anywhere Kubernetes cluster.
But not able to manage number of sockets for per Core. It is causing performance issue based on CPU frequency. By default it is generating VMs 1 Socket and X Core. X means what you defined in `VSphereMachineConfig` for `numCPUs` property.

`VSphereMachineTemplate` has fields to manage `numCoresPerSocket` property.

Related CRDs as follows;

```
kubectl explain VSphereMachineConfig.spec
KIND: VSphereMachineConfig
VERSION: anywhere.eks.amazonaws.com/v1alpha1

RESOURCE: spec

DESCRIPTION:
VSphereMachineConfigSpec defines the desired state of VSphereMachineConfig.

FIELDS:
cloneMode
CloneMode describes the clone mode to be used when cloning vSphere VMs.

datastore -required-

diskGiB

folder -required-

hostOSConfiguration
HostOSConfiguration defines the configuration settings on the host OS.

memoryMiB -required-

numCPUs -required-

osFamily -required-

resourcePool -required-

storagePolicyName

tags <[]string>

template

users <[]Object>
```

```kubectl explain VSphereMachineTemplate.spec.template.spec
KIND: VSphereMachineTemplate
VERSION: infrastructure.cluster.x-k8s.io/v1beta1

RESOURCE: spec

DESCRIPTION:
Spec is the specification of the desired behavior of the machine.

FIELDS:
additionalDisksGiB <[]integer>
AdditionalDisksGiB holds the sizes of additional disks of the virtual
machine, in GiB Defaults to the eponymous property value in the template
from which the virtual machine is cloned.

cloneMode
CloneMode specifies the type of clone operation. The LinkedClone mode is
only support for templates that have at least one snapshot. If the template
has no snapshots, then CloneMode defaults to FullClone. When LinkedClone
mode is enabled the DiskGiB field is ignored as it is not possible to
expand disks of linked clones. Defaults to LinkedClone, but fails
gracefully to FullClone if the source of the clone operation has no
snapshots.

customVMXKeys
CustomVMXKeys is a dictionary of advanced VMX options that can be set on VM
Defaults to empty map

datacenter
Datacenter is the name or inventory path of the datacenter in which the
virtual machine is created/located. Defaults to * which selects the default
datacenter.

datastore
Datastore is the name or inventory path of the datastore in which the
virtual machine is created/located.

diskGiB
DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the
eponymous property value in the template from which the virtual machine is
cloned.

failureDomain
FailureDomain is the failure domain unique identifier this Machine should
be attached to, as defined in Cluster API. For this infrastructure
provider, the name is equivalent to the name of the VSphereDeploymentZone.

folder
Folder is the name or inventory path of the folder in which the virtual
machine is created/located.

memoryMiB
MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to
the eponymous property value in the template from which the virtual machine
is cloned.

network -required-
Network is the network configuration for this machine's VM.

numCPUs
NumCPUs is the number of virtual processors in a virtual machine. Defaults
to the eponymous property value in the template from which the virtual
machine is cloned.

numCoresPerSocket
NumCPUs is the number of cores among which to distribute CPUs in this
virtual machine. Defaults to the eponymous property value in the template
from which the virtual machine is cloned.

pciDevices <[]Object>
PciDevices is the list of pci devices used by the virtual machine.

providerID
ProviderID is the virtual machine's BIOS UUID formated as
vsphere://12345678-1234-1234-1234-123456789abc

resourcePool
ResourcePool is the name or inventory path of the resource pool in which
the virtual machine is created/located.

server
Server is the IP address or FQDN of the vSphere server on which the virtual
machine is created/located.

snapshot
Snapshot is the name of the snapshot from which to create a linked clone.
This field is ignored if LinkedClone is not enabled. Defaults to the
source's current snapshot.

storagePolicyName
StoragePolicyName of the storage policy to use with this Virtual Machine

tagIDs <[]string>
TagIDs is an optional set of tags to add to an instance. Specified tagIDs
must use URN-notation instead of display names.

template -required-
Template is the name or inventory path of the template used to clone the
virtual machine.

thumbprint
Thumbprint is the colon-separated SHA-1 checksum of the given vCenter
server's host certificate When this is set to empty, this VirtualMachine
would be created without TLS certificate validation of the communication
between Cluster API Provider vSphere and the VMware vCenter server.```

**Why is this needed**:
We are not able to manage `numCoresPerSocket` for VMs. And it is causing performance issues.

Contributor guide

Open the contributing guide

Research direction

The issue identifies VSphereMachineConfig.spec and VSphereMachineTemplate.spec.template.spec through kubectl explain; start by comparing these schemas and tracing how numCPUs is propagated. Done means numCoresPerSocket can be managed for the vSphere VMs created for EKS Anywhere clusters, with the related resource definitions and behavior updated consistently.

Written by the indexing model from the issue text.

Assessment

Domain
infrastructure
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.