在Storage Explorer中查看ALS永久卷数据

时间:2018-06-19 16:01:23

标签: azure kubernetes

任何人都知道我如何在Azure Storage Explorer或门户中看到我的aks持久卷(azurefile)数据吗?

持久卷正在工作,但我无法以某种方式看到原始文件。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: azurefile
provisioner: kubernetes.io/azure-file
parameters:
  storageAccount: trstorage


apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql
spec:
  capacity:
    storage: 1Gi
  hostPath:
    path: "/data/mysql"
  accessModes:
  - ReadWriteMany
  storageClassName: azurefile
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: azurefile
  resources:
    requests:
      storage: 500Mi

p.s。我知道对数据库使用azurefile是个坏主意,所以现在就忽略它。

当我查看存储帐户时,我看不到任何文件,这是我不了解的..

2 个答案:

答案 0 :(得分:1)

对于您的问题,我了解到您已在Azure存储中为Azure Kubenets中的mysql执行了持久卷。

首先,如果您的安装路径正确并且mysql将自动创建文件的路径本身。您将在Azure Storage Explorer或带有文件共享的门户中看到文件。

第二,您可以检查Azure存储文件共享是否已正确安装到安装点。您可以使用命令kubectl describe pod podName进行检查。生成的屏幕截图将如下所示。 enter image description here

或使用命令az aks browse --resource-group resourceGroupName --name AKSClusterName在浏览器中检查它。最终的屏幕截图将像这样。 enter image description here

第三,您可以通过连接到AKS节点来检查路径。要进行连接,可以遵循文档SSH into Azure Kubernetes Service (AKS) cluster nodes

我进行了测试,并在此处生成了屏幕截图:

请参阅门户中的持久卷。 enter image description here

请参阅Microsoft Azure存储资源管理器中的持久卷。 enter image description here

答案 1 :(得分:0)

       public static void list_file()
    {
        //***** Get list of all files/directories on the file share*****//
        CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["storageConnectionString"]);
        CloudFileClient fileClient = cloudStorageAccount.CreateCloudFileClient();
        CloudFileShare fileShare = fileClient.GetShareReference(ConfigurationManager.AppSettings["shareName"]);

        IEnumerable<IListFileItem> fileList = fileShare.GetRootDirectoryReference().ListFilesAndDirectories(ConfigurationManager.AppSettings["sourceName"]);

        CloudFileDirectory rootDir = fileShare.GetRootDirectoryReference();
        CloudFileDirectory sourceDir = rootDir.GetDirectoryReference(ConfigurationManager.AppSettings["sourceName"]);
        CloudFileDirectory destinationDir = rootDir.GetDirectoryReference(ConfigurationManager.AppSettings["destinationName"]);

        // Print all files/directories listed above.
        foreach (IListFileItem listItem in fileList)
        {
            // listItem type will be CloudFile or CloudFileDirectory.
            Console.WriteLine(listItem.Uri.Segments.Last());
            Console.WriteLine(listItem.GetType());
            if (listItem.GetType() == typeof(Microsoft.WindowsAzure.Storage.File.CloudFileDirectory))
            {
                list_subdir(listItem, sourceDir, destinationDir);
            }
        }
    }
    public static void list_subdir(IListFileItem list, CloudFileDirectory sourceDir, CloudFileDirectory destinationDir)
    {
        Console.WriteLine("subdir");
        CloudFileDirectory fileDirectory = (CloudFileDirectory)list;
        IEnumerable<IListFileItem> fileList = fileDirectory.ListFilesAndDirectories();

        // Print all files/directories in the folder.
        foreach (IListFileItem listItem in fileList)
        {
            // listItem type will be CloudFile or CloudFileDirectory.
            if (listItem.GetType() == typeof(Microsoft.WindowsAzure.Storage.File.CloudFileDirectory))
            {
                list_subdir(listItem,sourceDir,destinationDir);
            }
            else
            {
                Console.WriteLine(listItem.Uri.Segments.Last());
                // move file to destination
                // Get a reference to the file we created previously.
                CloudFile sourceFile = sourceDir.GetFileReference(listItem.Uri.Segments.Last());

                // Ensure that the source file exists.
                if (sourceFile.Exists())
                {
                    // Get a reference to the destination file.
                    CloudFile destFile = destinationDir.GetFileReference(listItem.Uri.Segments.Last());

                    // Start the copy operation.
                    destFile.StartCopy(sourceFile);

                    // Write the contents of the destination file to the console window.
                    Console.WriteLine(destFile.DownloadText());
                }
            }
        }
    }

注意: storageAccount:当前是MS文档中缺少的内容 在正确的资源组中将gdkstore更改为您自己的存储帐户名称