Kubernetes: развертывание только в одном пуле узлов - PullRequest
0 голосов
/ 18 марта 2020

В настоящее время я создаю кластер Kubernetes для производственной среды. В моем кластере у меня есть 2 узла-пула, назовем их api-pool и web-pool

В моем api-pool у меня есть 2 узла с 4CPU и 15 ГБ ОЗУ каждый.

Я пытаюсь развернуть 8 реплик моего API в моем api-pool, каждая реплика должна иметь 1CPU и 3,5 ГБ ОЗУ.

Мой 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-pool, а также на моем api-pool, но я хочу, чтобы эти модули были развернуты только на моем api-pool .

Я пытался пометить свои узлы api-pool, чтобы использовать селектор, который соответствует меткам, но он не работает, и я не уверен, что он должен работать таким образом.

Как я могу указать K8 для развертывания этих 8 реплик только в моих api-pool?

1 Ответ

3 голосов
/ 18 марта 2020

Вы можете использовать nodeselector , который является самой простой рекомендуемой формой ограничения выбора узла.

помечать узлы api-пула с помощью pool = api

kubectl label nodes nodename pool=api

Добавить nodeSelector в модуле c.

---
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

Для расширенных режимов использования можно использовать сходство узлов .

...