混合 CPU/Memory 资源和 nodeSelectors 失败

Mixing CPU/Memory Resources and nodeSelectors fails

我有一个 ACS k8s Windows 集群设置和工作。早些时候我发现我需要使用 nodeSelector,否则 k8s 会尝试将我的 pods 分配给主节点 (Linux),即使我的容器镜像是 Windows。我用过这个:

  nodeSelector:
    beta.kubernetes.io/os: windows

现在我正在尝试为我的 pods 分配内存和 cpu 资源,但 k8s 无法找到合适的节点。它显示此错误:

No nodes are available that match all of the following predicates:: Insufficient memory (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,则部署继续进行,但再次失败,因为 k8s 将其分配给了主节点。所以我卡住了。如何使用 nodeSelector 并分配资源?

@BrettRobi 你部署的k8s是什么版本的? k8s windows 节点没有在 1.6 中实现的节点指标(cpu、内存等),最近添加到 1.7。因此需要 nodeSelector 部署到 windows 节点。您能否验证 kubectl describe nodes、windows 节点是否正确显示了节点指标?