Тенты позволяют узлу отгонять определённые поды, предотвращая их планирование на узел.
В консоли CCE вы также можете пакетно управлять тентами узлов.
.OK.
Тент — это пара «ключ-значение», связанная с эффектом. Доступны следующие эффекты:
Чтобы добавить тент к узлу, выполните kubectl taint node 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
Чтобы просмотреть конфигурацию тента, выполните 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...
Чтобы удалить тент, добавьте дефис (-) в конец команды добавления тента, как показано в следующем примере:
$ 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 добавит тент с ключом node.kubernetes.io/unschedulable и NoSchedule настройкой на узле. После того как узел помечен как несоздаваемый, новые поды не могут быть запланированы на этот узел, но работающие поды не затрагиваются.
Эта операция добавит тент к узлу. Вы можете использовать kubectl, чтобы посмотреть содержимое тента.
$ kubectl describe node 192.168.10.240...Taints: node.kubernetes.io/unschedulable:NoSchedule...
Когда на узле возникают проблемы, Kubernetes автоматически добавляет тент к узлу. Встроенные тенты:
Толерантности применяются к подам и позволяют (но не требуют) подам планироваться на узлы с соответствующими тентами.
Тенты и толерантности работают совместно, обеспечивая, что поды не планируются на неподходящие узлы. К узлу применяются один или несколько тентов. Это означает, что узел не должен принимать поды, которые не терпят эти тенты.
Пример:
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"