Kubernetes запрет узлов для подов

У каждой ноды есть ограничения, например по умолчанию главному узлу кластера не могут быть назначены не системные поды, он имеет ограничение NoSchedule

У каждого пода есть допущения, например под kube-proxy имеет допущение NoSchedule, и может быть назначен master ноде в кластере

С каждым ограничением связано его проявление:

  • Noschedule — модули не будут назначаться узлу, если они не допускают ограничения
  • PreferNoSchedule — планировщик пытается избежать назначения модуля узлам, но назначит под, если его некуда больше назначить
  • NoExecute — если его добавить на узел, то работающие поды, которые не допускают ограничения NoExecute, будут вытеснены с узла

Разделение на примере прод и дев окружения в одном кластере K8S

kubectl taint node node1.k8s node-type=production:NoSchedule

Эта команда добавляет ограничение с ключом node-type, значением production и проявлением NoSchedule

Теперь, обычные поды не будут назначаться этому узлу

Теперь создадим под, у которого будет разрешение для этого узла

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: prod
spec:
  replicas: 5
  template:
    spec:
    ...
      tolerations:
      - key: node-type
        Operator: Equal
        value: production
        effect: NoSchedule

Допуски можно использовать для определения времени переназначения пода на другой узел, если он не доступен

 

K8S

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.