Taints & Tolerations

Для распрСдСлСния Pods ΠΏΠΎ Nodes примСняСтся сочСтаниС покраски (taint) ΠΈ восприимчивости (toleration) ΠΊ Π½Π΅ΠΉ.

Taints

ΠŸΠΎΠΊΡ€Π°ΡΠΊΠ° Node Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ kube-scheduler, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 1 ΠΈΠ· 3 эффСктов:

  • NoSchedule - Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ сюда Pods Π±Π΅Π· toleration;
  • PreferNo Schedule - Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Pods Π±Π΅Π· toleration с наимСньшим ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ, Ссли большС Π½Π΅ΠΊΡƒΠ΄Π°;
  • NoExecute - Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ сюда Pods Π±Π΅Π· toleration, ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚ΡƒΡ‚ Pods ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ пСрСнСсти ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π΅Ρ‰Ρ‘.

ΠŸΠΎΠΊΡ€Π°ΡΠΊΠ° node:

kubectl taint nodes <имя node> key=value:effect

kubectl taint nodes node01 app=myapp:NoSchedule # ΠΏΡ€ΠΈΠΌΠ΅Ρ€
kubectl taint nodes node01 app=myapp:NoSchedule- # минус Π² ΠΊΠΎΠ½Ρ†Π΅ снимаСт покрас

Tolerations

ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΎΡΠΏΡ€ΠΈΠΈΠΌΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Pod ΠΊ покраскС:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: nginx-controller
    image: nginx
  tolerations:
  - key: "app"
    operator: "Equal"
    value: "blue"
    effect: "NoSchedule"