Spot by NetApp’s Ocean continuously ensures all pod requirements are met for immediate scheduling by Kubernetes on the right nodes with intelligent bin-packing for optimal resource utilization.
In some cases applications will have instance type dependencies, meaning that the application will run optimally on a specific set of cloud compute instances. This is where Ocean Virtual Node Groups (previously known as Launch Specifications) plays an essential role, providing a single layer of abstraction that allows users to manage different types of workloads on the same cluster.
While Kubernetes allows users to add affinity between specific instances and specific workloads and ECS providing similar functionality, manually handling this can be tedious and time-consuming. Ocean Virtual Node Groups (VNGs) now makes this operation much simpler, decoupling the specific workload from the infrastructure, thereby delivering a serverless experience for application engineers and keeping management overhead for DevOps at a minimum.
Whereas in the past an application owner would need to get involved in selecting appropriate instance types, now all that needs to be done when defining the app’s requirements is to choose a DevOps predefined label, e.g. ‘computeOptimized’, ‘memoryOptimized’ which the Ocean VNGs map to appropriate instances. For example, the label “memoryOptimized” can be created by the DevOps in Virtual Node Groups to equal R5, R5a, and R5n instances that best serve memory intensive workloads. Then all that is left for the application owner is to use that label as Kubernetes node affinity / ECS placement constraints in the workload definition so that the application will automatically run on these memory optimized instances.
As Ocean’s best practice is to leverage ALL instance types for optimal pod/node bin-packing, Ocean’s ability to define a subset of instance types per Ocean Virtual Node Groups makes it easy for both application owners and DevOps to control exactly which workloads run on which instance types.