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.