如何在内部 kubernetes 集群上创建持久卷

dnr*_*kes 5 kubernetes

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

我想添加一个包含 Oracle 数据库的 pod 并保留数据,这样即使所有节点都出现故障,我也不会丢失数据。

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

有没有关于如何在此配置中创建 PV 和 PVC 的示例?

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

Ija*_*han 2

使用主机路径:

创建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
Run Code Online (Sandbox Code Playgroud)

创建PVC:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
Run Code Online (Sandbox Code Playgroud)

在 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
Run Code Online (Sandbox Code Playgroud)

文档

这只是一个示例,仅供测试之用。

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