我有一个 ACS k8s Windows 集群设置和工作。早期我发现我需要使用 nodeSelector,否则即使我的容器镜像是 Windows,k8s 也会尝试将我的 pod 分配给主节点(Linux)。我用这个:
nodeSelector:
beta.kubernetes.io/os: windows
现在我正在尝试为我的 pod 分配内存和 cpu 资源,而 k8s 无法找到合适的节点。它显示了这个错误:
没有与以下所有谓词匹配的节点可用:内存不足 (2),MatchNodeSelector (1)
我有一个超小的资源分配,我的节点有足够的空间来处理这些:
resources:
requests:
memory: 1Mi
这是完整的 k8s 部署 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
如果我删除了 nodeSelector,那么 depoyment 会继续进行,但又会失败,因为 k8s 将它分配给了主节点。所以我被困住了。如何使用 nodeSelector 并分配资源?