-
Notifications
You must be signed in to change notification settings - Fork 560
How to deploy Windows Server 2016 agents on Kubernetes 1.9 ? #2094
Comments
@odauby Can you verify if you have the following in your azuredeploy.json:
and if you have agentWindowsVersion in your azuredeploy.parameters.json? |
@odauby It is a bug in kubelet that gets the incorrect windows kernel version. @feiskyer @taylorb-microsoft It seems that kubernetes/kubernetes#55143 doesn't work on windows 10. From https://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx, GetVersion requires app to be manifested. Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). I tried a toy go program using GetVersion on Windows 10 and it returns 0x23f00206. Given the limited win32 functions in golang, maybe we can read from registry directly?
|
@JiangtianLi Sorry, didn't notice this problem. Will file a PR to fix this. |
Is there a workaround for this? |
@jsturtevant The issue only affects the windows kernel version reported by kubelet. Windows node still has the correct OS image and Windows container should be able to run as is. Besides, @feiskyer already has the PR kubernetes/kubernetes#58498. |
I missed that it was only the reported value. I was able to confirm the Windows node is the correct OS image. Thanks for the clarification! |
I'm having a similar problem with the windows kernel deployed with acs-engine. Deployed cluster with Kubernetes orchestrator for version 1.7. Here is the template I used:
For both Standard_D2s_v3 and Standard_DS2_v2 I would expect |
@masroorhasan There are two issues here. 1. kubelet on windows reports the incorrect windows version and there is fix in upstream: kubernetes/kubernetes#58498. 2. Windows version actually deployed should be RS3 Windows, a.k.a. 1709. Windows containers has compatibility requirement: https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility so if you have Windows Sever 2016 container (RS1), it would not run on RS3 Windows and you need to rebuild the container image. |
Thanks for the quick response @JiangtianLi. The kernerl version being reported is actually from docker on the host machine. The deployment with acs-engine produces agent machine profiles as:
I've previously used ACS (from portal) to deploy kubernetes cluster and the profile of the windows machines were the following:
For your second point - I ran two windows containers to test it out:
|
@masroorhasan For the first point, acs-engine is using RS3 Windows while some regions in ACS still use RS1 Windows. From kernel version (Kernel Version: 10.0 16299 (16299.15.amd64fre.rs3_release.170928-1534), it is 1709 so you need to use container image with 1709 tag. For the second point, the error is "The operating system of the container does not match the operating system of the host", which means microsoft/dotnet-framework:4.7 is not RS3 Windows based and therefore is not compatible with RS3 Windows cluster. |
Thanks @JiangtianLi - that makes sense. FYI, I switched to using acs-engine version 0.8 and to westus2 region - that seems to use windows server 2016 and resolve the outbound connection as well. |
I am forced to use Canadian data centers and I want to create a hybrid 1.9.6 kubernetes cluster. Im using acs-engine v0.14.6 and am running into this issue. Is there any workarounds? @JiangtianLi |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contribution. Note that acs-engine is deprecated--see https://github.com/Azure/aks-engine instead. |
Is this a request for help?:
YES
Is this an ISSUE or FEATURE REQUEST? (choose one):
ISSUE I guess, it looks like a regression since it works for Kubernetes 1.8.x
What version of acs-engine?:
Version: v0.12.0
GitCommit: 1d33229
GitTreeState: clean
Orchestrator and version (e.g. Kubernetes, DC/OS, Swarm)
Kubernetes 1.9.1
What happened:
When using this Kubernetes 1.8 acs-engine orchestratorProfile, I end up with Windows Server 2016 agents having a
10.0 16299 (16299.15.amd64fre.rs3_release.170928-1534)
kernel.But when I use this Kubernetes 1.9 acs-engine orchestratorProfile, I end up with Windows Server 2012 (!) agents having a
6.2.09200.192
kernel.What you expected to happen:
Getting Windows Server 2016 agents on Kubernetes 1.9 like I did with Kubernetes 1.8.
How to reproduce it (as minimally and precisely as possible):
1. Deploy this acs-engine template:
2. You get Windows Server 2016 agents:
3. Deploy this acs-engine template:
4. You get Windows Server 2012 agents:
Anything else we need to know:
The text was updated successfully, but these errors were encountered: