Node Pools
Node pools are a set of worker nodes that share the same configuration, enabling efficient management and scaling of resources based on application requirements.
Key Features of Node Pools
- Resource Grouping: Node pools allow customers to group worker nodes according to their resource requirements. This organizational strategy ensures that similar types of workloads are run on nodes with appropriate configurations.
- Multiple Configurations: Customers can create multiple node pools with different configurations to support various types of applications within the same cluster. This flexibility ensures optimal resource utilization and performance.
Configuration and Scalability
- Cluster Creation: When creating a cluster, customers can specify the worker node pool configuration, including the number of worker nodes in each pool and other relevant settings. This initial setup can be tailored to meet the specific needs of the applications being deployed.
- Dynamic Scaling: Customers can easily scale their clusters by adding or removing worker nodes or entire node pools based on their resource requirements. This dynamic scaling capability allows for efficient resource management and cost control.
Optimization for Specific Workloads
- Compute-Intensive Workloads: For applications that require significant computational power, customers can create node pools with high CPU worker nodes. This ensures that compute-intensive workloads have the necessary resources for optimal performance.
- Memory-Intensive Workloads: Applications that require large amounts of memory can be assigned to node pools with high memory worker nodes. This configuration is ideal for workloads such as large-scale data processing or in-memory databases.
- Storage-Intensive Workloads: For stateful applications that require substantial storage, customers can create node pools with nodes that have large storage capacities. This setup ensures that storage-intensive workloads have sufficient space and performance capabilities.
Auto-Scaling
Node pools can scale automatically when autoscaling is enabled on a cluster. NKS watches for pending pods, picks the best-fitting pool to scale, and adds nodes to it; underutilized nodes are drained and removed, optimizing both performance and cost.
Taints and Tolerations
Node pools support Kubernetes taints, which are constraints that repel pod scheduling unless the pods have matching tolerations. Taints are useful for:
- Dedicated Resources: Prevent general workloads from using specialized nodes (e.g., GPU nodes for machine learning)
- Compliance Isolation: Ensure certain workloads run only on specific hardware
- Resource Protection: Reserve nodes for critical or sensitive applications
Taints are defined using the format key=value:Effect, where Effect is one of:
NoSchedule– Prevent scheduling of non-matching podsPreferNoSchedule– Prefer not to schedule non-matching podsNoExecute– Evict running pods without matching tolerations
Taints are configured at pool creation time and are immutable after creation.
Simplified Management
With node pools, customers can manage and scale their clusters efficiently without handling individual worker nodes. This abstraction simplifies cluster management and allows customers to focus on application performance and resource optimization.