Garry A
Garry A

Reputation: 465

Deploy a windows service in azure kubernetes cluster

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

Answers (2)

Arghya Sadhu
Arghya Sadhu

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

weichung.shaw
weichung.shaw

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

Related Questions