【问题标题】:Kubernetes : Deploy only in one node-poolKubernetes:仅部署在一个节点池中
【发布时间】:2020-03-19 01:14:51
【问题描述】:

我目前正在为生产环境创建一个 Kubernetes 集群。 在我的集群中,我有 2 个节点池,我们称它们为 api-poolweb-pool

在我的 api-pool 中,我有 2 个节点,每个节点具有 4CPU 和 15Gb 的 RAM。

我正在尝试在我的api-pool 中部署我的 api 的 8 个副本,每个副本应该有 1 个 CPU 和 3.5Gi 的 RAM。

我的 api.deployment.yaml 看起来像这样:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-dev
spec:
  replicas: 8
  selector:
    matchLabels:
      app: my-api
  template:
    metadata:
      labels:
        app: my-api
    spec:
      containers:
      - name: api-docker
        image: //MY_IMAGE
        imagePullPolicy: Always
        envFrom:
          - configMapRef:
              name: api-dev-env
          - secretRef:
              name: api-dev-secret
        ports:
          - containerPort: 80
        resources:
          requests:
            cpu: "1"
            memory: "3.5Gi"

但我的问题是 Kubernetes 正在我的 web-poolapi-pool 上的节点上部署 pod,但我希望这些 pod 仅部署在我的 api-pool 中。

我尝试标记 api-pool 的节点以使用与标签匹配的选择器,但它不起作用,我不确定它是否应该以这种方式工作。

我如何才能精确到 K8s 以仅在我的 api-pool 中部署这 8 个副本?

【问题讨论】:

    标签: kubernetes deployment google-kubernetes-engine


    【解决方案1】:

    您可以使用nodeselector,这是最简单的节点选择约束推荐形式。

    使用 pool=api 标记 api-pool 的节点

    kubectl label nodes nodename pool=api
    

    在 pod 规范中添加 nodeSelector

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: api-dev
    spec:
      replicas: 8
      selector:
        matchLabels:
          app: my-api
      template:
        metadata:
          labels:
            app: my-api
        spec:
          containers:
          - name: api-docker
            image: //MY_IMAGE
            imagePullPolicy: Always
            envFrom:
              - configMapRef:
                  name: api-dev-env
              - secretRef:
                  name: api-dev-secret
            ports:
              - containerPort: 80
            resources:
              requests:
                cpu: "1"
                memory: "3.5Gi"
          nodeSelector:
            pool: api
    

    对于模式高级用例,您可以使用node affinity

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多