Ephemeren Speicher auf Kubernetes verwalten
Kubernetes-Pods erfordern flüchtigen (temporären) lokalen Speicher.
Kubernetes-Pods verwenden flüchtigen Speicher für Scratch-Speicher, Caching und Logs. Dieser Speicher ist temporär und spezifisch für den Lebenszyklus des Pods. Der ephemere Speicher wird nicht über Pods hinweg gemeinsam genutzt und wird beim Löschen des Pods entfernt.
Allgemeine Informationen zu ephemerem Kubernetes-Speicher finden Sie unter Lokaler ephemerer Speicher in der Kubernetes-Dokumentation.
Die folgenden Schritte gelten für die Oracle Kubernetes Engine, aber die Konzepte sind in anderen Kubernetes-Umgebungen ähnlich.
In einem Knotenpool verwenden die Knoten ihre Boot-Volumes für Podspeicher. Da Images im Verzeichnis /var
gespeichert werden, werden die meisten ephemeren Speicher durch Images in der Root-Partition belegt. Der im Boot-Volume benötigte Speicherplatz wird jedes Mal erhöht, wenn Sie eine Instanz von Oracle Blockchain Platform Enterprise Edition installieren und Chaincodes auf diesem Knoten erstellen.
kubectl get --raw "/api/v1/nodes/<node IP>/proxy/stats/summary"
Die Abschnitte rootfs
und fs
des JSON-Ergebnisses zeigen die Kapazität und die verfügbaren Byte an.
Sie können die Menge des flüchtigen Speichers aktualisieren, indem Sie die Größe des Boot-Volumes ändern, während ein Knoten ausgeführt wird. Weitere Informationen finden Sie unter Knotenpools für Oracle Kubernetes Engine aktualisieren.
- Wählen Sie im Oracle Kubernetes Engine-Cluster unter Ressourcen die Option Knotenpools aus.
- Klicken Sie auf Edit. Wählen Sie auf der Seite Knotenpool bearbeiten die Option Benutzerdefinierte Boot-Volume-Größe angeben aus, und geben Sie dann einen Wert für Boot-Volume-Größe in GB ein. Alle erstellten Knoten verwenden diesen Wert für den flüchtigen Speicher.
- Führen Sie für jeden Worker-Knoten im Knotenpool die folgenden Schritte aus, um die Größe des Boot-Volumes zu ändern.
- Klicken Sie auf den Abwärtspfeil neben dem Knoten, um detaillierte Informationen zum Knoten anzuzeigen.
- Navigieren Sie zum Boot-Volume für den Knoten, und klicken Sie auf Bearbeiten.
- Geben Sie auf der Seite Volume bearbeiten unter Volume-Größe und -Performance einen Wert für Volume-Größe in GB an, und klicken Sie auf Änderungen speichern.
- Führen Sie die folgenden Schritte aus, um eine Bastion-Session einzurichten und dann eine Verbindung zu den privaten Worker-Knoten herzustellen.
- Klicken Sie auf der Seite mit den Instanzdetails auf die Registerkarte Oracle Cloud Agent, und aktivieren Sie dann das Bastion-Plug-in.
- Suchen Sie in der Suchleiste nach Bastion, und klicken Sie in den Ergebnissen unter "Services" auf Bastionidentität und -sicherheit.
- Klicken Sie auf Bastion erstellen.
- Geben Sie auf der Seite Bastion erstellen für das virtuelle Cloud-Zielnetzwerk (VCN) das Oracle Kubernetes Engine-VCN gefolgt vom Clusternamen an. Geben Sie unter Zielsubnetz den Kubernetes-API-Endpunkt an. Geben Sie unter CIDR-Blockausschlussliste 0.0.0.0/0 ein, und klicken Sie auf Bastion erstellen.
- Klicken Sie auf die Bastion, um sie zu öffnen, und klicken Sie dann auf Session erstellen.
- Geben Sie opc als Wert für Benutzername ein, und wählen Sie den Knoten in der Liste Compute-Instanz aus.
- Fügen Sie den SSH-Schlüssel unter SSH-Schlüssel hinzufügen ein.
- Klicken Sie auf Erweiterte Optionen anzeigen, und wählen Sie dann die IP-Adresse des Knotens oder der Instanz in der Liste IP-Adresse der Ziel-Compute-Instanz aus. Dies ist die private IPv4-Adresse des Knotens oder der Instanz, die im Informationsabschnitt für die Instanz verfügbar ist.
- Klicken Sie auf Session erstellen.
- Klicken Sie im Kontextmenü für die Session auf SSH-Befehl kopieren.
- Sie können sich jetzt über SSH beim Knoten anmelden, indem Sie den Private Key mit dem Parameter -i im SSH-Befehl angeben.
- Wiederholen Sie die vorherigen Schritte für jeden Worker-Knoten im Cluster.
- Melden Sie sich für jeden Knoten über SSH beim Knoten an, und führen Sie dann die folgenden Befehle aus, mit denen nach neuen Blockspeichergeräten gesucht wird, die Instanzen oder Knoten hinzugefügt wurden. Blenden Sie dann das Dateisystem ein, wenn Speicher verfügbar ist.
sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1 echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2`/device/rescan sudo /usr/libexec/oci-growfs -y
Bestimmung der ephemeren Speicherauslastung
Sie können das folgende Skript ausführen, um die flüchtige Speicherauslastung einer Instanz anzuzeigen, die auf der Oracle Kubernetes Engine ausgeführt wird. Das Skript verwendet die Kubernetes-API, um die flüchtige Speichernutzung für jeden Pod abzurufen, der auf jedem Knoten im Cluster ausgeführt wird.
#!/usr/bin/env bash
kubectl proxy --append-server-path &
set -eo pipefail
{
echo "NODE NAMESPACE POD EPHEMRAL_USED"
for node in $(kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
curl -fsSL "http://127.0.0.1:8001/api/v1/nodes/$node/proxy/stats/summary" |
yq '.pods[] | [.podRef.namespace, .podRef.name, .ephemeral-storage.usedBytes] | join(" ")' |
while read -r namespace name usedBytes; do
# A pod might have no running containers and consequently no ephemeral-storage usage.
echo "$node" "$namespace" "$name" "$(numfmt --to iec "${usedBytes:-0}")"
done
done | sort -k4,4rh
} | column -t