# 如何使用 Samba 映射本地磁盘

## 概述

在 K8S 中使用 Samba 服务可以实现将本地磁盘映射到容器中,方便容器内的应用程序读写本地文件。下面将介绍如何在 K8S 中部署 Samba 服务,并映射本地磁盘至容器中。

## 步骤

| 步骤 | 描述 |
| :--: | ---- |
| 1 | 创建一个 ConfigMap 以存储 Samba 的配置文件 |
| 2 | 创建一个 Deployment 来运行 Samba 服务 |
| 3 | 暴露 Samba 服务的端口,并创建一个 Service 使其可以被外部访问 |
| 4 | 在本地磁盘上设置 Samba 的共享目录,并配置 Samba 用户 |
| 5 | 在容器中创建共享目录的挂载点 |

### 步骤一:创建 ConfigMap

首先我们需要创建一个 ConfigMap 以存储 Samba 的配置文件。

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: samba-config
data:
smb.conf: |
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user

[shared]
path = /shared
read only = no
guest ok = yes
```

### 步骤二:创建 Deployment

接着我们创建一个 Deployment 来运行 Samba 服务。

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: samba-deployment
spec:
selector:
matchLabels:
app: samba
template:
metadata:
labels:
app: samba
spec:
containers:
- name: samba
image: dperson/samba
ports:
- containerPort: 445
volumeMounts:
- name: config
mountPath: /etc/samba
volumes:
- name: config
configMap:
name: samba-config
```

### 步骤三:创建 Service

暴露 Samba 服务的端口,并创建一个 Service 使其可以被外部访问。

```yaml
apiVersion: v1
kind: Service
metadata:
name: samba-service
spec:
selector:
app: samba
ports:
- protocol: TCP
port: 445
targetPort: 445
type: NodePort
```

### 步骤四:设置共享目录和用户

在本地磁盘上设置 Samba 的共享目录,并配置 Samba 用户。假设我们在本地磁盘上创建了一个名为 "shared" 的目录并为其授权。

### 步骤五:在容器中创建挂载点

最后在 K8S 中的 Pod 容器中创建共享目录的挂载点。

```yaml
apiVersion: v1
kind: Pod
metadata:
name: samba-pod
spec:
containers:
- name: busybox
image: busybox
volumeMounts:
- name: shared-volume
mountPath: /data
volumes:
- name: shared-volume
persistentVolumeClaim:
claimName: shared-pvc
```

通过以上步骤,我们成功地将本地磁盘映射到 K8S 中的容器中,可以通过 Samba 服务方便地共享本地文件。希望这篇文章能够帮助你了解如何实现“samba 映射本地磁盘”。如果有任何疑问或需要进一步的指导,请随时联系我。