Тайнты позволяют узлу отгонять определённые pods, чтобы предотвратить их планирование на узел.
В консоли CCE вы также можете пакетно управлять тайнтами узлов.
Введите ключ и значение тэйнта, который будет изменён, выберите эффект тэйнта и нажмите OK.
Тайнт — это пара ключ‑значение, связанная с эффектом. Доступны следующие эффекты:
Чтобы добавить taint к узлу, выполните kubectl taint узел nodename команда следующим образом:
$ kubectl get nodeNAME STATUS ROLES AGE VERSION192.168.10.170 Ready <none> 73d v1.19.8-r1-CCE21.4.1.B003192.168.10.240 Ready <none> 4h8m v1.19.8-r1-CCE21.6.1.2.B001$ kubectl taint node 192.168.10.240 key1=value1:NoSchedulenode/192.168.10.240 tainted
Чтобы просмотреть конфигурацию taint, выполните describe и get команды следующим образом:
$ kubectl describe node 192.168.10.240Name: 192.168.10.240...Taints: key1=value1:NoSchedule...$ kubectl get node 192.168.10.240 -oyamlapiVersion: v1...spec:providerID: 06a5ea3a-0482-11ec-8e1a-0255ac101dc2taints:- effect: NoSchedulekey: key1value: value1...
Чтобы удалить taint, добавьте дефис (-) в конец команды для добавления taint, как показано в следующем примере:
$ kubectl taint node 192.168.10.240 key1=value1:NoSchedule-node/192.168.10.240 untainted$ kubectl describe node 192.168.10.240Name: 192.168.10.240...Taints: <none>...
Вы можете сделать узел unschedulable в консоли. Затем CCE добавит taint с ключом node.kubernetes.io/unschedulable и NoSchedule настройка узла. После того как узел помечен как несогласуемый, новые pods не могут быть запланированы на этот узел, но pods, работающие на узле, не затронуты.
Эта операция добавит taint к узлу. Вы можете использовать kubectl для просмотра содержимого taint.
$ kubectl describe node 192.168.10.240...Taints: node.kubernetes.io/unschedulable:NoSchedule...
Когда на узле возникают проблемы, Kubernetes автоматически добавляет taint к узлу. Встроенные taint выглядят следующим образом:
Tolerations применяются к pods, и позволяют (но не требуют), чтобы pods планировались на узлы с соответствующими taint‑ами.
Тейнты и толеранции работают вместе, чтобы обеспечить, что поды не планируются на неподходящие узлы. Один или несколько тейнтов применяются к узлу. Это указывает, что узел не должен принимать поды, которые не терпят тейнты.
Пример:
apiVersion: v1kind: Podmetadata:name: nginxlabels:env: testspec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresenttolerations:- key: "key1"operator: "Equal"value: "value1"effect: "NoSchedule"
В приведённом выше примере толерантная метка пода имеет значение key1=value1, а эффект тейнта — NoSchedule. Следовательно, под может быть запланирован на соответствующий узел.
Вы также можете настроить толеранции, аналогичные следующей информации, что указывает, что под может быть запланирован на узел, когда у узла есть тейнт key1:
tolerations:- key: "key1"operator: "Exists"effect: "NoSchedule"