Gestisci lo storage effimero su Kubernetes

I pod Kubernetes richiedono uno storage locale effimero (temporaneo).

I pod Kubernetes utilizzano lo storage effimero per spazio vuoto, inserimento nella cache e log. Questa memorizzazione è temporanea e specifica per il ciclo di vita del pod. Lo storage effimero non viene condiviso tra i pod e scompare quando il pod viene eliminato.

Per informazioni più generali sullo storage effimero Kubernetes, vedere Storage effimero locale nella documentazione di Kubernetes.

I passaggi seguenti si applicano a Oracle Kubernetes Engine, ma i concetti sono simili in altri ambienti Kubernetes.

In un pool di nodi, i nodi utilizzano i relativi volumi di avvio per lo storage dei pod. Poiché le immagini sono memorizzate nella directory /var, la maggior parte della memoria effimera è occupata da immagini nella partizione radice. Lo spazio necessario nel volume di avvio aumenta ogni volta che si installa un'istanza di Oracle Blockchain Platform Enterprise Edition e si creano i codici concatenati su tale nodo.

È possibile utilizzare la seguente chiamata all'API kubelet per controllare lo storage effimero totale e l'importo da assegnare a ciascun pod in un determinato nodo:
kubectl get --raw "/api/v1/nodes/<node IP>/proxy/stats/summary"
Le sezioni rootfs e fs del risultato JSON mostrano la capacità e i byte disponibili.

È possibile aggiornare la quantità di storage effimero ridimensionando il volume di avvio mentre è in esecuzione un nodo. Per ulteriori informazioni, vedere Aggiornamento di un pool di nodi per Oracle Kubernetes Engine.

Completa i passi riportati di seguito per ridimensionare lo storage effimero in un cluster Oracle Kubernetes Engine con nodi in esecuzione.
  1. Nel cluster Oracle Kubernetes Engine, in Risorse, selezionare Pool di nodi.
  2. Fare clic Modifica. Nella pagina Modifica pool di nodi selezionare Specifica una dimensione del volume di avvio personalizzata, quindi immettere un valore per Dimensione del volume di avvio in GB. Tutti i nodi creati utilizzeranno questo valore per lo storage effimero.
  3. Per ogni nodo di lavoro nel pool di nodi, effettuare le operazioni riportate di seguito per ridimensionare il volume di avvio.
    1. Fare clic sulla freccia giù accanto al nodo per visualizzare informazioni dettagliate sul nodo.
    2. Andare al volume di avvio per il nodo, quindi fare clic su Modifica.
    3. Nella pagina Modifica volume in Dimensione e prestazioni volume specificare un valore per Dimensione volume in GB, quindi fare clic su Salva modifiche.
  4. Completare i passi riportati di seguito per impostare una sessione Bastion, quindi utilizzarla per connettersi ai nodi di lavoro privati.
    1. Nella pagina dei dettagli dell'istanza, fare clic sulla scheda Agente Oracle Cloud, quindi abilitare il plugin Bastion.
    2. Cercare il bastion nella barra di ricerca, quindi fare clic su Identità e sicurezza di base in Servizi nei risultati.
    3. Fare clic su Crea bastion.
    4. Nella pagina Crea bastion, per la rete cloud virtuale di destinazione (VCN) specificare la VCN Oracle Kubernetes Engine seguita dal nome del cluster. Per la subnet di destinazione, specificare l'endpoint API Kubernetes. Per la lista di inclusione dei blocchi CIDR, immettere 0.0.0.0/0, quindi fare clic su Crea bastion.
    5. Fare clic sul bastion per aprirlo, quindi fare clic su Crea sessione.
    6. Immettere opc per il valore Nome utente e selezionare il nodo dall'elenco Istanza di computazione.
    7. Incollare la chiave SSH in Aggiungi chiave SSH.
    8. Fare clic su Mostra opzioni avanzate, quindi selezionare l'indirizzo IP del nodo o dell'istanza dalla lista Indirizzo IP dell'istanza di computazione di destinazione. Indirizzo IPv4 privato del nodo o dell'istanza, disponibile nella sezione delle informazioni per l'istanza.
    9. Fare clic su Crea sessione.
    10. Nel menu di scelta rapida della sessione fare clic su Copia comando SSH.
    11. È ora possibile eseguire il login al nodo tramite SSH fornendo la chiave privata con il parametro -i nel comando SSH.
    12. Ripetere i passi precedenti per ogni nodo di lavoro nel cluster.
  5. Per ogni nodo, eseguire il login al nodo tramite SSH, quindi eseguire i comandi seguenti, che analizzano i nuovi dispositivi di storage a blocchi aggiunti alle istanze o ai nodi, quindi espandere il file system quando lo storage è disponibile.
    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

Determinazione dell'uso dello storage effimero

Puoi eseguire lo script seguente per vedere l'uso effimero dello storage di un'istanza in esecuzione su Oracle Kubernetes Engine. Lo script utilizza l'API Kubernetes per recuperare l'uso effimero dello storage per ogni pod in esecuzione su ogni nodo del cluster.

#!/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