Garry A
Garry A

Reputation: 465

Running containers issue

I have a little windows .exe deployed in azure kubernetes cluster. When I run kubectl get podsI get the following result,

NAME                                    READY   STATUS             RESTARTS   AGE
sample-deploy-548d6b9c6b-8v2nb          0/1     CrashLoopBackOff   5          6m12s
sample-deploy-548d6b9c6b-fpmz9          0/1     CrashLoopBackOff   5          6m12s
sample-deploy-548d6b9c6b-hgsj7          0/1     CrashLoopBackOff   5          6m12s

When I run kubectl describe pod sample-deploy-548d6b9c6b-8v2nb I get the following details

Name:           sample-deploy-548d6b9c6b-8v2nb
Namespace:      default
Priority:       0
Node:           akswin000000/10.240.0.35
Start Time:     Thu, 02 Jul 2020 16:59:02 +0100
Labels:         app=sampleservice
                pod-template-hash=548d6b9c6b
Annotations:    <none>
Status:         Running
IP:             10.240.0.45
IPs:            <none>
Controlled By:  ReplicaSet/sample-deploy-548d6b9c6b
Containers:
  sampleservice:
    Container ID:  docker://3d22a9e647d4652227a9986f6940c6806e477f0b790a74f5795840131cc861ca
    Image:         samplekube.azurecr.io/sample:v1
    Image ID:      docker-pullable://samplekube.azurecr.io/sample@sha256:a814e92d5af97b8cfbd6cd0789e164858848f82f0316a771670382ce0bbcba92
    Port:          <none>
    Host Port:     <none>
    State:         Waiting
      Reason:      CrashLoopBackOff
    Last State:    Terminated
      Reason:      ContainerCannotRun
      Message:     hcsshim::CreateComputeSystem 3d22a9e647d4652227a9986f6940c6806e477f0b790a74f5795840131cc861ca: The container operating system does not match the host operating system.
(extra info: {"SystemType":"Container","Name":"3d22a9e647d4652227a9986f6940c6806e477f0b790a74f5795840131cc861ca","Owner":"docker","VolumePath":"\\\\?\\Volume{58649455-b9a5-4d00-b151-485ec8ab6006}","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\docker\
\windowsfilter\\3d22a9e647d4652227a9986f6940c6806e477f0b790a74f5795840131cc861ca","Layers":[{"ID":"7d7579eb-d8f7-5314-b6a0-399937aee9ca","Path":"C:\\ProgramData\\docker\\windowsfilter\\e0357f9d6b48e4b580a09cefedec8aac329894b57a49a30f9dc27795a1626aca"},{"ID":"f9bd195c-3ff
c-5c98-9713-1a7658666667","Path":"C:\\ProgramData\\docker\\windowsfilter\\019404385f250e8807ea3b693e35813b3328b3a14e83da51e8119401f0d20f9f"},{"ID":"0d763990-3499-5a19-b5e9-5e0788397f83","Path":"C:\\ProgramData\\docker\\windowsfilter\\3be0598c3fa3671a1436c670b6964c0a30ddc
2bd2e4011f347e6ef503888826a"},{"ID":"88fb7b4f-d24a-5ddf-9b67-861041ffef72","Path":"C:\\ProgramData\\docker\\windowsfilter\\978600b419ddd768b0b03c09e198d7b8d411cc6ca63b5ba15b6cc5343bb8b2a7"}],"ProcessorWeight":5000,"HostName":"sample-deploy-548d6b9c6b-8v2nb","MappedDirect
ories":[{"HostPath":"c:\\var\\lib\\kubelet\\pods\\8257607b-9506-42af-9068-a3965bb46648\\volumes\\kubernetes.io~secret\\default-token-9wzn2","ContainerPath":"c:\\var\\run\\secrets\\kubernetes.io\\serviceaccount","ReadOnly":true,"BandwidthMaximum":0,"IOPSMaximum":0,"Create
InUtilityVM":false}],"HvPartition":false,"NetworkSharedContainerName":"fbd7d679302c57485ca7d4842528077fbb09e43ad691f47dd4cc84cbd8d3e3db"})
      Exit Code:    128
      Started:      Thu, 02 Jul 2020 16:59:37 +0100
      Finished:     Thu, 02 Jul 2020 16:59:37 +0100
    Ready:          False
    Restart Count:  2
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-9wzn2 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-9wzn2:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-9wzn2
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  kubernetes.io/os=windows
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age                From                   Message
  ----     ------     ----               ----                   -------
  Normal   Scheduled  67s                default-scheduler      Successfully assigned default/sample-deploy-548d6b9c6b-8v2nb to akswin000000
  Warning  BackOff    18s (x2 over 45s)  kubelet, akswin000000  Back-off restarting failed container
  Normal   Pulling    7s (x4 over 60s)   kubelet, akswin000000  Pulling image "samplekube.azurecr.io/sample:v1"
  Normal   Pulled     6s (x4 over 57s)   kubelet, akswin000000  Successfully pulled image "samplekube.azurecr.io/sample:v1"
  Normal   Created    5s (x4 over 57s)   kubelet, akswin000000  Created container sampleservice
  Warning  Failed     5s (x4 over 56s)   kubelet, akswin000000  Error: failed to start container "sampleservice": Error response from daemon: hcsshim::CreateComputeSystem sampleservice: The container operating system does not match the host operating system.
(extra info: {"SystemType":"Container","Name":"sampleservice","Owner":"docker","VolumePath":"\\\\?\\Volume{58649455-b9a5-4d00-b151-485ec8ab6006}","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\docker\\windowsfilter\\sampleservice","Layers":[{"ID":"7d7
579eb-d8f7-5314-b6a0-399937aee9ca","Path":"C:\\ProgramData\\docker\\windowsfilter\\e0357f9d6b48e4b580a09cefedec8aac329894b57a49a30f9dc27795a1626aca"},{"ID":"f9bd195c-3ffc-5c98-9713-1a7658666667","Path":"C:\\ProgramData\\docker\\windowsfilter\\019404385f250e8807ea3b693e35
813b3328b3a14e83da51e8119401f0d20f9f"},{"ID":"0d763990-3499-5a19-b5e9-5e0788397f83","Path":"C:\\ProgramData\\docker\\windowsfilter\\3be0598c3fa3671a1436c670b6964c0a30ddc2bd2e4011f347e6ef503888826a"},{"ID":"88fb7b4f-d24a-5ddf-9b67-861041ffef72","Path":"C:\\ProgramData\\do
cker\\windowsfilter\\978600b419ddd768b0b03c09e198d7b8d411cc6ca63b5ba15b6cc5343bb8b2a7"}],"ProcessorWeight":5000,"HostName":"sample-deploy-548d6b9c6b-8v2nb","MappedDirectories":[{"HostPath":"c:\\var\\lib\\kubelet\\pods\\8257607b-9506-42af-9068-a3965bb46648\\volumes\\kuber
netes.io~secret\\default-token-9wzn2","ContainerPath":"c:\\var\\run\\secrets\\kubernetes.io\\serviceaccount","ReadOnly":true,"BandwidthMaximum":0,"IOPSMaximum":0,"CreateInUtilityVM":false}],"HvPartition":false,"NetworkSharedContainerName":"fbd7d679302c57485ca7d4842528077
fbb09e43ad691f47dd4cc84cbd8d3e3db"})

It seems to me is try to run the containers under linux instead of windows, I have both a windows and linux nodes in my cluster. How can I resolve this. Thanks

Below the kubectl get nodes -o wide --show-labels

NAME                                STATUS   ROLES   AGE     VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION      CONTAINER-RUNTIME       LABELS
aks-agentpool-38156504-vmss000000   Ready    agent   5h17m   v1.15.11   10.240.0.4    <none>        Ubuntu 16.04.6 LTS               4.15.0-1089-azure   docker://3.0.10+azure   agentpool=agentpool,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=Standard_DS2_v2,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=westeurope,failure-domain.beta.kubernetes.io/zone=0,kubernetes.azure.com/cluster=MC_testmass_anthonycluster_westeurope,kubernetes.azure.com/mode=system,kubernetes.azure.com/node-image-version=AKSUbuntu-1604-2020.06.18,kubernetes.azure.com/role=agent,kubernetes.io/arch=amd64,kubernetes.io/hostname=aks-agentpool-38156504-vmss000000,kubernetes.io/os=linux,kubernetes.io/role=agent,node-role.kubernetes.io/agent=,storageprofile=managed,storagetier=Premium_LRS
akswin000000                        Ready    agent   5h14m   v1.15.11   10.240.0.35   <none>        Windows Server 2019 Datacenter   10.0.17763.1282     docker://19.3.5         agentpool=win,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=Standard_DS2_v2,beta.kubernetes.io/os=windows,failure-domain.beta.kubernetes.io/region=westeurope,failure-domain.beta.kubernetes.io/zone=0,kubernetes.azure.com/cluster=MC_testmass_anthonycluster_westeurope,kubernetes.azure.com/node-image-version=AKSWindows-2019-17763.1282.200610,kubernetes.azure.com/role=agent,kubernetes.io/arch=amd64,kubernetes.io/hostname=akswin000000,kubernetes.io/os=windows,kubernetes.io/role=agent,node-role.kubernetes.io/agent=,storageprofile=managed,storagetier=Premium_LRS  

this is the yaml file

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-deploy
  labels:
    app: sampleservice
spec:
  replicas: 3
  template:
    metadata:
      name: sampleservice
      labels:
        app: sampleservice
    spec:
      nodeSelector:
        "kubernetes.io/os": windows
      containers:
      - name: sampleservice
        image: samplekube.azurecr.io/sample:v1
        imagePullPolicy: Always
      restartPolicy: Always    
  selector:
    matchLabels:
      app: sampleservice

---

apiVersion: v1
kind: Service
metadata:
  name: sample-service
spec:
  selector:
    app: sampleservice
  ports:
    - port: 80
  type: LoadBalancer

This is what I am getting now when describe a pod,

Events:
  Type     Reason     Age                From                     Message
  ----     ------     ----               ----                     -------
  Normal   Scheduled  94s                default-scheduler        Successfully assigned default/sample-deploy-6d4b86bf46-djtvf to aksnpwin000000
  Normal   Pulled     31s (x4 over 82s)  kubelet, aksnpwin000000  Container image "masskube.azurecr.io/sample2:v1" already present on machine
  Normal   Created    31s (x4 over 82s)  kubelet, aksnpwin000000  Created container sampleservice
  Normal   Started    29s (x4 over 79s)  kubelet, aksnpwin000000  Started container sampleservice
  Warning  BackOff    3s (x5 over 59s)   kubelet, aksnpwin000000  Back-off restarting failed container

And this is what I get on the after running kubectl logs podname

'Sample.exe' is not recognized as an internal or external command,
operable program or batch file.

Upvotes: 0

Views: 472

Answers (3)

Garry A
Garry A

Reputation: 465

I have managed to resolve the issue by amending the docker file as follows,

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019
WORKDIR /app
EXPOSE 80
COPY /bin/Release .
ENTRYPOINT ["Sample.exe"]

Thanks everyone for the help

Upvotes: 1

Arghya Sadhu
Arghya Sadhu

Reputation: 44549

You have got nodeSelector kubernetes.io/os: windows in the deployment but the windows node has got label beta.kubernetes.io/os=windows. The nodeSelector and label need to exactly match.

You need to have nodeSelector as below in the pod spec to schedule the pod on windows node.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-deploy
  labels:
    app: sampleservice
spec:
  replicas: 3
  template:
    metadata:
      name: sampleservice
      labels:
        app: sampleservice
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sampleservice
        image: samplekube.azurecr.io/sample:v1
        imagePullPolicy: Always
      restartPolicy: Always    
  selector:
    matchLabels:
      app: sampleservice

https://learn.microsoft.com/en-us/azure/aks/windows-container-cli

Upvotes: 0

Brian Pursley
Brian Pursley

Reputation: 1196

You need to set a node selector for your deployment’s template, like this:

   nodeSelector:
      kubernetes.io/os: windows

Upvotes: 0

Related Questions