[英]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.