【问题标题】:Accessing Azure File Share from local Kubernetes cluster从本地 Kubernetes 集群访问 Azure 文件共享
【发布时间】:2020-04-03 10:17:33
【问题描述】:
OS: Windows 10  
Kubernetes version: 1.14.8  
Helm version: 3  
Docker Desktop version: 2.1.0.5

尝试使用 Helm-chart 部署 Kubernetes 集群,该 Helm-chart 包含连接到静态预配 Azure 文件共享的 pod。 部署到 Azure Kubernetes 集群是可行的,但是当我们尝试在 docker-desktop 本地部署集群时,它会在尝试挂载共享时收到错误消息:

无法为 pod "" 挂载卷:超时已过期等待 为 pod "" 附加或挂载卷。卸载列表 卷= [服务目录持久存储]。未连接列表 volumes=[interactor-properties servicecatalog-persistent-storage default-token-9fp7j]

挂载参数:-t cifs -o 用户名=,密码=,file_mode=0777,dir_mode=0777,vers=3.0 //.file.core.windows.net/spps /var/lib/kubelet/pods/44a70ebf-1b26-11ea-ab13-00155d0a4406/volumes/kubernetes.io~azure-file/servicecatalog-spp-pv 输出:挂载错误(11):资源暂时不可用

Helm 图表(删除冗余信息):

部署:

apiVersion: apps/v1
kind: Deployment
spec:
    spec:
      containers:
        - name: {{ .Release.Name }}-{{ .Chart.Name }}
          volumeMounts:
            - name: servicecatalog-persistent-storage
              mountPath: /data/sppstore
      volumes:
        - name: servicecatalog-persistent-storage
          persistentVolumeClaim:
            claimName: servicecatalog-pv-claim

持久存储/声明:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: servicecatalog-spp-pv
  labels:
    usage: servicecatalog-spp-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  azureFile:
    secretName: azurefile-secret
    shareName: spps
    readOnly: false

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: servicecatalog-pv-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
  storageClass: 
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  selector:
    matchLabels:
      usage: servicecatalog-spp-pv

秘密:

apiVersion: v1
kind: Secret
metadata:
  name: azurefile-secret
type: Opaque
data:
  azurestorageaccountname: <acc name>
  azurestorageaccountkey:<acc key>

我们已经尝试过:

  • 使用 Azure 文件诊断确保端口打开并且我们能够从我们的计算机进行连接。 link
  • 使用Azure Storage Explorer 连接(有效)

Microsoft 表示本地连接到 Windows 10 支持的 Azure 文件共享 requires SMB 3.0 for security reasons,但 Kubernetes 似乎使用 CIFS(这是 SMB 的一种方言?),但我们无法确定它是否支持访问 Azure 文件分享。有什么想法吗?

【问题讨论】:

  • 嗨@Marius 这有效吗?我也有同样的问题。

标签: azure kubernetes kubernetes-helm azure-files helmfile


【解决方案1】:

在 Linux 上挂载 Azure 文件共享的推荐方法是使用 SMB 3.0。默认情况下,Azure 文件需要传输中的加密,仅 SMB 3.0 支持。 Azure 文件还支持 SMB 2.1,它 不支持传输中的加密,但您可能无法挂载 Azure 与来自另一个 Azure 区域或本地的 SMB 2.1 的文件共享 安全原因。

https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-linux

因此,如果您使用的是 smb 2.1,则只能从同一区域内挂载文件共享。不是来自本地工作站或其他天蓝色区域

因为您的 cifs mount 提到了vers=3.0 - 我认为这应该适用于您的情况。检查存储帐户网络访问限制?或您的网络限制。说端口 445,或链接文章中提到的其他问题

【讨论】:

  • 感谢您的回复。我们已使用 Azure 存储资源管理器成功连接到文件共享,并通过 diagnostics script 运行,一切正常(SMB 版本 3.1.1,端口打开,存储帐户解析为 IP)。但这当然是来自 Windows 主机,而不是在容器内。正如您所提到的,cifs 说 vers=3.0,如果这说明使用的是什么 smb 版本,它应该可以工作,但没有。
  • 对,但是,使用 windows 进行测试并不能真正证明什么;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多