Skip to content
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

Windows support #1131

Closed
shirwahersi opened this issue Jan 12, 2022 · 12 comments · Fixed by #3698 or #4074
Closed

Windows support #1131

shirwahersi opened this issue Jan 12, 2022 · 12 comments · Fixed by #3698 or #4074
Labels
feature New feature or request

Comments

@shirwahersi
Copy link

Tell us about your request
Windows OS support

Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
We have mixed OS workload (Linux,Windows), we would like to managed both Linux/Windows nodes with Karpenter

@shirwahersi shirwahersi added the feature New feature or request label Jan 12, 2022
@ellistarn ellistarn added the help-wanted Extra attention is needed label Jan 13, 2022
@ellistarn
Copy link
Contributor

This should be straightforward to support as a new value for key kubernetes.io/os.

@github-actions
Copy link
Contributor

This issue is stale because it has been open 25 days with no activity. Remove stale label or comment or this will be closed in 5 days.

@github-actions github-actions bot added the Stale label Feb 22, 2022
@shirwahersi
Copy link
Author

Hi all, Is there any plans to support Windows in near future?

@ellistarn
Copy link
Contributor

Some folks were looking at contributing it, but I'm not sure where they're at.

@spring1843 spring1843 removed the Stale label Feb 22, 2022
@khoa-hatch khoa-hatch mentioned this issue Mar 7, 2022
3 tasks
@ellistarn ellistarn added the needs-review PRs that are still going through the review process label Mar 10, 2022
@bwagner5 bwagner5 mentioned this issue May 6, 2022
3 tasks
@halovanic
Copy link

I believe @bwagner closed this patch attempt for the understandable difficulties keeping up with other changes around AMI handling in Karpenter.
Having gone back over the patches to test on my EKS cluster with post-0.15, we could aim for very basic support that gets Windows working, just not as its own first-class AMI Family:

  1. Support vpc.amazonaws.com/PrivateIPv4Address resources that are needed for Windows-scheduled pods
  2. Remove or replace a hardcoded requirement getting added in the instance type calculation that forbids non-Linux OSs

This does require the user to define a launch template in the Windows provisioner, but this is the same requirement Windows EKS users already had with Self-Managed node groups. I also think a Windows provisioner probably should define the system reserved memory and restrict instance types more explicitly, but the effort is still quite minimal.

This has worked out quite well in my admittedly limited tests: without even really understanding anything specific about Windows, Karpenter seems to have done a more effective job of getting all of my large workloads scheduled.

Is there interest in pursuing these more limited changes? I can submit reworked patches if there is.

@ellistarn
Copy link
Contributor

ellistarn commented Aug 24, 2022

define a launch template in the Windows provisioner

We'll likely be deprecating custom launch template support. Any chance you use can amiSelector and userData to meet the use case instead?

Is there interest in pursuing these more limited changes?

Yes! Happy to expand non-linux OS. Can you elaborate on PrivateIPv4Address?

@halovanic
Copy link

That would require a new user data format and corresponding AMI Family defined. That was already in the original patches, but seemed to be the part that was running into difficulties with a fast moving Karpenter target state.
What I am proposing are to tackle these more stable prerequisites for Windows separately, then we could come back to dedicated Windows AMI support before the launch template support goes away,

PrivateIPv4Address support was in the previous patches (see function awsPodPrivateIPv4() in either) and is needed because Windows supports fewer pods and EKS's webhook adds this calculation to prevent overscheduling.

@bwagner5
Copy link
Contributor

This may just work with Custom AMIs (not AMI Families) https://karpenter.sh/v0.16.0/aws/user-data/#custom-amis

You should be able to specify an arbitrary AMI and user-data which will be passed directly to EC2. You could also set the max-pods on the Provisioner spec to deal with the PrivateIPv4Address in the mean time at least. https://karpenter.sh/v0.16.0/provisioner/#:~:text=storage%3A%202Gi-,maxPods%3A%2020,-%23%20Resource%20limits%20constrain

halovanic pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Aug 29, 2022
halovanic pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Aug 29, 2022
@halovanic
Copy link

I will do some further tests to see if I can switch over to Custom AMIs from the launch templates in my end-to-end tests; I don't see anything that would block it.

Just to clarify, the need for PrivateIPv4Address is not directly one of pod density; it's that the AWS VPC Resource Controller forces this on scheduled pods. This was the only reference I could actually find on this behavior:
https://github.com/aws/amazon-vpc-resource-controller-k8s/blob/master/docs/windows/workflow.md

halovanic pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Aug 29, 2022
halovanic pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Aug 29, 2022
@marciogmorales
Copy link

Hello Karpenter experts, any update in this topic?

jonathan-innis pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Oct 24, 2022
jonathan-innis pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Nov 2, 2022
jonathan-innis pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Nov 8, 2022
jonathan-innis pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Nov 8, 2022
jonathan-innis pushed a commit to halovanic/karpenter-aws-private-ipv4 that referenced this issue Nov 11, 2022
@pdavagia
Copy link

Checking in to see if there are any updates on this?

@DorukAkinci
Copy link

DorukAkinci commented Dec 16, 2022

We have now managed Windows Node groups support on the EKS service. Does that mean this implementation/feature may also come soon? aws/containers-roadmap#584

@jonathan-innis jonathan-innis removed the good-first-issue Good for newcomers label Feb 3, 2023
topikachu added a commit to topikachu/karpenter that referenced this issue Apr 21, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
topikachu added a commit to topikachu/karpenter that referenced this issue Apr 21, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
topikachu added a commit to topikachu/karpenter that referenced this issue Apr 21, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
@billrayburn billrayburn removed the help-wanted Extra attention is needed label Apr 26, 2023
topikachu added a commit to topikachu/karpenter that referenced this issue Apr 30, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
topikachu added a commit to topikachu/karpenter that referenced this issue May 3, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
@billrayburn billrayburn removed the needs-review PRs that are still going through the review process label May 3, 2023
topikachu added a commit to topikachu/karpenter that referenced this issue May 13, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
jonathan-innis pushed a commit to topikachu/karpenter that referenced this issue May 17, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
jonathan-innis pushed a commit to topikachu/karpenter that referenced this issue May 19, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
jonathan-innis pushed a commit to topikachu/karpenter that referenced this issue May 19, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
jonathan-innis pushed a commit to topikachu/karpenter that referenced this issue May 31, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
jonathan-innis pushed a commit to topikachu/karpenter that referenced this issue Jun 1, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
jonathan-innis pushed a commit to topikachu/karpenter that referenced this issue Jun 15, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
jonathan-innis pushed a commit to topikachu/karpenter that referenced this issue Jun 19, 2023
Fixes aws#1131

This change try to integrate with the latest EKS window support.

Add two new Windows AMI Family, Windows2019 and Windows2022.
Only Core are supported OOTB.
Windows relevant code, "kubernetes.io/os" and "vpc.amazonaws.com/PrivateIPv4Address" is only active when Windows AMI Family defined in the AwsNodeTemplate

Users can use amiSelector to choose other AMIs.
Test on a Linux and Windows mixed system for provision and de-provision.

Test on a live system with mixed Windows and Linux workload.
Both provision and de-provision are tested
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
None yet