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

Can't start pods in Windows Server core 1903 #80023

Open
jwlogemann opened this issue Jul 11, 2019 · 2 comments

Comments

2 participants
@jwlogemann
Copy link

commented Jul 11, 2019

What happened:
Trying to start a container on a windows node results in an error "The container operating system does not match the host operating system."

What you expected to happen:
Pod should start

How to reproduce it (as minimally and precisely as possible):
Try to deploy an application based on nanoserver:1903 to a node running windows server core 1903. Running a 1903 image on a 1903 server should work

Anything else we need to know?:
I can run the image I'm trying to deploy directly on the node (using docker run ...) and it works fine, so the problem is not in the image, but in the interaction between Kubernetes and Windows.

Environment:

Kubernetes version (use kubectl version): v1.14.3
Cloud provider or hardware configuration: Kubernetes is running on windows server core 1903 on bare metal
OS (e.g. from /etc/os-release): Windows Server core 1903
Kernel (e.g. uname -a): 10.0.18362.30
Install tools:
Others: Docker EE 18.09.7

I opened an issue previously with the same error on windows 2019: #74066

That error was caused by a pause image built on a different version of windows. I've checked the kubeletwin/pause image, and the microsoft/nanoserver:latest image, and both are the correct version, and run when I start them directly from Docker.

@jwlogemann

This comment has been minimized.

Copy link
Author

commented Jul 11, 2019

/sig windows

@k8s-ci-robot k8s-ci-robot added sig/windows and removed needs-sig labels Jul 11, 2019

@jwlogemann

This comment has been minimized.

Copy link
Author

commented Jul 11, 2019

It turns out that newer versions of k8s no longer use kubeletwin/pause as Pause image, but use mcr.microsoft.com/k8s/core/pause:1.0.0 instead.

Sadly noone bothered to document this.

The fix for this problem in server 1903 is to use the following Dockerfile:
FROM mcr.microsoft.com/windows/nanoserver:1903
CMD cmd /c ping -t localhost

And then run docker build . -t kubeletwin/pause -t mcr.microsoft.com/k8s/core/pause:1.0.0

I've opened a feature request to enable automatic choosing of the correct pause image here: #80032

@PatrickLang PatrickLang added this to Backlog in SIG-Windows Jul 12, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.