Reputation: 465
I want to deploy a windows service in azure cluster. I have created the yaml file, which deploys the service, however when I run kubectr get pods
I get the following,
NAME READY STATUS RESTARTS AGE
windowsservice-deploy-5994764596-jfghj 0/1 ImagePullBackOff 0 39m
My yaml file looks as follows,
apiVersion: apps/v1
kind: Deployment
metadata:
name: windowsservice-deploy
labels:
app: windowsservice
spec:
replicas: 1
template:
metadata:
name: windowsservice
labels:
app: windowsservice
spec:
containers:
- name: windowsservice
image: windowskube.azurecr.io/windowsimage:v1
imagePullPolicy: IfNotPresent
restartPolicy: Always
selector:
matchLabels:
app: windowsservice
---
apiVersion: v1
kind: Service
metadata:
name: windows-service
spec:
selector:
app: windowsservice
ports:
- port: 80
type: LoadBalancer
Here is the output kubectl describe pod windowsservice-deploy-5994764596-jfghj
Name: windowsservice-deploy-5994764596-jfghj
Namespace: default
Priority: 0
Node: aks-nodepool1-41533414-vmss000000/10.240.0.4
Start Time: Mon, 15 Jun 2020 11:24:18 +0100
Labels: app=windowsservice
pod-template-hash=5994764596
Annotations: <none>
Status: Pending
IP: 10.244.0.8
IPs: <none>
Controlled By: ReplicaSet/windowsservice-deploy-5994764596
Containers:
workerservice:
Container ID:
Image: windowskube.azurecr.io/windowsimage:v1
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-zvwh8 (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-zvwh8:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-zvwh8
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Failed 18m (x330 over 93m) kubelet, aks-nodepool1-41533414-vmss000000 Error: ImagePullBackOff
Normal BackOff 3m11s (x395 over 93m) kubelet, aks-nodepool1-41533414-vmss000000 Back-off pulling image "windowskube.azurecr.io/windowsimage:v1"
It's a windows service and I haven't deployed on before, am I missing something?
Thanks
Upvotes: 3
Views: 1557
Reputation: 44637
By default, an AKS cluster is created with a node pool that can run Linux containers. Use az aks nodepool
add command to add an additional node pool that can run Windows Server containers alongside the Linux node pool.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1 \
--kubernetes-version 1.16.9
Follow this full guide here
Upvotes: 2
Reputation: 152
Given windowskube.azurecr.io/windowsimage:v1
seems to be your private Azure container registry, I think the missing piece is to provide kubernetes with the login credentials to the private registry.
See: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
As has been mentioned, by doing kubectl describe pod windowsservice-deploy-5994764596-jfghj
and scrolling down to the bottom to view the Events
, you'll get a better error message describing why the image pull has failed.
Upvotes: 2