MountPath не перечисляет файлы - PullRequest
0 голосов
/ 21 июня 2020

Все,

Я развернул приведенный ниже файл yaml, и он был развернут. Я изучаю Volume, VolumeMount и MountPath.

Я вижу папку containerdrive , указанную в пути монтирования в контейнере (я сделал kubectl exe c -it podname) и в containerdrive я надеялся увидеть файлы в папке « / home / rgn / kubernetes / scripts », указанной в пути HostPath. Но это не так, и фактически диск контейнера пуст.

Похоже, я неправильно понимаю Volume, VolumeMount и MountPath. Что мне не хватает? Может кто-нибудь указать мне в правильном направлении?

Спасибо, rgn

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.4
        ports:
        - containerPort: 80
        volumeMounts:
          - mountPath: /containerdrive
            name: test-volume
      volumes:
      - name: test-volume
        hostPath:
      # directory location on host
          path: /home/rgn/kubernetes/scripts
      # this field is optional
      #    type: DirectoryOrCrate

1 Ответ

1 голос
/ 22 июня 2020

Похоже, я неправильно понимаю Volume, VolumeMount и MountPath. Что мне не хватает? Может ли кто-нибудь указать мне в правильном направлении?

     hostPath:
   # directory location on host
       path: /home/rgn/kubernetes/scripts

Том hostPath монтирует файл или каталог из файловой системы хост-узла Kubernetes (k8s) в ваш Pod. Это не то, что понадобится большинству модулей, но оно предлагает мощный аварийный выход для некоторых приложений. Этот path относится к пути на узле k8s, который запускает ваш контейнер nginx.

Чтобы ответить на ваш конкретный случай c: убедитесь, что каталог /home/rgn/kubernetes/scripts существует на вашем узле k8s.

Я только что выполнил развертывание из вопроса на моем собственном кластере gke (2 узла)

$kubectl get nodes 
NAME                                         
gke-ubuntu-mnnv   
gke-ubuntu-nw9v

$ kubectl apply -f deployment.yaml


$ kubectl get pods -o wide 
NAME                               READY   STATUS    RESTARTS   AGE    NODE                                         
nginx-deployment-ddbfb785d-fggpq   1/1     Running   0          19s    gke-ubuntu-nw9v


$ kubectl exec nginx-deployment-ddbfb785d-fggpq -- ls -la containerdrive
total 8
drwxr-xr-x 2 root root 4096 Jun 22 11:54 .
drwxr-xr-x 1 root root 4096 Jun 22 11:55 ..
-rw-r--r-- 1 root root    0 Jun 22 11:54 gke-ubuntu-nw9v-file

$ kubectl describe deployments nginx-deployment 
...
    Mounts:
      /containerdrive from test-volume (rw)
  Volumes:
   test-volume:
    Type:          HostPath (bare host directory volume)
    Path:          /tmp/knp
    HostPathType:  
...

# and on k8s node itself:

$ ls -lah /tmp/knp/
total 8.0K
drwxr-xr-x  2 root root 4.0K Jun 22 11:54 .
drwxrwxrwt 10 root root 4.0K Jun 22 12:08 ..
-rw-r--r--  1 root root    0 Jun 22 11:54 gke-ubuntu-nw9v-file

Надеюсь, этот вывод поможет ясно увидеть всю картину. :)

Кроме того, как сказал Дэвид Мейз, было бы неплохо скомпилировать все сценарии, на которые вы полагаетесь, в сам контейнер.

...