-
Notifications
You must be signed in to change notification settings - Fork 984
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support IPv6 kubernetes cluster When using generated Launch Template #1241
Comments
We intentionally do not rely on EKS to ensure that Karpenter works well on selfhosted AWS (e.g. CAPA, etc). It's potentially a candidate for autodiscovery, but I'm wary about the number of code paths this creates. |
How does ipv6 work for bottlerocket? |
FWIW I have an IPv6 EKS cluster with Karpenter managed worker nodes functioning correctly. I’m using the Bottlerocket amiFamily. I did have to manually set the cluster DNS in the provisioner kubeletConfiguration to the IPv6 DNS service address, but the rest worked out of the box. |
I'd love to see this feature driven via the existing |
Good point, agree. Maybe one of the EKS tags can help differentiate between AWS managed (EKS) and unmanaged K8s?! |
But the nodes created with such a config:
do not register in EKS cluster with their IPv6 address: So kubeletConfiguration need some more options to provide ipFamily. @ellistarn Is this alreayd available/implemented In addition I wonder that the Karpenter node is provisioned containerd alreayd. Was this changed in AMI or does eksctl 0.86.0-rc.0 does some "magic" here? Karpenter section in eksctl first works with this - see issue |
A working IPv6 nodes registers with its IPv6 provided to kubelet via KUBELET_ARGS "--node-ip" $ pwd $ cat 10-kubelet-args.conf This is set in /etc/eks/bootstrap.sh" via: or direct link So we "just" need to pass "--ip-family ipv6" to "bootstrap.sh" to get it working as expected. /bootstrap.sh --help ... service-ipv6-cidr is "only" used to automaticall set the DNS serverIPv6 by adding a trailing "a" as address which provisioner already sets via clusterDNS And as @ellistarn already proposed one could infer the IP family type from the DNS server address type. But it would be great to see Karpenter figures out the kube-dsn service IP automatically so we can avoid "tweaking" the provisioner configuration for that. |
Hi, currently I proposed the PR which infers the cluster IP family from cluster DNS parameter.
Thank you for the comment, so we may to be able to use "kubernetes.default.svc" to infer IP family. |
This would be a huge value add. Perhaps we can discover it if not specified in kubeletconfiguration. And then we can deprecate it in v1alpha6. |
Closing, going out in next release. |
Tell us about your request
When using generated LaunchTemplate and IPv6 cluster it cannot provision nodes normally.
In case of clusters on AWS, optimized AMI has the options for setting node up for IPv6 cluster.
It's very useful to use these options in the Launch Template generated by Karpenter.
Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
The users can use custom Launch Template and userdata that call bootstrap script. However I think preparing it only for launching nodes in IPv6 cluster seems to be annoying.
Are you currently working around this issue?
As mentioned above custom Launch Template and userdata can be a work-around.
Additional context
I prepared a PR for the issue: #1232 .
It seems reasonable to me to implement this as options of Karpenter controller. Could you please tell me your opnions and advices
Community Note
The text was updated successfully, but these errors were encountered: