前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s之共享存储概述以及演示

k8s之共享存储概述以及演示

作者头像
Liusy
发布2020-12-02 11:20:19
1.5K1
发布2020-12-02 11:20:19
举报
文章被收录于专栏:Liusy01Liusy01

共享存储机制

k8s对有状态的容器应用或者需要对数据进行持久化的应用,在之前的篇章说过,可以将容器内的目录挂载到宿主机的容器目录或者emptyDir临时存储卷。另外,k8s还开放了两个资源,分别是PersistentVolume(PV)和PersistentVolumeClaim(PVC),这两个资源对象可允许k8s使用外部的存储设备。比如在生产环境中有一个专门的文件服务器,那么就可以使用PV对文件服务器的资源进行定义,比如总共有多少容量等,然后用PVC对PV资源进行申请,申请多少容量,然后再容器里引用PVC即可。

PV是对底层网络共享存储的抽象,将共享存储定义为一种“资源”,比如Node也是容器应用可以消费的资源。PV由管理员创建和配置,与共享存储的具体实现直接相关。

PVC则是用户对存储资源的一个“申请”,就像Pod消费Node资源一样,PVC能够消费PV资源。PVC可以申请特定的存储空间和访问模式。

StorageClass,用于标记存储资源的特性和性能,管理员可以将存储资源定义为某种类别,正如存储设备对于自身的配置描述(Profile)。根据StorageClass的描述可以直观的得知各种存储资源的特性,就可以根据应用对存储资源的需求去申请存储资源了。存储卷可以按需创建。

容器存储接口Container Storage Interface(CSI)机制,目标是在kubernetes与外部存储系统之前建立一套标准的存储管理接口,通过该接口为容器提供存储服务。

使用案例

在案例中,定义一个PV,申请对宿主机的资源使用,定义一个PVC,申请对PV资源的使用。然后再Pod中挂载PVC。

PV

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv
  namespace: pv
  labels:
    name: pv
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /usr/soft/k8s/yaml/pv/storage

申请宿主机2G的存储。

创建:

代码语言:javascript
复制
kubectl create -f pv.yaml

创建后查看:

PVC

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc
  namespace: pv
  labels:
    name: pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  selector:
    matchLabels:
      name: pv

此PVC申请对上述PV的使用,申请1G存储。创建:

代码语言:javascript
复制
kubectl create -f pvc.yaml

创建后查看:

创建Pod使用PVC

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: pv
  labels:
    name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: pv
      mountPath: /pvc
      readOnly: false
    ports:
    - containerPort: 80
  volumes:
  - name: pv
    persistentVolumeClaim:
      claimName: pvc

使用volumes挂载pvc,挂载到容器的pvc目录。

验证

创建容器后,进入容器,在容器目录pvc添加文件,看对应的PersistemVolume中的路径是否有相应的文件。

在pvc目录创建test.txt文件
获取pod运行在哪个节点
去节点相应目录查看

可以看到,相应的节点目录是存在容器中创建的文件的。同理,如果在节点目录添加文件,那么容器中的挂载目录也会有相应的文件。

结尾

上述就是PV和PVC的简单使用,更详细的介绍在下一篇文章中。

往期推荐

下期见

Liusy01

一个分享Java后端学习日志的公众号

欢迎大家点个在看

分享至朋友圈

好文!点个在看!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Liusy01 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 共享存储机制
  • 使用案例
    • PV
      • PVC
        • 创建Pod使用PVC
          • 验证
            • 在pvc目录创建test.txt文件
            • 获取pod运行在哪个节点
            • 去节点相应目录查看
        • 结尾
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档