Familiarícese con varios conceptos fundamentales para el entorno de Almacenamiento nativo en la nube de vSphere.

Clúster de Kubernetes
Un clúster de máquinas virtuales en el que se ejecutan los servicios plano de control y de trabajo de Kubernetes. Las aplicaciones en contenedor se implementan sobre el clúster de Kubernetes. Las aplicaciones pueden tener estado o no.
Pod
Un pod es un grupo de uno o varios contenedores que comparten recursos como el almacenamiento y la red. Los contenedores dentro de un pod se inician, se detienen y se replican como un grupo.
Orquestador de contenedores
Plataformas de código abierto (como Kubernetes) para implementar, escalar y administrar las aplicaciones en contenedor en clústeres de hosts. Las plataformas proporcionan una infraestructura centrada en contenedores.
Aplicación con estado
A medida que las aplicaciones en contenedor pasan de no tener estado a tenerlo, requieren un almacenamiento persistente. A diferencia de las aplicaciones sin estado, las cuales no guardan datos entre sesiones, las aplicaciones con estado sí guardan datos en un almacenamiento persistente. Estos datos que se conservan se denominan estado de la aplicación. Posteriormente, puede recuperarlos y utilizarlos en la siguiente sesión. La mayoría de las aplicaciones tienen estado. Una base de datos es un ejemplo de una aplicación con estado.
PersistentVolume
Las aplicaciones con estado utilizan objetos PersistentVolume para almacenar sus datos. Un objeto PersistentVolume es un volumen de Kubernetes capaz de conservar su estado y sus datos. Es independiente de un pod y puede seguir existiendo incluso cuando el pod se elimina o se vuelve a configurar. En el entorno de vSphere, los objetos PersistentVolume usan discos virtuales (VMDK) como almacenamiento de respaldo.
StorageClass
Kubernetes utiliza una StorageClass para definir diferentes niveles de almacenamiento y para describir diferentes tipos de requisitos de almacenamiento que respaldan PersistentVolume. En el entorno de vSphere, una clase de almacenamiento se puede vincular con una directiva de almacenamiento. Como administrador de vSphere, cree directivas de almacenamiento que describan diferentes requisitos de almacenamiento. Las directivas de almacenamiento de máquina virtual pueden usarse como parte de la definición StorageClass del aprovisionamiento dinámico de volúmenes.

El siguiente archivo YAML de ejemplo hace referencia a la directiva de almacenamiento Gold que creó anteriormente con vSphere Client. El VMDK de volumen persistente resultante se ubica en un almacén de datos compatible que cumple con los requisitos de la directiva de almacenamiento Gold.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gold-sc
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "Gold"
  
PersistentVolumeClaim
Generalmente, las aplicaciones o los pods pueden solicitar almacenamiento persistente a través de PersistentVolumeClaim. PersistentVolumeClaim especifica el tipo y la clase de almacenamiento, el modo de acceso, ya sea ReadWriteOnce o ReadWriteMany, y otros parámetros para PersistentVolume. A continuación, la solicitud puede aprovisionar de forma dinámica el objeto de PersistentVolume correspondiente y el disco virtual subyacente en el entorno de vSphere.
Cuando se crea la reclamación, PersistentVolume se enlaza automáticamente a ella. Los pods usan la reclamación para montar el objeto PersistentVolume y acceder al almacenamiento.
Cuando esta notificación se elimina, se eliminan también el objeto PersistentVolume y el almacenamiento subyacente.
kind: PersistentVolumeClaim
metadata:
 name: persistent-VMDK
spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: 5Gi
 storageClassName: gold-sc
StatefulSet
Un objeto StatefulSet administra la implementación y el escalado de las aplicaciones con estado. El objeto StatefulSet es valioso para aplicaciones que requieren identificadores estables o un almacenamiento persistente estable. StatefulSet se puede configurar para que incluya una entrada volumeClaimTemplates, la cual genera automáticamente los objetos PersistentVolumeClaim.