J'ai déployé un conteneur Windows qui s'exécute avec succès dans mon système local à l'aide de docker. Déplacement de l'image vers le registre de conteneurs Azure et déploiement de l'image d'ACR vers AKS.
J'ai créé un nœud Windows à l'aide de l'aperçu de Windows AKS
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
Fichier Docker: p >
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
Manifest YAML
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
En vérifiant l'état du déploiement à l'aide de la commande ci-dessous, j'obtiens l'erreur suivante.
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
J'ai essayé de résoudre ce problème en extrayant la dernière version de l'image IIS du docker qui génère également la même erreur.
3 Réponses :
Je suppose que le problème vient du fait qu'AKS ne prend pas encore en charge les nœuds Windows, donc vous n'avez pas vraiment de nœuds Windows. Vous pouvez créer AKS avec des nœuds Windows, mais c'est en préversion à ce stade.
https://github.com/Azure/AKS/blob /master/previews.md#windows
Si vous avez des nœuds Windows, vous devez vous assurer que l'image de base que vous utilisez correspond à la version du système d'exploitation Windows hôte
J'utilise l'aperçu Windows dans AKS
Il semble que vous ayez juste besoin de changer l'apiVersion en apps / v1, alors le pod fonctionnera bien. Je teste l'apiVersion comme la vôtre et j'obtiens également l'erreur "Back-off restarting failed container".
Après le passage à apps / v1, j'obtiens l'erreur ci-dessous Après le passage à apps / v1, j'obtiens l'erreur ci-dessous D: \ Cloud> kubectl get po NOM READY STATUS RESTARTS AGE ewqimscloudpoc-v1-76b6c6c465-pj9cc 0 / 1 RunContainerError 0 7s D: \ Cloud> kubectl describe ewqimscloudpoc-v1-76b6c6c465-pj9cc erreur: le serveur n'a pas de type de ressource "ewqimscloudpoc-v1-76b6c6c465-pj9cc"
@Hub Modifiez apiVersion
avec la valeur apps / v1
et supprimez la propriété du conteneur args
avec la valeur ["-it"] code> dans le fichier yaml.
Après avoir changé comme vous l'avez dit, même problème
@Hub Je teste votre image de base dans votre Dockerfile et cela fonctionne bien avec mes conseils. Supprimez-vous et recréez-vous le déploiement après avoir modifié le fichier yaml?
Oui, j'ai supprimé le déploiement et je l'ai recréé
@Hub Je ne comprends pas pourquoi le nom du nœud est akssample000000, pas aksewqims000000 dans l'événement pod. De mon côté, il montre le nom du nœud dans le cas où je reçois la commande kubectl get nodes
.
@Hub Pouvez-vous exécuter l'image de base qui a utilisé votre Dockerfile sur le nœud Windows?
Non, je viens de remplacer le nom du projet par l'exemple pour des raisons de confidentialité, mais je l'ai manqué dans la commande kubectl get nodes
Oui essaiera de vous faire savoir
J'obtiens toujours la même erreur: échec du démarrage du conteneur "échantillon": réponse d'erreur du démon: Exemple CreateComputeSystem: le système d'exploitation du conteneur ne correspond pas au système d'exploitation hôte.
@Hub Je pense qu'il y a un problème avec votre cluster. Comment créez-vous le cluster AKS?
J'ai suivi les instructions de ce lien et créé le cluster AKS comme ils l'ont dit docs.microsoft.com/en-us/azure/aks/windows-container-cli
Mais l'image de base Microsoft / iis: la dernière fonctionne correctement lorsqu'elle est déployée dans le même cluster AKS
Je suis confronté au même problème, j'ai créé une image ASP.NET à partir de "mcr.microsoft.com/dotnet/framework/aspnet:4.8" et il ne parvient pas à démarrer à partir d'AKS avec Le système d'exploitation du conteneur ne correspond pas à l'hôte système opérateur.
J'ai eu le problème, le problème était que mon nœud dans Kubernetes fonctionnait sous Windows 2019 et mes images ont été créées avec Windows 2016.
Pour vérifier la version Windows de votre image:
kubectl get nodes -o wide
Ensuite, vous pouvez obtenir des hochements de tête avec kubectl pour afficher la version Windows de votre nœud:
docker inspect <image>:<tag>
Pour le résoudre, je reconstruis mon image à partir d'un Machine Windows 2019, puis cela a fonctionné à partir d'AKS.
Comment créez-vous l'AKS? Il semble que vous n'ayez pas le nœud Windows.
Veuillez vérifier à nouveau la question
Pouvez-vous vérifier à nouveau avec la commande
kubectl get nodes -o wide
? Il pourrait afficher plus de détails sur les nœuds.Oui, j'ai mis à jour les détails dans la question elle-même
Avec mon test, c'est peut-être une erreur. Essayez de changer l'apiVersion en apps / v1.
Après être passé à apps / v1, j'obtiens l'erreur ci-dessous D: \ Cloud> kubectl get po NOM READY STATUS RESTARTS AGE ewqimscloudpoc-v1-76b6c6c465-pj9cc 0/1 RunContainerError 0 7s D: \ Cloud> kubectl describe ewqimscloudpoc-v1- Erreur 76b6c6c465-pj9cc: le serveur n'a pas de type de ressource "ewqimscloudpoc-v1-76b6c6c465-pj9cc"