K8s POD Contamination and Tolerance

La pile technologique de Jeff 2021-11-25 19:02:32
k8s pod contamination tolerance

PodTaches et tolérance

Le grand vernaculaire explique d'abord la tache et la tolérance

Taches:Être tachéTaintsNode of,Ne sera pas déployé par l'ordonnanceurpodApplication.
Tolérance:Autoriser le déploiement de l'ordonnanceurpodAppliquer aux tachesTaintsNode of.

Pourquoi utiliser des taches et de la tolérance?

Pourquoi utiliser des taches?
Parce quek8sChaque demande de Cluster doit allermasterNoeudkube-apiserver,Donc,masterLes noeuds sont très importants,Alors...podLes applications ne sont généralement pas déployéesmasterNoeud.Voilà.masterLes noeuds sont tachésTaints,De cette façon, l'ordonnancement ne sera pas déployé sur des machines tachées
Pourquoi la tolérance?
Comme se faire encrasserTaintsDemasterLe noeud doit déployer unpodApplication,Une déclaration de tolérance est alors nécessaire,De cette façon, il est possible de programmer les machines avec des taches

Explication officielle

PournodeAffinityQu'il s'agisse de stratégies dures ou douces,C'est le planning. pod Au noeud prévu,EtTaintsExactement le contraire.,Si un noeud est marqué comme Taints ,À moins que pod Aussi identifié comme tolérant les noeuds tachés,Sinon Taints Les noeuds ne sont pas programmés pod.
Par exemple, les utilisateurs veulent Master Noeud réservé à Kubernetes Utilisation des composants du système,Ou réserver un groupe de ressources spéciales à certains pod,Les taches sont utiles,pod Il n'est plus programmé pour taint Noeuds marqués.Nous utilisonskubeadmLe Cluster construit est par défaut à master Le noeud a été marqué d'une tache,Donc nous avons vu notre pod N'a pas été programmé master Monte.:
$ kubectl describe node master
Name: master
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/hostname=master
node-role.kubernetes.io/master=
......
Taints: node-role.kubernetes.io/master:NoSchedule
Unschedulable: false
Nous pouvons utiliser les commandes ci - dessus pour voir master Informations sur le noeud,Il y a un article sur Taints Informations sur:node-role.kubernetes.io/master:NoSchedule,C'est tout. master Le noeud est marqué d'une tache,Où les paramètres affectés sontNoSchedule,Représentation pod Ne sera pas programmé pour être marqué comme taints Node of

TaintsParamètres

node-role.kubernetes.io/master:NoSchedule
NoSchedule: Ne pas programmer sur le noeud de tache
PreferNoSchedule:NoSchedule Soft Policy version of,Cela signifie essayer de ne pas programmer les noeuds tachés
NoExecute:Cette option signifie qu'une fois queTaintEntrée en vigueur,Si le noeud fonctionnepodPas de correspondanceTolerateParamètres,Il sera expulsé directement

Marquage des taches

# kubectl taint node sg-14 test=sg14:PreferNoSchedule
node/sg-14 tainted

Le nom dessus sera sg-14 Les noeuds sont marqués comme des taches,La stratégie d'impact est PreferNoSchedule,Ça n'affectera que le nouveau pod Répartition,Si vous voulez toujours pod Dispatch to taint Sur le noeud,Il doit être Spec FaireTolerationDéfinition,Pour programmer ce noeud,

Parce que master Les noeuds sont marqués comme des noeuds tachés,C'est pour ça qu'on doit penser pod Capable de programmer jusqu'à master Noeud à,Une déclaration de tolérance accrue est nécessaire:

Tolérance aux taches

tolerations:
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"

eg:

apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
spec:
replicas: 1 # podNombre
selector: # Sélecteur
matchLabels: # Étiquettes
release: stable # Sélectionnez l'étiquette
template: # Modèle
metadata:
name: test-tag # Nom du Contrôleur
labels:
release: stable # Définir l'étiquette du Contrôleur
spec:
containers:
- name: nginx # Nom du miroir
image: nginx # Miroir
tolerations:
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"

Puis créez la ressource ci - dessus,Nous pouvons voir qu'il y a un pod Copie envoyée à master Noeud,C'est ainsi que la tolérance est utilisée.

Pour tolerations écriture des attributs,Parmi euxpodDe key、value、effect Avec Node De Taint Les réglages doivent être cohérents, Les points suivants illustrent également:

Si operator La valeur de Exists,Et value La propriété peut être omise
Si operator La valeur de Equal,Ça veut dire key Avec value La relation entre equal(égal à)
Si non spécifié operator Propriétés,La valeur par défaut est Equal
En plus,Et deux valeurs spéciales:
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoScheduale"

Effacer toutes les taches de noeud

[root@sg-14 deployment]# kubectl taint node sg-14 test-
node/sg-14 untainted
Les taches de noeud ont été enlevées
版权声明
本文为[La pile technologique de Jeff]所创,转载请带上原文链接,感谢
https://javamana.com/2021/11/20211125190004110n.html

  1. 图解 Kafka 线程模型及其设计缺陷
  2. Add data files for Oracle tablespaces or temporary tablespaces
  3. Intellij IDEA神器居然还有这些小技巧,mysql集群搭建视频
  4. IntelliJ IDEA(2019)之Web项目创建,掌门一对一java面试题
  5. InnoDB(2,如何访问Redis中的海量数据
  6. InheritableThreadLocal使用详解,java多线程面试题及答案整理
  7. How does Oracle modify the data type of a column
  8. Oracle 12C 12.1.0.1.0 management control file official document translation instructions
  9. Oracle 10g 10.2.0.1 in Oracle Linux 5.4 32bit RAC installation manual (Yimo Xiyang)
  10. Oracle 12C in Oracle Linux 6.5 64bit installation manual
  11. 一天十道Java面试题----第一天(面向对象-------》ArrayList和LinkedList)
  12. Schéma du modèle de fil Kafka et de ses défauts de conception
  13. Starting and shutting down Oracle RAC database cluster
  14. CRS_ Oracle CRS stack is already configured and will be running under init(1M)
  15. Common skills of Oracle stored procedure
  16. Check the number of CPUs, core books and threads of the Linux system
  17. jQuery-实例方法
  18. Oracle de duplicated data
  19. jQuery-dom和jQuery,入口函数(基本知识)
  20. Oracle creates unique constraints on columns that already have duplicate data
  21. JavaScript-拷贝
  22. JavaScript-this指向问题
  23.  There is ^ [[a garbled code problem in the up and down keys in Oracle sqlplus
  24. JavaScript-封装与继承(两种)
  25. JavaScript-包装类型
  26. JavaScript-传值(引用类型,基本类型)
  27. JavaScript-面向对象(构造函数,实例成员,静态成员)
  28. JavaScript-解构赋值
  29. JavaScript-箭头函数
  30. JavaScript-参数
  31. JavaScript-预解析(变量提升)
  32. JavaScript-闭包closure
  33. JavaScript-声明变量的关键字
  34. JavaScript - mot - clé pour déclarer une variable
  35. Fermeture de fermeture JavaScript
  36. JavaScript Pre - parse (promotion des variables)
  37. Paramètres JavaScript
  38. Fonction de flèche JavaScript
  39. JavaScript - déconstruction assignations
  40. Common annotations in springboot
  41. Building CentOS 7.6 with Linux
  42. JavaScript - orienté objet (constructeur, membre d'instance, membre statique)
  43. JavaScript value Transfer (reference type, Basic type)
  44. JavaScript - type d'emballage
  45. linux deepin/ubuntu安装flameshot火焰截图
  46. JavaScript - encapsulation et héritage (deux)
  47. JavaScript JS method for writing 99 multiplication table
  48. 從零開始學java - 第二十五天
  49. Apprendre Java à partir de zéro - jour 25
  50. Les voitures d'hiver, les voitures électriques et les voitures à essence ne sont pas les mêmes?
  51. JavaScript - ceci pointe vers le problème
  52. Copie JavaScript
  53. Spring boot quickly integrates swagger
  54. linux deepin/ubuntu安裝flameshot火焰截圖
  55. Capture d'écran de flamme de l'installateur de flamme Linux deepin / Ubuntu
  56. Jquery DOM et jquery, fonctions d'entrée (bases)
  57. Méthode d'instance jquery
  58. Méthode et démonstration de code dans l'interface de liste en Java
  59. Démarrage du Zookeeper
  60. Java oom Cognition