[英]Network File share access on GKE cluster - Windows node pool
我們正在 GKE 集群(Windows 節點池)上容器化 dotnet 應用程序。 我們有一個要求,多個 pod 可以訪問同一個共享空間(持久卷)。 它還應該支持“ReadWriteMany”訪問模式。 我們探索了以下選項:
我們正在尋找其他選擇來滿足我們的要求。 請幫忙。
您說 Windows 尚不支持 NFS 是對的,至少對於內置客戶端 v4 不支持。 所以只要不支持 NFS v4,Kubernetes 團隊就無法在 k8s 中啟動這項工作。 資源
有了這個約束,我能看到的唯一解決方案仍然是Filestore。
我一直在嘗試解決同樣的問題 - 從 2 個 Windows pod(IIS 上的 ASP.NET 應用程序 + 控制台應用程序)訪問共享文件系統。 我無法使用 Filestore,因為它需要 NFSClient ( Install-WindowsFeature NFS-Client
),並且我無法將它安裝到容器中(在容器構建或運行時),因為它需要重新啟動計算機 - 也許我是在這里想念某事。
我發現的選項:
如果您需要創建一個可以在單個 VM 上運行的簡單臨時演示應用程序,您可以在單個實例上運行兩個 pod,創建一個 Persistent Disk,使用gcloud compute instances attach-disk
將其附加到實例,RDP 到實例中,掛載磁盤並將磁盤作為 hostPath 提供給 pod。 這就是我現在使用的解決方案。
Create an SMB share (on a separate VM or using a Docker container https://hub.docker.com/r/dperson/samba/
and access it from the pods using New-SmbMapping -LocalPath $shareletter -RemotePath $dhcpshare -Username $shareuser -Password $sharepasswd -Persistent $true
。此解決方案適用於我的控制台應用程序,但 web 應用程序無法訪問文件(即使我已將 IIS 上的應用程序池設置為作為本地系統運行)。SMB 可以也可以使用New-SmbGlobalMapping
從實例安裝 - flexvolume 可以做到https://github.com/microsoft/K8s-Storage-Plugins/tree/master/flexvolume/windows 。我還沒有探索過這個選項,我認為它會有同樣的問題(IIS 沒有看到文件)。
我認為最好(最安全和可靠)的解決方案是在單獨的 VM 上設置 Active Directory 域 Controller 和 SMB 共享,並使用 gMSA 提供對容器的訪問權限: https://docs.microsoft.com/en-us /virtualization/windowscontainers/manage-containers/manage-serviceaccounts https://kubernetes.io/docs/tasks/configure-pod-container/configure-gmsa/但這似乎並不容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.