Размещение локального каталога в Kubernetes Pod

У меня одноузловой кластер Kubernetes. Я хочу, чтобы созданный мной модуль имел доступ к / mnt / galahad на моем локальном компьютере (который является хостом для кластера).

Вот мой yaml конфигурации Kubernetes:

apiVersion: v1
kind: Pod
metadata:
  name: galahad-test-distributor
  namespace: galahad-test
spec:
  volumes:
     - name: place-for-stuff
       hostPath:
        path: /mnt/galahad
  containers:
   - name: galahad-test-distributor
     image: vergilkilla/distributor:v9
     volumeMounts:
        - name: place-for-stuff
          mountPath: /mnt
    resources:
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"

Запускаю свой стручок вот так:

kubectl apply -f ./create-distributor.yaml -n galahad-test

Я вставляю терминал в свой только что созданный модуль:

kubectl exec -it galahad-test-distributor -n galahad-test -- /bin/bash

Я захожу в / mnt в своем модуле, и у него нет ничего из / mnt / galahad. Создаю новый файл в папке host / mnt / galahad - в поде не отображается. Как мне добиться этой функциональности, чтобы файлы пути к хосту / etc. отражать в стручке? Возможно ли это несколько простым способом, который я пытаюсь здесь сделать (определение его для каждого модуля без создания отдельных PersistentVolumes и PersistentVolumeRequests)?


person PinkElephantsOnParade    schedule 16.05.2019    source источник
comment
POD - это не аббревиатура.   -  person tadman    schedule 16.05.2019
comment
@tadman Понятно. Удален экземпляр, в который я помещал POD - все строчные буквы и т. Д.   -  person PinkElephantsOnParade    schedule 16.05.2019
comment
Незначительная придирка, но поначалу было непонятно, потому что я не знал, что такое P.O.D. был.   -  person tadman    schedule 16.05.2019


Ответы (1)


Ваш yaml-файл выглядит хорошо.

Используя эту конфигурацию:

apiVersion: v1
kind: Pod
metadata:
  name: galahad-test-distributor
  namespace: galahad-test
spec:
  volumes:
     - name: place-for-stuff
       hostPath:
        path: /mnt/galahad
  containers:
   - name: galahad-test-distributor
     image: busybox
     args: [/bin/sh, -c,
            'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
     volumeMounts:
        - name: place-for-stuff
          mountPath: /mnt
     resources:
       limits:
         memory: "200Mi"
       requests:
         memory: "100Mi"

Я запустил это, и все заработало, как ожидалось:

>>> kubectl apply -f create-distributor.yaml # side node: you don't need 
                                             # to specify the namespace here
                                             # since it's inside the yaml file
pod/galahad-test-distributor created

>>> touch /mnt/galahad/file
>>> kubectl -n galahad-test exec galahad-test-distributor ls /mnt
file

Вы уверены, что добавляете файлы в нужное место? Например, если вы запускаете свой кластер внутри виртуальной машины (например, minikube), убедитесь, что вы добавляете файлы внутри виртуальной машины, а не на машину, на которой размещена виртуальная машина.

person Alassane Ndiaye    schedule 16.05.2019