У каждой ноды есть ограничения, например по умолчанию главному узлу кластера не могут быть назначены не системные поды, он имеет ограничение 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
Допуски можно использовать для определения времени переназначения пода на другой узел, если он не доступен
0 Comment