En primer lugar, monté con éxito mi ruta de Linux en Pod. Utilicé el recurso compartido de archivos de Azure y las carpetas montadas aparecen en el recurso compartido de archivos.
volumeMounts: - name: ads-filesharevolume mountPath: /opt/front/arena/host volumes: - name: ads-filesharevolume azureFile: secretName: fa-fileshare-secret shareName: faselectaksshare readOnly: falseAhora en File Share agregué una subcarpeta "windows" para el montaje, en los registros menciona que se está montando correctamente pero no tengo nada montado (las carpetas y los archivos no aparecen en el recurso compartido montado como es el caso de Linux)
args: [ "-license_file", "C:/Host/dat/license.dat", "-key_file", "C:/Host/dat/license.key"] volumeMounts: - name: ads-win-filesharevolume mountPath: "C:\\host" volumes: - name: ads-win-filesharevolume azureFile: secretName: fa-fileshare-secret shareName: faselectaksshare\windows readOnly: false Para mountPath probé con: C:\\host y C:/host y /c/host También para shareName probé inicialmente con faselectaksshare/windows pero arrojó una excepción.
En Pod describe, puedo ver que todo parece estar bien, pero mis carpetas esperadas de C:/host no aparecen en mi ruta de Azure File Share en la subcarpeta de Windows. También recibo resultados similares para todos los demás casos.
Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-nx49r (ro) C:/host from ads-win-filesharevolume (rw) Conditions: Type Status Initialized True Ready False ContainersReady False PodScheduled True Volumes: ads-win-filesharevolume: Type: AzureFile (an Azure File Service mount on the host and bind mount to the pod) SecretName: fa-fileshare-secret ShareName: faselectaksshare\windows ReadOnly: false¡Por favor ayuda! Gracias
ACTUALIZACIÓN: también probé este enfoque con subPath y nuevamente no tengo ninguna carpeta montada. Además, no obtengo ningún error en el registro o en el comando describe pod
volumeMounts: - name: ads-filesharevolume mountPath: /host subPath: windows volumes: - name: ads-filesharevolume azureFile: secretName: fa-fileshare-secret shareName: faselectaksshare readOnly: falseDe acuerdo con el siguiente hilo, wsl2 aún no admite volúmenes de hostPath.
Fuente del hilo: https://github.com/docker/for-win/issues/5325 Mire este comentario: https://github.com/docker/for-win/issues/5325#issuecomment-570683131
Intenta cambiar esta línea
# For "C://host" mountPath: /run/desktop/mnt/host/c/hostTanto los contenedores de Windows como los de Linux se ejecutan al mismo tiempo:
Montaje para Linux:
volumeMounts: - name: azure mountPath: /mnt/azure volumes: - name: azure azureFile: shareName: aksshare/linux secretName: azure-secretMontaje para Windows:
volumeMounts: - name: azure mountPath: "C:\\fileshare" volumes: - name: azure azureFile: shareName: aksshare\windows secretName: azure-secretY los archivos que existen en cada subcarpeta del recurso compartido de archivos no afectan a los demás.
Se supone que kubelet monta Azure File Share en el contenedor.
Utiliza https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/mount-utils/mount_windows.go y https://github.com/kubernetes/kubernetes/blob/master/ pkg/volume/azure_file/azure_file.go
Utiliza SMB Mapping y luego mklink para montar Azure File Share en el contenedor.
Inicie kubelet en el nodo de Windows donde se ejecuta el Pod y se supone que Azure File Share se monta con --v 4 Flag para que podamos ver los mensajes de depuración en el registro de kubelet cuando intenta montar Azure File Share en el contenedor. Luego, proporcione los mensajes en el registro de kubelet. Debería ver los siguientes mensajes de https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/mount-utils/mount_windows.go
klog.V(3).Infof("mounting source (%q), target (%q), with options (%q)", source, target, sanitizedOptionsForLogging) klog.V(4).Infof("mount options(%q) source:%q, target:%q, fstype:%q, begin to mount", sanitizedOptionsForLogging, source, target, fstype) klog.Warningf("SMB Mapping(%s) returned with error(%v), output(%s)", source, err, string(output)) klog.V(2).Infof("SMB Mapping(%s) already exists while it's not valid, return error: %v, now begin to remove and remount", source, err) klog.V(2).Infof("SMB Mapping(%s) already exists and is still valid, skip error(%v)", source, err) klog.Errorf("mklink failed: %v, source(%q) target(%q) output: %q", err, mklinkSource, target, string(output)) klog.V(2).Infof("mklink source(%q) on target(%q) successfully, output: %q", mklinkSource, target, string(output))