ОШИБКА развертывания ACR в AKS: операционная система контейнера не соответствует операционной системе хоста

Я развернул контейнер Windows, который успешно работает в моей локальной системе с помощью докера. Переместил образ в реестр контейнеров Azure и развернул образ из ACR в AKS.

Я создал узел Windows, используя предварительный просмотр окон AKS

C:\Users\HTECH>kubectl get nodes -o wide
NAME                                STATUS   ROLES   AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION      CONTAINER-RUNTIME
aks-nodepool1-36563144-vmss000000   Ready    agent   2d3h   v1.14.0   10.240.0.4    <none>        Ubuntu 16.04.6 LTS          4.15.0-1042-azure   docker://3.0.4
akssample000000                     Ready    agent   2d2h   v1.14.0   10.240.0.35   <none>        Windows Server Datacenter   10.0.17763.379      docker://18.9.2

Файл Docker:

FROM microsoft/iis:latest
SHELL ["powershell"]

RUN Install-WindowsFeature NET-Framework-45-ASPNET ; \
    Install-WindowsFeature Web-Asp-Net45

COPY . ewims
RUN Remove-WebSite -Name 'Default Web Site'
RUN New-Website -Name 'sample' -Port 80 \
    -PhysicalPath 'c:\sample' -ApplicationPool '.NET v4.5'
EXPOSE 80

Манифест YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: samplecloudpoc-v1
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  minReadySeconds: 5   
  selector:
    matchLabels:
      app: samplecloudpoc-v1
  template:
    metadata:
      labels:
        app: samplecloudpoc-v1
    spec:
      containers:
      - name: samplecloudpoc-v1
        image: samplecloud.azurecr.io/sample:v1
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
          limits:
            cpu: 100m
        env:
        - name: dev
          value: "samplecloudpoc-v1"
      imagePullSecrets:
        - name: sampleauth
      nodeSelector:
        beta.kubernetes.io/os: windows
---
apiVersion: v1
kind: Service
metadata:
  name: samplecloudpoc-v1
spec:
  loadBalancerIP: 13.90.205.141
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: samplecloudpoc-v1

При проверке статуса развертывания с помощью приведенной ниже команды я получаю следующую ошибку.

D:\Cloud>kubectl describe po samplecloudpoc-v1-5d567d48d9-7gtx8
Name:               samplecloudpoc-v1-5d567d48d9-7gtx8
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               akssample000000/10.240.0.35
Start Time:         Thu, 30 May 2019 13:05:13 +0530
Labels:             app=samplecloudpoc-v1
                    pod-template-hash=5d567d48d9
Annotations:        <none>
Status:             Running
IP:                 10.240.0.44
Controlled By:      ReplicaSet/samplecloudpoc-v1-5d567d48d9
Containers:
  sample:
    Container ID:  docker://0cf6c92b15738c2786caca5b989aa2773c9375352cb4f1d95472ff63cc7b5112
    Image:         samplecloud.azurecr.io/sample:v1
    Image ID:      docker-pullable://samplecloud.azurecr.io/sample@sha256:55ac14dc512abc0f8deebb8b87ee47d51fdfbfd997ce6cee0ab521bd69d42b08
    Port:          80/TCP
    Host Port:     0/TCP
    Args:
      -it
    State:       Waiting
      Reason:    CrashLoopBackOff
    Last State:  Terminated
      Reason:    ContainerCannotRun
      Message:   CreateComputeSystem 0cf6c92b15738c2786caca5b989aa2773c9375352cb4f1d95472ff63cc7b5112: The container operating system does not match the host operating system.
(extra info: {"SystemType":"Container","Name":"0cf6c92b15738c2786caca5b989aa2773c9375352cb4f1d95472ff63cc7b5112","Owner":"docker","VolumePath":"\\\\?\\Volume{f5ff1135-4e83-4baa-961d-f4533dcb6985}","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\docker\\windowsfilter\\0cf6c92b15738c2786caca5b989aa2773c9375352cb4f1d95472ff63cc7b5112","Layers":[{"ID":"b3b88c23-310f-5e95-86bc-117e9f6a6184","Path":"C:\\ProgramData\\docker\\windowsfilter\\0cc15446c028e2fe68601b10a1921a809dedb2a981162c4ed90344d2fde58f0e"},{"ID":"fb1ae57e-89dc-502c-996b-75804b972adc","Path":"C:\\ProgramData\\docker\\windowsfilter\\7217ca2e8bbd2c431c9db44050946ec4f8040c42fdd79f7ceae321e48dc5ca0d"},{"ID":"bb5e3864-b1af-51c8-a8e4-63d88749f082","Path":"C:\\ProgramData\\docker\\windowsfilter\\16f07ffe70a600c95bea2e8297c04cbb6af877562c2cc2ac1693267b152d3793"},{"ID":"2fae8c16-582f-5ab1-acfe-0a88980adec3","Path":"C:\\ProgramData\\docker\\windowsfilter\\a325070d766dd4af490b433d75eac6e1d71297961d89011e5798949eae2e7e4a"},{"ID":"dffd6df2-a500-5985-9c9c-1bc03c9efce3","Path":"C:\\ProgramData\\docker\\windowsfilter\\1221f773d66647fd1dc7aad44693f28843c8385612edb520231c1cb754eb2f97"},{"ID":"7e349a26-81b9-554e-aa13-a6e4286de93e","Path":"C:\\ProgramData\\docker\\windowsfilter\\67d6d22eae7f829e590fde792c6b8129aff3d9f9242850fe72e8d167e284a6b7"},{"ID":"8730db1a-385d-5e9a-a4ec-c45525b5fcb3","Path":"C:\\ProgramData\\docker\\windowsfilter\\2a53ed97b10bd4f67e62e8511e8922496651f3d343dd1889425ba1bedca134fa"},{"ID":"d1e23520-6c0b-5909-8e52-bb6961f80876","Path":"C:\\ProgramData\\docker\\windowsfilter\\d3a27083556be1bb7e36997f0eee2b544f6a16eab94797715bc21db99bf42e88"},{"ID":"18d8ab30-09e9-54e3-a991-f48cca651c8d","Path":"C:\\ProgramData\\docker\\windowsfilter\\9b4143f537ff70f6b1e05b2a5e38e3b05dd2a4b2f624822e32bb2b7cd17b7cca"},{"ID":"2acb6fa3-f27c-50cf-9033-eedb06d5bf32","Path":"C:\\ProgramData\\docker\\windowsfilter\\f71b6708cc4045bf9633f971dd4d6eddb1c5ffeda52d38e648c740e0e277b2df"},{"ID":"0dc40cf1-482a-5fed-af35-c5d1902b95ae","Path":"C:\\ProgramData\\docker\\windowsfilter\\100f3380579a77f2fb2c0f997201e34a0dd2c42e4b0d9a39fb850706aa16e474"}],"ProcessorWeight":5000,"HostName":"samplecloudpoc-v1-5d567d48d9-7gtx8","MappedDirectories":[{"HostPath":"c:\\var\\lib\\kubelet\\pods\\75f48f65-82ad-11e9-8e99-a24a72224ed5\\volumes\\kubernetes.io~secret\\default-token-67g2m","ContainerPath":"c:\\var\\run\\secrets\\kubernetes.io\\serviceaccount","ReadOnly":true,"BandwidthMaximum":0,"IOPSMaximum":0,"CreateInUtilityVM":false}],"HvPartition":false,"NetworkSharedContainerName":"d11237887aec604bfbb9b3cd56fca586975e5a92e04dab4d4ba19b1fcc56ed99"})
      Exit Code:    128
      Started:      Thu, 30 May 2019 13:25:00 +0530
      Finished:     Thu, 30 May 2019 13:25:00 +0530
    Ready:          False
    Restart Count:  5
    Limits:
      cpu:  100m
    Requests:
      cpu:  100m
    Environment:
      dev:  samplecloudpoc-v1
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-67g2m (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-67g2m:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-67g2m
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  beta.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  21m                    default-scheduler         Successfully assigned default/samplecloudpoc-v1-5d567d48d9-7gtx8 to akssample000000
  Normal   Pulling    21m                    kubelet, akssample000000  Pulling image "samplecloud.azurecr.io/sample:v1"
  Normal   Pulled     4m31s                  kubelet, akssample000000  Successfully pulled image "samplecloud.azurecr.io/sample:v1"
  Normal   Created    3m (x5 over 4m31s)     kubelet, akssample000000  Created container sample
  Normal   Pulled     3m (x4 over 4m28s)     kubelet, akssample000000  Container image "samplecloud.azurecr.io/sample:v1" already present on machine
  Warning  Failed     2m59s (x5 over 4m30s)  kubelet, akssample000000  Error: failed to start container "sample": Error response from daemon: CreateComputeSystem sample: The container operating system does not match the host operating system.
(extra info: {"SystemType":"Container","Name":"sample","Owner":"docker","VolumePath":"\\\\?\\Volume{f5ff1135-4e83-4baa-961d-f4533dcb6985}","IgnoreFlushesDuringBoot":true,"LayerFolderPath":"C:\\ProgramData\\docker\\windowsfilter\\sample","Layers":[{"ID":"b3b88c23-310f-5e95-86bc-117e9f6a6184","Path":"C:\\ProgramData\\docker\\windowsfilter\\0cc15446c028e2fe68601b10a1921a809dedb2a981162c4ed90344d2fde58f0e"},{"ID":"fb1ae57e-89dc-502c-996b-75804b972adc","Path":"C:\\ProgramData\\docker\\windowsfilter\\7217ca2e8bbd2c431c9db44050946ec4f8040c42fdd79f7ceae321e48dc5ca0d"},{"ID":"bb5e3864-b1af-51c8-a8e4-63d88749f082","Path":"C:\\ProgramData\\docker\\windowsfilter\\16f07ffe70a600c95bea2e8297c04cbb6af877562c2cc2ac1693267b152d3793"},{"ID":"2fae8c16-582f-5ab1-acfe-0a88980adec3","Path":"C:\\ProgramData\\docker\\windowsfilter\\a325070d766dd4af490b433d75eac6e1d71297961d89011e5798949eae2e7e4a"},{"ID":"dffd6df2-a500-5985-9c9c-1bc03c9efce3","Path":"C:\\ProgramData\\docker\\windowsfilter\\1221f773d66647fd1dc7aad44693f28843c8385612edb520231c1cb754eb2f97"},{"ID":"7e349a26-81b9-554e-aa13-a6e4286de93e","Path":"C:\\ProgramData\\docker\\windowsfilter\\67d6d22eae7f829e590fde792c6b8129aff3d9f9242850fe72e8d167e284a6b7"},{"ID":"8730db1a-385d-5e9a-a4ec-c45525b5fcb3","Path":"C:\\ProgramData\\docker\\windowsfilter\\2a53ed97b10bd4f67e62e8511e8922496651f3d343dd1889425ba1bedca134fa"},{"ID":"d1e23520-6c0b-5909-8e52-bb6961f80876","Path":"C:\\ProgramData\\docker\\windowsfilter\\d3a27083556be1bb7e36997f0eee2b544f6a16eab94797715bc21db99bf42e88"},{"ID":"18d8ab30-09e9-54e3-a991-f48cca651c8d","Path":"C:\\ProgramData\\docker\\windowsfilter\\9b4143f537ff70f6b1e05b2a5e38e3b05dd2a4b2f624822e32bb2b7cd17b7cca"},{"ID":"2acb6fa3-f27c-50cf-9033-eedb06d5bf32","Path":"C:\\ProgramData\\docker\\windowsfilter\\f71b6708cc4045bf9633f971dd4d6eddb1c5ffeda52d38e648c740e0e277b2df"},{"ID":"0dc40cf1-482a-5fed-af35-c5d1902b95ae","Path":"C:\\ProgramData\\docker\\windowsfilter\\100f3380579a77f2fb2c0f997201e34a0dd2c42e4b0d9a39fb850706aa16e474"}],"ProcessorWeight":5000,"HostName":"samplecloudpoc-v1-5d567d48d9-7gtx8","MappedDirectories":[{"HostPath":"c:\\var\\lib\\kubelet\\pods\\75f48f65-82ad-11e9-8e99-a24a72224ed5\\volumes\\kubernetes.io~secret\\default-token-67g2m","ContainerPath":"c:\\var\\run\\secrets\\kubernetes.io\\serviceaccount","ReadOnly":true,"BandwidthMaximum":0,"IOPSMaximum":0,"CreateInUtilityVM":false}],"HvPartition":false,"NetworkSharedContainerName":"d11237887aec604bfbb9b3cd56fca586975e5a92e04dab4d4ba19b1fcc56ed99"})
  Warning  BackOff  119s (x10 over 3m59s)  kubelet, akssample000000  Back-off restarting failed container

Я попытался исправить это, вытащив последнюю версию образа IIS из докера, также выдает ту же ошибку.


person Hub    schedule 30.05.2019    source источник
comment
Как вы создаете AKS? Кажется, у вас нет узла Windows.   -  person Charles Xu    schedule 30.05.2019
comment
Пожалуйста, проверьте вопрос еще раз   -  person Hub    schedule 30.05.2019
comment
Можете еще раз проверить с помощью команды kubectl get nodes -o wide? Он мог бы показать более подробную информацию об узлах.   -  person Charles Xu    schedule 30.05.2019
comment
Да, я обновил детали в самом вопросе   -  person Hub    schedule 30.05.2019
comment
С моим тестом, возможно, это ошибка. Попробуйте изменить apiVersion на apps / v1.   -  person Charles Xu    schedule 30.05.2019
comment
После перехода на apps / v1 я получаю следующую ошибку: D: \ Cloud ›kubectl get po ИМЯ ГОТОВ СОСТОЯНИЕ ВОССТАНОВЛЕНИЕ ВОЗРАСТ ewqimscloudpoc-v1-76b6c6c465-pj9cc 0/1 RunContainerError 0 7s D: \ Cloud› kubectl describe ewqimscloudpoc-v1 76b6c6c465-pj9cc ошибка: сервер не имеет типа ресурса ewqimscloudpoc-v1-76b6c6c465-pj9cc   -  person Hub    schedule 30.05.2019


Ответы (3)


У меня была проблема, проблема заключалась в том, что мой узел в Kubernetes работал в Windows 2019, а мои образы были созданы в Windows 2016.

Чтобы проверить версию Windows для вашего изображения:

docker inspect <image>:<tag>

Затем вы можете получить кивки с помощью kubectl, чтобы просмотреть версию вашего узла для Windows:

kubectl get nodes -o wide

Чтобы решить эту проблему, я воссоздаю свой образ с компьютера с Windows 2019, а затем он работал с AKS.

person glm    schedule 28.10.2019

Я полагаю, проблема в том, что AKS еще не поддерживает узлы Windows, поэтому у вас действительно нет узлов Windows. Вы можете создать AKS с узлами Windows, но на данный момент он находится в режиме предварительного просмотра.

https://github.com/Azure/AKS/blob/master/previews.md#windows

Если у вас есть узлы Windows, вам необходимо убедиться, что базовое изображение, которое вы используете, соответствует версии ОС Windows host.

https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility

person 4c74356b41    schedule 30.05.2019
comment
Я использую предварительный просмотр Windows в AKS - person Hub; 30.05.2019

Кажется, вам просто нужно изменить apiVersion на apps / v1, тогда модуль будет работать нормально. Я тестирую apiVersion как вашу и также получаю сообщение об ошибке «Back-off restarting failed container».

person Charles Xu    schedule 30.05.2019
comment
После перехода на apps / v1 я получаю следующую ошибку After changing to apps/v1 I'm getting the below error D:\Cloud>kubectl get po NAME READY STATUS RESTARTS AGE ewqimscloudpoc-v1-76b6c6c465-pj9cc 0/1 RunContainerError 0 7s D:\Cloud>kubectl describe ewqimscloudpoc-v1-76b6c6c465-pj9cc error: the server doesn't have a resource type "ewqimscloudpoc-v1-76b6c6c465-pj9cc" - person Hub; 30.05.2019
comment
@Hub Измените apiVersion на значение apps/v1 и удалите свойство контейнера args со значением ["-it"] в файле yaml. - person Charles Xu; 31.05.2019
comment
После изменения, как вы сказали, такая же проблема - person Hub; 31.05.2019
comment
@Hub Я тестирую ваш базовый образ в вашем Dockerfile, и он отлично работает с моими советами. Вы удаляете и воссоздаете развертывание после изменения файла yaml? - person Charles Xu; 31.05.2019
comment
Да, я удалил развертывание и воссоздал его - person Hub; 31.05.2019
comment
@Hub Я не понимаю, почему имя узла akssample000000, а не aksewqims000000 в событии pod. На моей стороне он показывает имя узла в том случае, когда я получаю через команду kubectl get nodes. - person Charles Xu; 31.05.2019
comment
@Hub Можете ли вы запустить базовый образ, который использовал ваш Dockerfile, на узле Windows? - person Charles Xu; 31.05.2019
comment
Нет, я только что заменил имя проекта образцом из соображений конфиденциальности, но пропустил это в команде kubectl get nodes - person Hub; 31.05.2019
comment
Да, постараюсь сообщить вам - person Hub; 31.05.2019
comment
Тем не менее, я получаю ту же ошибку: не удалось запустить образец контейнера: ответ об ошибке от демона: пример CreateComputeSystem: операционная система контейнера не соответствует операционной системе хоста. - person Hub; 31.05.2019
comment
@Hub Я думаю, что с вашим кластером что-то не так. Как создать кластер AKS? - person Charles Xu; 31.05.2019
comment
Я выполнил инструкции в этой ссылке и создал кластер AKS, как они сказали docs.microsoft.com/en-us/azure/aks/windows-container-cli - person Hub; 31.05.2019
comment
Но базовый образ microsoft / iis: latest работает нормально при развертывании в том же кластере AKS - person Hub; 31.05.2019
comment
Я столкнулся с той же проблемой, я создал образ ASP.NET из mcr.microsoft.com/dotnet/framework/aspnet:4.8, и он не запускается из AKS с помощью операционной системы контейнера, не соответствующей операционной системе хоста . - person glm; 27.10.2019