Ephemeren Speicher auf Kubernetes verwalten
Kubernetes-Pods erfordern ephemeren (temporären) lokalen Speicher.
Kubernetes-Pods verwenden ephemeren Speicher für Scratch Space, Caching und Logs. Dieser Speicher ist temporär und spezifisch für den Lebenszyklus des Pods. Ephemerer Speicher wird nicht über Pods hinweg gemeinsam genutzt und verschwindet, wenn der Pod gelöscht wird.
Weitere allgemeine Informationen zum flüchtigen Kubernetes-Speicher finden Sie unter Lokaler flüchtiger Speicher in der Kubernetes-Dokumentation.
Die folgenden Schritte gelten für Oracle Kubernetes Engine, die Konzepte sind jedoch in anderen Kubernetes-Umgebungen ähnlich.
In einem Knotenpool verwenden die Knoten ihre Boot-Volumes als Podspeicher. Da Images im Verzeichnis /var gespeichert werden, wird der größte Teil des flüchtigen Speichers von 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 Größe des ephemeren Speichers aktualisieren, indem Sie die Größe des Boot-Volumes ändern, während ein Knoten ausgeführt wird. Weitere Informationen finden Sie unter Knotenpool aktualisieren für Oracle Kubernetes Engine.
- 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 ephemeren Speicher.
- Gehen Sie für jeden Worker-Knoten im Knotenpool folgendermaßen vor, 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.
- Gehen Sie folgendermaßen vor, um eine Bastion-Session einzurichten und sie dann für die Verbindung zu den privaten Worker-Knoten zu verwenden.
- Klicken Sie auf der Seite mit den Instanzdetails auf die Registerkarte Oracle Cloud Agent, und aktivieren Sie das Bastion-Plug-in.
- Suchen Sie in der Suchleiste nach Bastion, und klicken Sie in den Ergebnissen unter "Services" auf Bastion Identity & Security.
- 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-Blockausnahmeliste 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 Benutzername ein, und wählen Sie den Knoten aus 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 aus 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 bei dem 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
Ephemere Speicherauslastung bestimmen
Sie können das folgende Skript ausführen, um die ephemere Speichernutzung einer Instanz anzuzeigen, die auf Oracle Kubernetes Engine ausgeführt wird. Das Skript verwendet die Kubernetes-API, um ephemere Speicherauslastung 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