Gestión de almacenamiento efímero en Kubernetes
Los pods de Kubernetes requieren un almacenamiento local efímero (temporal).
Los pods de Kubernetes utilizan el almacenamiento efímero para el espacio reutilizable, el almacenamiento en caché y los logs. Este almacenamiento es temporal y específico del ciclo de vida del pod. El almacenamiento efímero no se comparte entre los pods y desaparece cuando se suprime el pod.
Para obtener más información general sobre el almacenamiento efímero de Kubernetes, consulte Almacenamiento efímero local en la documentación de Kubernetes.
Los siguientes pasos se aplican a Oracle Kubernetes Engine, pero los conceptos son similares en otros entornos de Kubernetes.
En un pool de nodos, los nodos utilizan sus volúmenes de inicio para el almacenamiento de pod. Debido a que las imágenes se almacenan en el directorio /var
, la mayor parte del almacenamiento efímero está ocupado por imágenes en la partición raíz. El espacio necesario en el volumen de inicio aumenta cada vez que instala una instancia de Oracle Blockchain Platform Enterprise Edition y crea códigos de cadena en ese nodo.
kubectl get --raw "/api/v1/nodes/<node IP>/proxy/stats/summary"
Las secciones rootfs
y fs
del resultado de JSON muestran la capacidad y los bytes disponibles.
Puede actualizar la cantidad de almacenamiento efímero cambiando el tamaño del volumen de inicio mientras se ejecuta un nodo. Para obtener más información, consulte Actualización de un pool de nodos para Oracle Kubernetes Engine.
- En el cluster de Oracle Kubernetes Engine, en Recursos, seleccione Pools de nodos.
- Haga clic en Edit. En la página Editar pool de nodos, seleccione Especificar un tamaño de volumen de inicio personalizado y, a continuación, introduzca un valor de Tamaño de volumen de inicio en GB. Los nodos que se creen utilizarán este valor para el almacenamiento efímero.
- Para cada nodo de trabajador del pool de nodos, complete los pasos siguientes para cambiar el tamaño del volumen de inicio.
- Haga clic en la flecha hacia abajo junto al nodo para ver información detallada sobre el nodo.
- Navegue hasta el volumen de inicio del nodo y, a continuación, haga clic en Editar.
- En la página Editar volumen, en Tamaño y rendimiento de volumen, especifique un valor de Tamaño de volumen en GB y, a continuación, haga clic en Guardar cambios.
- Complete los siguientes pasos para configurar una sesión de Bastion y, a continuación, utilícela para conectarse a los nodos de trabajador privados.
- En la página de detalles de la instancia, haga clic en el separador Oracle Cloud Agent y, a continuación, active el plugin Bastion.
- Busque bastion en la barra de búsqueda y, a continuación, haga clic en Bastion Identity & Security en Services en los resultados.
- Haga clic en Crear bastión.
- En la página Crear bastión, en Red virtual en la nube de destino (VCN), especifique la VCN de Oracle Kubernetes Engine seguida del nombre del cluster. En Subred de destino, especifique el punto final de API de Kubernetes. En Lista de permitidos de bloque de CIDR, introduzca 0.0.0.0/0 y, a continuación, haga clic en Crear bastión.
- Haga clic en el bastión para abrirlo y, a continuación, haga clic en Crear sesión.
- Introduzca opc para el valor Nombre de usuario y seleccione el nodo en la lista Instancia informática.
- Pegue la clave SSH en Add SSH Key.
- Haga clic en Mostrar opciones avanzadas y, a continuación, seleccione la dirección IP del nodo o la instancia en la lista Dirección IP de instancia informática de destino. Esta es la dirección IPv4 privada del nodo o instancia, que está disponible en la sección de información de la instancia.
- Haga clic en Crear sesión.
- En el menú contextual de la sesión, haga clic en Copiar comando SSH.
- Ahora puede conectarse al nodo a través de SSH proporcionando la clave privada con el parámetro -i en el comando SSH.
- Repita los pasos anteriores para cada nodo de trabajador en el cluster.
- Para cada nodo, inicie sesión en el nodo mediante SSH y, a continuación, ejecute los siguientes comandos, que exploran los nuevos dispositivos de almacenamiento de bloques agregados a instancias o nodos y, a continuación, amplían el sistema de archivos cuando el almacenamiento está disponible.
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
Determinación del uso de almacenamiento efímero
Puede ejecutar el siguiente script para ver el uso de almacenamiento efímero de una instancia que se ejecuta en Oracle Kubernetes Engine. El script utiliza la API de Kubernetes para recuperar el uso de almacenamiento efímero para cada pod que se ejecuta en cada 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