我正在尝试创建一个简单的 Docker 主机来尝试将容器用于某些 .net 项目。
我已经设置了一个 Windows Server 1803 主机并使用 powershell 安装了 Docker EE,它作为服务正确运行。
我想使用自 1709 年以来可用的新“SMB 全局映射”功能来映射我的域上的 samba 共享并在容器中使用它,而无需求助于 gMSA 或其他技巧,我希望它在重新启动时使用 docker 自动挂载和启动容器重新启动策略,就好像它们是 Windows 服务一样。
我运行这些命令,一切正常
$creds = Get-Credential
New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:
docker run -v G:/:G: -it test cmd.exe
Run Code Online (Sandbox Code Playgroud)
但是在主机重新启动后,G: 不再映射,因此我无法理想地将容器置于自动启动状态。我猜这是因为凭证没有在任何地方持久化,但即使在此之后,我怀疑 powershell 命令会使任何东西保持原样,也因为它缺少标准 New-SmbMapping 命令行开关的 -Persistent 参数。
我们正在将旧版Java和.net应用程序从本地VM迁移到本地Kubernetes集群。
其中许多应用程序都使用Windows文件共享来与其他现有系统进行文件传输。与重新设计所有解决方案以避免使用samba共享相比,部署到Kubernetes的优先级要低,因此,如果要迁移,我们将必须找到一种方法来保持许多现状。
我们使用Kubeadm和Canal在3 centos 7机器上设置了3节点集群。
除了天蓝色卷,我找不到任何积极维护的插件或库来挂载SMB。
我想到的是在所有节点上使用相同的挂载点(即:“ / data / share1”)在每个centos节点上挂载SMB共享,然后创建了一个本地PersistentVolume
kind: PersistentVolume
apiVersion: v1
metadata:
name: samba-share-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/data/share1"
Run Code Online (Sandbox Code Playgroud)
和索赔,
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: samba-share-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
Run Code Online (Sandbox Code Playgroud)
并将索赔要求分配给了该申请。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: samba-share-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: samba-share-deployment
tier: backend
spec:
containers:
- name: samba-share-deployment
image: nginx
ports:
- containerPort: 80 …Run Code Online (Sandbox Code Playgroud)