0

我有一个 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 并分配资源?

4

1 回答 1

0

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

于 2017-09-16T00:56:59.553 回答