首页 > 解决方案 > 如何在内部 Kubernetes 集群上创建持久卷

问题描述

我有一个 3 节点 Kubernetes 集群,使用来自http://github.com/oracle/vagrant-boxes.git的 oracle Kubernetes vagrant 框在 vagrant 上运行。

我想添加一个包含 Oracle 数据库的 pod 并保留数据,以便在所有节点出现故障的情况下,我不会丢失我的数据。

根据我阅读 Kubernetes 文档的方式,无法在本地文件系统上仅在云支持的设备上创建持久卷。我想在我的 vagrant box 上配置持久卷和持久卷声明,作为我的 Kubernetes 学习的概念证明和培训练习。

是否有任何示例说明我如何在此配置中创建 PV 和 PVC?

作为一个完整的 Kubernetes 新手,任何代码示例都将不胜感激。

标签: kubernetes

解决方案


使用主机路径:

创建 PV:

kind: PersistentVolume
apiVersion: v1
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data

创建 PVC:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

在 pod 中使用它:

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
       claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

文件

这只是一个例子,仅供测试。

对于生产用例,您将需要使用 PVC 的 StorageClass进行动态配置,以便在 pod 在集群中移动时可以使用卷/数据。


推荐阅读