Когда pods внутри Minikube (k8s) требуют томов, как заставить их всех на самом деле l ie на определенном диске на голой железной * хост-машине *? - PullRequest
0 голосов
/ 30 апреля 2020

У нас есть одна голая металлическая машина с одним SSD и одним HDD. Модули в Minikube (k8s) потребуют немного pv c и получат несколько томов. Мы хотим обеспечить, чтобы эти тома были на нашем SSD, а не на HDD. Как это сделать? Большое спасибо!

ps То, что я пробовал: Когда мы хотим получить PV C, мы обнаружим, что Minikube назначит его на /tmp/hostpath-provisioner/.... Кроме того, IMHO, это путь внутри Docker, который запускает сам Minikube, а не путь к хост-машине. Таким образом, я попытался minikube mount /data/minikube-my-tmp-hostpath-provisioner:/tmp/hostpath-provisioner, где /data из host bare metal машина находится на SSD (не HDD). Однако это делает модули недовольными, и после перезапуска все они терпят неудачу ... Кроме того, я обнаружил, что только новые файлы новые будут записаны во вновь смонтированный путь, в то время как существующие файлы все еще будут внутри. контейнер ...

1 Ответ

2 голосов
/ 30 апреля 2020

Это похоже на причину, по которой существуют классы хранения :

StorageClass предоставляет администраторам возможность описывать «классы» хранения, которые они предлагают. Различные классы могут отображаться на уровни качества обслуживания, политики резервного копирования или произвольные политики, определенные администраторами кластера. Сам Kubernetes не знает, что представляют классы. Эту концепцию иногда называют «профилями» в других системах хранения.

Другими словами, вы можете создать несколько классов хранения с различной производительностью или другими характеристиками. А затем решите, какой из них наиболее подходит для каждого созданного утверждения.

Например, это класс хранения, который вы можете использовать в minikube:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: k8s.io/minikube-hostpath
parameters:
  type: pd-ssd

И вам, вероятно, также понадобится чтобы создать PV, вы можете сделать это, используя:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: some-name-pv
spec:
  capacity: 
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
    - ReadOnlyMany
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: /tmp/path

Затем, наконец, PV C будет выглядеть так:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: some-pvc 
spec:
  storageClassName: fast
  resources:
    requests:
      storage: 100Mi
  accessModes:
    - ReadWriteOnce
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...