[EKS] [Feature]: MNG support for advanced ENI/IP Config
- Dominant language
- Shell
- Stars
- 5.4k
- Forks
- 334
- PR merge metrics
- No merged PRs in 30d
Description
### Community Note
* Please vote on this issue by adding a 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to the original issue to help the community and maintainers prioritize this request
* Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
* If you are interested in working on this issue or have submitted a pull request, please leave a comment
**Tell us about your request**
The VPC CNI supports `DISABLE_NETWORK_RESOURCE_PROVISIONING` which allows the CNI to use the IPs it finds on the node at launch. This allows control of the IP pool from the Launch template of the nodes.
However EKS Managed Node Groups don't allow Launch Templates with more than one ENI defined or subnets defined on ENIs.
Allow launch templates with advanced networking attachments in Managed Node Groups
**Which service(s) is this request for?**
EKS (Managed Node Groups)
**Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?**
In the case that pod density for a workload is predictable, the default warm pool behavior can provision a number of extra IPs (for example on a `c5.4xlarge` instance if I run 20 pods max, the node will still hold 60 IPs).
Controlling this behavior with `WARM_IP_TARGET` can increase the number of API calls to EC2 and on large clusters this can lead to rate throttling, and delays in pod provisioning.
Using `DISABLE_NETWORK_RESOURCE_PROVISIONING` has at least a couple of benefits for EKS workloads:
- This drastically reduces the EC2 API calls from the CNI as the IP addresses are already assigned/available by the time the CNI launches.
- This also allows drastically different IP/ENI configurations between nodegroups in the same cluster without having to make the warm pool config match all instances on the CNI.
When I try to use a launch template that specifies secondary IPs I get an InvalidParameterException:
Launch Template snip:
```
"NetworkInterfaces": [
{
"DeleteOnTermination": true,
"DeviceIndex": 0,
"Groups": [
"sg-xxxxxxxxxxxxx"
],
"SecondaryPrivateIpAddressCount": 9,
}
```
```
aws eks create-nodegroup --cluster-name testing --nodegroup-name launch-temp-test --subnets subnet-xxxxxxxxxxxxx --launch-template id=lt-xxxxxxxxxxxxx --node-role "arn:aws:iam::01234567890:role/managed-ondemand"
An error occurred (InvalidParameterException) when calling the CreateNodegroup operation: You cannot specify Private IP addresses in your launch template.
```
**Are you currently working around this issue?**
I can use self managed node groups but would rather have the Quality of Life features from Managed Node Groups as well as the control of the IPs/ENIs
Contributor guide
Assessment
This issue has not been assessed yet.