Zum Hauptinhalt springen

Risiken

Pod-Platzierung kontrollieren: Taints, Toleranzen und NodeAffinity in Kubernetes-Clustern

Die Bedeutung von Taints, Toleranzen und NodeAffinity bei der Kubernetes-Pod-Platzierung

Standardmäßig kann jeder Pod auf jedem beliebigen Knoten vorhanden sein oder dort bereitgestellt werden. Mit Taints, Tolerations und NodeAffinities lässt sich steuern, welche Pods auf welchen Knoten erstellt werden. Ohne Taints, Toleranzen und NodeAffinities können die folgenden Risiken auftreten:

Risiko einer unausgewogenen Verteilung der Arbeitslast: Pods werden einem Knoten durch den Standard-Scheduler zugewiesen und dort bereitgestellt. Wenn ein ReplicaSet einen Pod ohne Taints, Toleranzen und NodeAffinities mehrfach repliziert, könnten sich alle Replikate auf einem Knoten befinden. Wenn die Host-VM, auf der sich alle Replikate befinden, beschädigt wird, kann auf die Pods nicht zugegriffen werden, wodurch möglicherweise die gesamte Anwendung unzugänglich wird.

Ressourcenstreitigkeiten: Mehrere ressourcenhungrige Pods könnten auf einem einzigen Knoten landen, was dazu führt, dass eine Knoten-VM ständig unter Last steht, während andere Knoten-VMs wenig oder gar nicht belastet sind.

 

Zu den wichtigsten Fragen, die zu klären sind, gehören:

Welche Pods dürfen oder müssen auf welchen Knoten verwendet werden?
Welche Knoten akzeptieren oder lehnen bestimmte Pods ab?

Verbesserung der Sicherheit und des Ressourcenmanagements mit Taints, Toleranzen und NodeAffinity

Ressourcen-Management: Diese Funktionen sorgen für eine optimale Ressourcennutzung, indem sie Pods je nach Ressourcenbedarf auf die einzelnen Knoten verteilen. Dadurch wird verhindert, dass ein einzelner Knoten durch ressourcenintensive Pods überlastet wird.

Verbesserte Sicherheit: Durch die Trennung sensibler Workloads von öffentlich zugänglichen Workloads verringern diese Funktionen das Risiko, Sicherheitsbedrohungen ausgesetzt zu sein. Taints und Toleranzen können kritische Workloads auf dedizierten Nodes isolieren und verhindern, dass sie mit weniger sicheren oder weniger kritischen Workloads zusammengelegt werden.

Workload-spezifische Knotenpools: Die Einrichtung dedizierter Knoten für bestimmte Arten von Workloads erhöht sowohl die Sicherheit als auch die Leistung. So können beispielsweise Knoten, die sensible Finanztransaktionen abwickeln, von solchen isoliert werden, die öffentliche APIs bedienen.

Übersetzt mit DeepL.com (kostenlose Version)

 

Beispiel für die Verwendung von Taints und Toleranzen

Ein Taint wird auf einen Knoten angewendet, um ihn als ungeeignet für allgemeine Arbeitslasten zu kennzeichnen. Nur Pods mit einer passenden Toleranz können auf diesem Knoten eingeplant werden.

Taint-Beispiel:

apiVersion: v1

kind: Node

metadata:

  name: example-node

spec:

  taints:

  - key: "example-key"

    value: "example-value"

    effect: "NoSchedule"

Toleration Beispiel:

apiVersion: v1

kind: Pod

metadata:

  name: example-pod

spec:

  tolerations:

  - key: "example-key"

    operator: "Equal"

    value: "example-value"

    effect: "NoSchedule"

  containers:

  - name: example-container

    image: example-image

 

Beispiel für die Verwendung von Node Affinity

Die Knotenaffinität legt Regeln dafür fest, auf welchen Knoten ein Pod auf der Grundlage der den Knoten zugewiesenen Etiketten eingeplant werden kann.

 

Node Affinity Beispiel:

apiVersion: v1

kind: Pod

metadata:

  name: example-pod

spec:

  affinity:

    nodeAffinity:

      requiredDuringSchedulingIgnoredDuringExecution:

        nodeSelectorTerms:

        - matchExpressions:

          - key: "example-key"

            operator: In

            values:

            - "example-value"

  containers:

  - name: example-container

    image: example-image

Zusammenfassung

Die Implementierung von Taints, Toleranzen und NodeAffinities verbessert die Robustheit und Sicherheit eines Kubernetes-Clusters durch:

  • Sicherstellung, dass kritische Workloads von weniger kritischen isoliert werden.
  • Verhinderung von Ressourcenkonflikten durch die Verteilung von Pods basierend auf den Ressourcenanforderungen.
  • Verbesserung der Sicherheit durch die Trennung von sensiblen und öffentlich zugänglichen Workloads

 


Orientieren Sie sich an folgenden Maßnahmen: