2
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 "" 附加或挂载的超时已过期。已卸载卷的列表 = [servicecatalog-persistent-storage]。未附加卷列表=[interactor-properties servicecatalog-persistent-storage default-token-9fp7j]

挂载参数:-t cifs -o username=,password=,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 文件诊断来确保端口处于打开状态,并且我们能够从我们的机器进行连接。关联
  • 使用Azure 存储资源管理器连接(有效)

微软表示,出于安全原因,Windows 10 支持本地连接到 Azure 文件共享需要 SMB 3.0,但 Kubernetes 似乎使用 CIFS(这是 SMB 的一种方言?),但我们无法确定它是否支持访问 Azure 文件分享。有任何想法吗?

4

1 回答 1

2

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

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

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

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

于 2019-12-10T09:27:49.473 回答