En esta página, se muestra cómo configurar el StorageClass predeterminado para un clúster de clústeres de Anthos alojados en VMware (GKE On-Prem). También consulta Almacenamiento.
Descripción general
Clústeres de Anthos alojados en VMware se puede integrar en el almacenamiento en archivo o en bloque mediante cualquiera de los siguientes mecanismos:
- Almacenamiento de VMware vSphere
- Complementos de volumen de árbol de Kubernetes
- Container Storage Interface (CSI)
Cuando creas un clúster, clústeres de Anthos alojados en VMware crea un StorageClass de Kubernetes llamado standard
. Este es el StorageClass predeterminado para el clúster.
Para ver información detallada sobre el StorageClass standard
, ingresa el siguiente comando:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml
En el ejemplo anterior, [CLUSTER_KUBECONFIG] es la ruta de acceso al archivo kubeconfig del clúster.
En el resultado, puedes ver que el nombre del StorageClass es standard
. También puedes ver la anotación storageclass.kubernetes.io/is-default-class: "true"
. Esta anotación identifica al StorageClass standard
como el predeterminado.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... name: standard ... parameters: datastore: HOST2-DATASTORE2 diskformat: thin fstype: ext4 provisioner: kubernetes.io/vsphere-volume reclaimPolicy: Delete volumeBindingMode: Immediate
Tu clúster puede tener varios objetos StorageClass, pero solo uno de ellos puede tener la anotación storageclass.kubernetes.io/is-default-class: "true"
y, por lo tanto, ser el predeterminado.
En el resultado anterior, también puedes ver que el aprovisionador es kubernetes.io/vsphere-volume.
Este es el aprovisionador que realiza una acción cuando un cliente solicita un almacenamiento de la clase standard
.
StorageClass predeterminado
Cuando solicitas almacenamiento, puedes especificar un StorageClass. Si no especificas un StorageClass, se usa el predeterminado. Por ejemplo, supongamos que creas un PersistentVolumeClaim que no especifica un StorageClass. El controlador de volumen realizará la reclamación según el StorageClass predeterminado.
Cambia el StorageClass predeterminado
Como administrador del clúster, recomendamos cambiar la clase de almacenamiento predeterminada. Luego, todas las solicitudes de almacenamiento que no especifiquen un StorageClass se entregarán según el StorageClass que elijas. En esta sección, se proporcionan los pasos para cambiar la configuración predeterminada.
Implementa un sistema de almacenamiento nuevo
Implementa un sistema de almacenamiento nuevo y cualquier componente de software para integrar el mecanismo de almacenamiento nuevo a un clúster de Kubernetes. Por ejemplo, es posible que debas instalar un controlador CSI en el clúster.
Este paso depende del proveedor de almacenamiento que uses. En el caso de los controladores CSI, los proveedores deben proporcionar instrucciones para implementarlos en un clúster de Kubernetes. La documentación del controlador CSI debe incluir los parámetros específicos del controlador que proporcionas en tu StorageClass, incluido el nombre del aprovisionador.
Cuando creas un StorageClass para tu dispositivo nuevo, debes asignarle un nombre según sus propiedades (como “rápido” o “con alto grado de replicación”), en lugar del nombre del controlador o del dispositivo específico detrás de él. Esto facilitará la aplicación de políticas de almacenamiento coherentes en todos los clústeres y entornos.
Quita la anotación predeterminada de StorageClass standard
Para abrir el manifiesto de StorageClass standard
en un editor de texto, ingresa el siguiente comando:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard
En el editor de texto, quita la anotación storageclass.kubernetes.io/is-default-class: "true"
. Cierra el editor de texto.
Para verificar que se haya quitado la anotación, ingresa este comando:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml
Crea un StorageClass nuevo
Crea un manifiesto para un StorageClass nuevo.
Incluye la anotación storageclass.kubernetes.io/is-default-class: "true"
.
Por ejemplo:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... name: my-storage-class ... parameters: ... provisioner: [MY_PROVISIONER] ...
Guarda tu manifiesto como un archivo YAML y crea el StorageClass nuevo:
kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]
En el ejemplo anterior, [MANIFEST_FILE] es la ruta de acceso al archivo de manifiesto nuevo de StorageClass.