Zeitlimit für PDB-Verstoß konfigurieren

In diesem Dokument wird gezeigt, wie Sie einen Zeitlimitwert konfigurieren, falls der Verbindungsausgleich eines Clusterknotens gegen ein Budget für Pod-Störungen (PDB) verstößt.

Wenn ein Knoten per Drain beendet wird, müssen alle Pods auf dem Knoten beendet werden. Wenn das Beenden eines Pods gegen eine PDB verstößt, wird das Leeren des Knotens standardmäßig blockiert.

In einigen Situationen können Sie eine maximale Zeit konfigurieren, die das Leeren des Knotens durch einen PDB-Verstoß blockieren kann. Sie können beispielsweise einen Zeitüberschreitungswert konfigurieren, bevor Sie eine Clusteraktualisierung oder ein Upgrade starten. Alternativ müssen Sie möglicherweise ein Zeitlimit für einen Knoten konfigurieren, der derzeit nicht durch einen PDB-Verstoß blockiert wird.

Zeitlimitwert festlegen

Jeder Knoten wird durch ein Maschinenobjekt dargestellt.

Listen Sie die Maschinenobjekte im Cluster auf:

kubectl --kubeconfig CLUSTER_KUBECONFIG get machines

Ersetzen Sie CLUSTR_KUBECONIFG durch den Pfad der kubeconfig-Datei des Clusters.

Beispielausgabe:

my-node-pool-7f864959cd-cw472
my-node-pool-7f864959cd-kh86m
my-node-pool-7f864959cd-wtpvx

Öffnen Sie ein Maschinenobjekt zur Bearbeitung:

kubectl --kubeconfig CLUSTER_KUBECONFIG edit machine MACHINE_NAME

Ersetzen Sie MACHINE_NAME durch den Namen des Maschinenobjekts.

Fügen Sie im Editor diese Annotation hinzu:

onprem.cluster.gke.io/pdb-violation-timeout: TIMEOUT

Ersetzen Sie TIMEOUT durch einen String, der die Dauer des Zeitlimits angibt. Gültige Einheiten sind „s”, „m”, „h”. Beispiele für Zeitwerte sind „1h”, „1h30m”, „10m” und „100s”.

Wenn Sie das Zeitlimit auf „0s” setzen, tritt bei PDB-Verstößen keine Zeitüberschreitung auf. Dies entspricht dem Standardverhalten.

Beispiel:

apiVersion: cluster.k8s.io/v1alpha1
kind: Machine
metadata:
  annotations:
    kubelet-version: 1.23.5-gke.1502
    onprem.cluster.gke.io/gke-on-prem-version: 1.12.0-gke.430
    vm-ip-address: 203.0.113.2
    onprem.cluster.gke.io/pdb-violation-timeout: "5m"

Schließen Sie die Bearbeitungssitzung.

Rolling Updates

Bei einem Rolling Update wird zuerst eine neue Surge-Maschine erstellt. Anschließend wird der alte Knoten per Drain beendet. Nachdem alle Pods darauf entfernt wurden, werden sowohl das alte Maschinenobjekt als auch das Knotenobjekt gelöscht. Die Zeitüberschreitungsannotation für PDB-Verstöße bleibt im neu erstellten Maschinenobjekt nicht bestehen.