Usa un recurso compartido de Azure File
GKE en Azure admite la activación de recursos compartidos de Azure Files. Si ya tienes un archivo compartido de Azure File para usar con GKE on Azure, puedes crear un objeto PersistentVolume (PV) y reservarlo para un PersistentVolumeClaim (PVC) específico.
En esta página, se explica cómo crear un PV mediante un compartido existente propagado con datos, y cómo usarlo en un Pod.
Antes de comenzar
- Conéctate a tu clúster.
- Accede a un archivo compartido de Azure File o créalo. Para obtener más información, consulta Crea un archivo compartido de Azure.
Almacena la información de tu cuenta de almacenamiento de Azure
GKE en Azure almacena información para acceder a tu cuenta de almacenamiento de Azure en un secreto. Si no creaste un Secret en tu clúster, debes agregar uno. Si tienes este Secret en tu clúster, ve a Crea un PersistentVolume para un recurso compartido preexistente.
Para crear el secreto, copia el siguiente manifiesto en un archivo llamado “azure-service-account-key.yaml”.
--- apiVersion: v1 kind: Secret metadata: name: azure-secret-account-key type: Opaque stringData: accountname: STORAGE_ACCOUNT_NAME accountkey: STORAGE_ACCOUNT_KEY
Reemplaza lo siguiente:
- STORAGE_ACCOUNT_NAME: Es el nombre de la cuenta de almacenamiento de Azure.
- STORAGE_ACCOUNT_KEY: Es la clave de la cuenta de almacenamiento de Azure.
Aplica el archivo a tu clúster con la herramienta de
kubectl
:kubectl apply -f azure-service-account-key.yaml
Crea un PersistentVolume para un compartido preexistente
Puedes importar un archivo compartido de Azure File existente si especificas un nuevo PV en el clúster. Para crear el PV, haz lo siguiente:
Copia el siguiente YAML en un archivo llamado
existing-volume.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: VOLUME_NAME spec: capacity: storage: VOLUME_CAPACITY storageClassName: standard-rwx accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: file.csi.azure.com readOnly: false volumeHandle: VOLUME_ID
Reemplaza lo siguiente:
- VOLUME_NAME: nombre para el volumen
- VOLUME_CAPACITY: El tamaño del volumen. Por ejemplo,
30Gi
Para obtener más información sobre cómo especificar la capacidad de volumen en Kubernetes, consulta el Significado de memoria. - VOLUME_ID: ID único para el volumen, con el formato de una string
de
RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME#
, en el que - FILE_SHARE_NAME: nombre del archivo compartido de Azure File
Si tu cuenta de almacenamiento está en un grupo de recursos diferente que el clúster, debes agregar una referencia a un Secret que contenga la clave de la cuenta de almacenamiento. Para agregar la referencia, inserta lo siguiente en la sección
spec.csi
:# Optional. Only required if your storageAccount is in a different resource group than the cluster. nodeStageSecretRef: name: NODE_STAGE_SECRET_NAME namespace: NODE_STAGE_SECRET_NAMESPACE
Reemplaza lo siguiente:
- NODE_STAGE_SECRET_NAME: nombre del Secret
- NODE_STAGE_SECRET_NAMESPACE: espacio de nombres que contiene el Secret
Aplica el YAML a tu clúster.
kubectl apply -f existing-volume.yaml
Confirma la creación del PV con
kubectl describe pv
.kubectl describe pv VOLUME_NAME
El resultado de este comando contiene el estado del PV.
Usa el volumen con un PersistentVolumeClaim y un Pod
Después de importar el volumen, puedes crear un PVC y un Pod que conecte el PVC.
Mediante el siguiente YAML, se crea un PVC y se lo conecta a un Pod que ejecuta el servidor web Nginx. Cópialo en un archivo llamado
nginx.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: STORAGE_CLASS_NAME volumeName: VOLUME_NAME accessModes: - ACCESS_MODE resources: requests: storage: VOLUME_CAPACITY --- apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: web-server image: nginx volumeMounts: - mountPath: /var/lib/www/html name: data volumes: - name: data persistentVolumeClaim: claimName: my-pvc
Reemplaza lo siguiente:
- STORAGE_CLASS: nombre de la StorageClass del
PersistentVolume que creaste antes. Por ejemplo,
standard-rwo
- ACCESS_MODE: modo de acceso del volumen. Para Azure Disk,
usa
ReadWriteOnce
. Para Azure File, usaReadWriteMany
. - VOLUME_CAPACITY: El tamaño del volumen. Por ejemplo,
30Gi
- STORAGE_CLASS: nombre de la StorageClass del
PersistentVolume que creaste antes. Por ejemplo,
Aplica el YAML a tu clúster.
kubectl apply -f nginx.yaml
Verifica el estado de la instancia Nginx con
kubectl describe
. El resultado debería tener unSTATUS
deRunning
.kubectl describe pod web-server
Para borrar el Pod, usa el comando
kubectl delete
.kubectl delete -f nginx.yaml
¿Qué sigue?
- Usa controladores de almacenamiento adicionales con GKE en Azure.
- Lee la documentación del controlador CSI de Azure File.