Customizing Kubernetes Node Groups
Customizing Kubernetes Node Groups
Node groups are crucial in managing your Kubernetes clusters. By customizing node groups, you can ensure that your infrastructure scales correctly, cost-effectively, and aligns with your application needs.
1. Understanding Node Group Customization
What Does This Mean?
Node groups represent sets of identical nodes or VM instances in your Kubernetes cluster. Customizing them lets you adjust these sets based on factors like resources (CPU, memory), instance types, and more.
When Do You Need It?
Consider customizing node groups when:
- You require different machine types for different workloads.
- You want to assign specific roles or responsibilities to certain nodes.
- You're optimizing costs by matching instance types to workload requirements.
- You need to label nodes for specific workloads or configurations.
2. Requirements: Cluster Ejection Process
Before customizing node groups, you must eject the cluster, which essentially means obtaining the underlying templates used to create the cluster. This allows you to customize its settings and deploy the changes thru Zeet dashboard.
Refer to the Cluster Ejection Guide for a detailed walkthrough on this process.
3. Modifying the Ejected Template
Once you've ejected the cluster and have the template, you can add or modify node groups.
Example: Customizing an AWS Cluster Node Group
For an AWS cluster, you can find the template at the AWS Template Repository.
To add a new node group, such as an m6i
instance, here's an example:
worker_templates_cpu
...
"m6i-workers" : {
instance_types = ["m6i.xlarge"]
desired_size = 3
labels = {
"name": "your-value"
}
}
...
In the example above:
- instance_types: Defines the type of instances you want in this node group. In this case, we're using
m6i.xlarge
. - desired_size: Represents the number of nodes you want in this group. Here, we've specified
3
. - labels: You can assign Kubernetes labels to nodes in this group. For instance, labeling nodes can help in deploying specific workloads to them.
After modifying the template, apply your changes to update your cluster. Always review and test your modifications in a staging environment before applying them to production to avoid potential disruptions.