Kubernetes权威指南七-存储机制

1、概述

Volume是与Pod绑定的,与Pod具有相同生命周期的资源对象。

2、将资源对象映射为存储卷

在Kubernetes中有一些资源对象可以以存储卷的形式挂载为容器的目录或文件,目前包括ConfigMap,Secret,Downward API,ServiceAccountToken,Project volume。

2.1 ConfigMap

   主要保存应用程序所需的配置文件,并且通过Volume形式挂载到容器内的文件系统中。
2.2 Secret
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: OPaque
data:
  password: dmFSDWUTMg0K
  username: dmFSDWUTMg0K

创建pod挂载

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
  volumes:
  - name: foo
    secret:
      secretName: mysecret

3、Node本地存储卷

3.1 EmptyDir

此类型的Volume将在Pod被调度到Node时候进行创建,在出事状态下目录中是空的,所以命名为“空目录”(Empty Directory),它与Pod具有相同的说明周期,当Pod被销毁时候,Node上相应的目录也会被删除。

apiVersion: v1
kind: Pod
metadata:
  name: emptytest
spec:
  containers:
  - name: em
    image: busybox
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

3.2 HostPath

HostPath类型的存储卷用于将Node文件系统的目录或文件挂载到容器内部使用。应用场景如下:

1、容器应用的关键数据需要被持久化到宿主机上

2、需要使用Docker中的某些内部数据,可以将主机的/var/lib/docker目录挂载到容器内。

3、监控系统

4、Pod的启动以来宿主机的目录或文件。

 HostPath设置的宿主机目录或文件不会随着Pod的销毁而删除,在Pod不在存在之后,需要管理员手动删除;

apiVersion: v1
kind: Pod
metadata:
  name: hostpath
spec:
  containers:
  - name: host
    image: busybox
    volumeMounts:
    - mountPath: /host-data
      name: test-host
  volumes:
  - name: test-host
    hostPath:
      path: /data3
      type: Directory

4、持久卷(Persistent Volume)

 

 4.1资源供应

资源供应的结果就是将合适的PV与PVC成功绑定。

静态模式(Static)

    管理员预先创建许多PV,在PV中定义能够体现资源的特性。

动态模式(Dynamic)

  集群管理员无需预先创建PV,而是通过StorageClass的设置对后端存储进行资源描述,标记存储的类型和特性。用户通过创建PVC对存储类型进行申领,系统将自动完成PV的创建以及PVC的绑定。

 

如果资源供应使用的是动态模式,则系统在为 PVC 找到合适的 StorageClass 后,将自动创建一个 PV 并完成与 PVC 的绑定。

4.2 资源使用

Pod 需要使用存储资源时, 需要在 Volume 的定义中引用 PVC 类型的存储卷,将 PVC挂载到容器内的某个路径下进行使用。
Pod 在挂载 PVC 后,就能使用存储资源了 。同一个 PVC 还可以被 多个 Pod 同时挂使用,在这种情况下,应用程序需要处理好多个进程访问同一个存储的问题。

 

 

posted @ 2023-05-06 09:04  中仕  阅读(1)  评论(0编辑  收藏  举报