【问题标题】:How can i still use file after kubernetes mount using pv在使用 pv 挂载 kubernetes 后我如何仍然使用文件
【发布时间】:2023-01-03 12:20:31
【问题描述】:

当我使用官方镜像创建 grafana pod 并挂载 /var/lib/grafana 时,数据没有被隐藏 我不知道为什么? 根据我一直在研究的如果pvc挂载在/var/lib/grafana目录下,每个文件都是隐藏的,无法访问。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: grafana-statefulset
spec:
  serviceName: grafana-service
  selector:
    matchLabels:
      app: grafana
  replicas: 1
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
        - name: grafana
          image: grafana/grafana:latest
          volumeMounts:
          - mountPath: "/var/lib/grafana"
            name: grafana-var
      securityContext:
        runAsUser: 472
        fsGroup: 472
  volumeClaimTemplates:
    - metadata:
        name: grafana-var
      spec:
        accessModes: ["ReadWriteMany"]
        storageClassName: nks-nas-csi
        resources:
          requests:
            storage: 2Gi
[dev1-user@master-dev-kube-cluster migration]$ k exec -it grafana-statefulset-0 -- sh
/usr/share/grafana $
/usr/share/grafana $ ls -l /var/lib/grafana/
total 912
drwxr-x---    3 grafana  root          4096 Jan  2 08:00 alerting
drwx------    2 grafana  root          4096 Jan  2 08:00 csv
drwxr-x---    2 grafana  root          4096 Jan  2 08:00 file-collections
-rw-r-----    1 grafana  root        909312 Jan  3 01:20 grafana.db
drwxr-xr-x    2 grafana  root          4096 Jan  2 08:00 plugins
drwx------    2 grafana  root          4096 Jan  2 08:00 png

事实上,当我单独创建镜像时,我挂载的目录中的文件是隐藏的,无法访问。

### First Stage
FROM busybox:latest

RUN mkdir /var/aaaa

COPY ./main.go /

RUN mv main.go /var/aaaa
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: busybox
spec:
  serviceName: busybox
  selector:
    matchLabels:
      app: busybox
  replicas: 1
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
        - name: busybox
          image: busy/test:busybox
          imagePullPolicy: "Always"
          command:
          - sleep
          - "86400"
          volumeMounts:
          - mountPath: /var/aaaa
            name: www
  volumeClaimTemplates:
    - metadata:
        name: www
      spec:
        accessModes: ["ReadWriteMany"]
        storageClassName: nks-nas-csi
        resources:
          requests:
            storage: 2Gi
[dev1-user@master-dev-kube-cluster migration]$ k exec -it busybox-0 -- sh
/ #
/ #
/ # ls -l /var/aaaa/
total 0
/ #

本文的重点不是statefulset,它只是测试时出现的问题。

我怎样才能像 grafana 官方图像一样在挂载后继续使用每个目录数据以及 grafana 是如何做到的?

【问题讨论】:

    标签: kubernetes mount kubernetes-pvc pv


    【解决方案1】:

    您可以通过 PV 的 mountPath 字段中指定的路径访问已挂载到 Kubernetes 中的 PersistentVolume (PV) 的文件。例如,如果您的 PV 的挂载路径为 /mnt/pv,您可以访问位于 /mnt/pv/ 的文件。

    请记住,为了访问 PV,您需要有一个正在使用 PV 的 Pod。然后 Pod 可以使用 mountPath 访问 PV。

    下面是一个如何在 Pod 中使用 PV 的示例: api版本:v1 种类:豆荚 元数据: 名称:mypod 规格: 容器:

    • 名称:我的容器 图片:我的图片 卷挂载:
      • 名称:mypv 挂载路径:/mnt/pv 卷:
    • 名称:mypv 持久卷声明: 声明名称:mypvclaim

    本例中,PV挂载到容器中的/mnt/pv目录下。然后,您可以使用路径 /mnt/pv/ 访问 PV 中的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 2020-03-17
      • 2020-10-26
      • 1970-01-01
      • 2018-12-02
      • 2023-03-18
      • 2018-12-12
      相关资源
      最近更新 更多