您可以在ACK Windows容器上使用SMB存储资源。本文介绍如何在Windows容器上使用SMB。

前提条件

步骤一:部署插件

有关Windows容器挂载SMB中插件部署的具体步骤,请参见Window容器挂载云盘中的部署插件

步骤二:创建PV和PVC

  1. 使用以下YAML模板创建PV和PVC。
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      labels:
        alicloud-pvname: pv-smb
      name: pv-smb
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 5Gi
      flexVolume:
        driver: alicloud/smb.exe
        options:
          path: \myshare\test
          server: 25f3f4819c-eak52.cn-shenzhen.nas.aliyuncs.com
          user: workshop\administrator
          password: ***
      persistentVolumeReclaimPolicy: Retain	
    	
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-smb
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-smb	
    	

    上述PV模板中的参数说明如下。
    参数 描述
    driver 配置挂载驱动,必须为alicloud/smb.exe
    server SMB存储盘的挂载点域名,所在网络需要和集群所在VPC相同。
    path SMB存储盘的挂载路径,必须以\myshare开头,后面可以为空或者子目录。
    user 集群节点的登录用户名,推荐使用workshop\administrator
    password 集群节点的登录密码。
  2. 执行kubectl get pvc |grep pvc-smb查看创建的PVC。
    输出:
    pvc-smb                    Bound    pv-smb                   5Gi        RWX                                         24h

步骤三:创建应用

  1. 使用以下YAML模板创建应用。
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx-smb
      namespace: default
    spec:
      selector:
        matchLabels:
          app: nginx-smb
      template:
        metadata:
          labels:
            app: nginx-smb
        spec:
          replicas: 2
          tolerations:
          - effect: NoSchedule
            key: os
            operator: Equal
            value: windows
          containers:
          - args:
            - -Command
            - start-sleep 10000
            command:
            - pwsh.exe
            image: registry.cn-hangzhou.aliyuncs.com/acs/flexvolume:v1.16.9.7be0fa0-windows1809
            imagePullPolicy: IfNotPresent
            name: nginx
            volumeMounts:
            - mountPath: /data
              name: pvc-nas
          restartPolicy: Always
          volumes:
          - name: pvc-nas
            persistentVolumeClaim:
              claimName: pvc-smb
  2. 执行kubectl get pod查看应用状态。
    输出:
    NAME                        READY   STATUS    RESTARTS   AGE
    nginx-smb-965fb4597-jz6fv   1/1     Running   0          95s
    nginx-smb-965fb4597-zvbhk   1/1     Running   0          42s
    当状态为Running时,说明成功创建应用。