I've got an ACS k8s Windows cluster setup and working. Early on I discovered I needed to use a nodeSelector or k8s would try and assign my pods to the master node (Linux) even though my container images are Windows. I used this:
nodeSelector:
beta.kubernetes.io/os: windows
Now I'm trying to assign memory and cpu resources to my pods and k8s is unable to find a suitable node. It shows this error:
No nodes are available that match all of the following predicates:: Insufficient memory (2), MatchNodeSelector (1)
I have a super small resource assignment and my nodes have plenty of room for these:
resources:
requests:
memory: 1Mi
And here is the full k8s deployment yaml:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: forest-worker-res
spec:
replicas: 1
revisionHistoryLimit: 0
selector:
matchLabels:
app: forest-worker
template:
metadata:
labels:
app: forest-worker
env: debug
spec:
containers:
- name: forest-worker
image: intmadras.azurecr.io/forest-worker
resources:
requests:
memory: 10Mi
nodeSelector:
beta.kubernetes.io/os: windows
imagePullSecrets:
- name: azurereg
If I remove the nodeSelector then the depoyment proceeds but again fails because k8s assigns it to the master node. So I'm stuck. How do I use a nodeSelector and assign resources?