В k8s, как позволить узлам самостоятельно выбирать, какие модули они будут принимать - PullRequest
0 голосов
/ 09 мая 2018

Я хочу, чтобы один из моих узлов принимал только какие-то стручки. Интересно, есть ли способ заставить один узел принимать только те модули с определенными метками?

1 Ответ

0 голосов
/ 09 мая 2018

У вас есть два варианта:

  1. Node Affinity : свойство модулей, которые привлекают их к множеству узлов.
  2. Taints & Toleration : Taints противоположны Node Affinity, они позволяют узлу отталкивать множество модулей.

Использование Node Affinity

  1. Вам нужно пометить ваши узлы: kubectl label nodes node1 mylabel=specialpods

  2. Затем при запуске Pod задайте affinity:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: mylabel
            operator: In
            values:
            - specialpods
  containers:
  - name: nginx-container
    image: nginx

Использование Taint & Toleration

Taint & Toleration работают вместе: вы портите узел, а затем указываете допуск для pod, только те Pod будут запланированы на узле, допуск которого "соответствует" taint:

  1. Taint: kubectl taint nodes node1 mytaint=specialpods:NoSchedule

  2. Добавить допуск в Pod Spec:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  tolerations:
  - key: "mytaint"
    operator: "Equal"
    value: "specialpods"
    effect: "NoSchedule"
  containers:
  - name: nginx-container
    image: nginx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...