> For the complete documentation index, see [llms.txt](https://utm-1.gitbook.io/utm-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://utm-1.gitbook.io/utm-docs/dokumentaciya/utm-it/resheniya/kubernetes/persistentvolumes/pv-cherez-csi-driver-smb/sozdanie-pv-i-pvc-v-klastere-k8s.md).

# Создание PV и PVC в кластере K8S

## Общее описание

### Пример развертывания nginx с монтированием volume на PV

Создать `smb-test.yaml`:

```yaml
apiVersion: v1
kind: Namespace
metadata:
  name: smb-test
```

Выполнить:

```bash
# kubectl delete -f .\smb-test.yaml
kubectl apply -f .\smb-test.yaml
```

Создать `pvc-nginxsmbtest.yaml`:

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-nginxsmbtest
  namespace: smb-test
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: smb-csi-utm-server4
```

Выполнить:

```bash
# kubectl delete -f .\pvc-nginxsmbtest.yaml
kubectl apply -f .\pvc-nginxsmbtest.yaml
```

Создать `deployment-nginxsmbtest.yaml`:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-nginxsmbtest
  namespace: smb-test
  labels:
    app: nginxsmbtest
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginxsmbtest
  template:
    metadata:
      labels:
        app: nginxsmbtest
    spec:
      volumes:
      - name: smb-volume
        persistentVolumeClaim:
          claimName: pvc-nginxsmbtest
      containers:
      - name: nginxsmbtest
        image: nginx:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: smb-volume
          mountPath: /usr/share/nginx/html
          readOnly: false
```

Выполнить:

```bash
# kubectl.exe delete -f .\deployment-nginxsmbtest.yaml
kubectl.exe apply -f .\deployment-nginxsmbtest.yaml
```

Создать `service-nginxsmbtest.yaml`:

```yaml
apiVersion: v1
kind: Service
metadata:
  name: service-nginxsmbtest
  namespace: smb-test
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: nginxsmbtest
```

Выполнить:

```bash
# kubectl.exe delete -f .\service-nginxsmbtest.yaml
kubectl.exe apply -f .\service-nginxsmbtest.yaml
```

Посмотреть:

```bash
# PV
kubectl get pv -n smb-test
# PVC
kubectl get pvc -n smb-test
# Deployments
kubectl get deploy -n smb-test
# Pods
kubectl get pods -n smb-test
```

<figure><img src="/files/in5s5U4AdaJUIkUtUIAm" alt=""><figcaption></figcaption></figure>

В общем каталоге на сервере samba должен появиться подкаталог с наименованием PV

<figure><img src="/files/1E5NNCWp1ngyxKAk4jd2" alt=""><figcaption></figcaption></figure>

Если в созданный каталог поместить файлы, которые должен отображать nginx в виде сайта

<figure><img src="/files/g4OOPoONXOMbuIfLPudq" alt=""><figcaption></figcaption></figure>

То можно открыть сайт nginx.

Для этого нужно пробросить порт 80

```bash
kubectl -n smb-test port-forward svc/service-nginxsmbtest 8083:80
```

После этого можно открывать <http://localhost:8083>

<figure><img src="/files/ey7ihxTrhnSqx9h0jyYY" alt=""><figcaption></figcaption></figure>
