k8s教程(Volume篇)-总结

简介: k8s教程(Volume篇)-总结

01 引言

至此,volume的相关知识已经讲解完了,下面是相关文章的详情总结:

02 内容整理

先贴上整理的脑图:

2.1 概念

详情参考: 《k8s教程(Volume篇)-k8s存储机制概述》

容器内部存储的生命周期是短暂的,会随着容器环境的销毁而销毁,具有不稳定性。如果多个容器希望共享同一份存储,则仅仅依赖容器本身是很难实现的。在Kubernetes系统中,将对容器应用所需的存储资源抽象为存储卷 (Volume)概念 来解决这些问题。我们可以将Volume的内容理解为目录或文件

Kubernetes目前支持的Volume类型包括Kubernetes内部资源对象类型开源共享存储类型存储厂商提供的硬件存储设备公有云提供的存储等。

将Kubernetes特定类型的资源对象映射为目录或文件,包括以下类型的资源对象:

类型 描述
ConfigMap 应用配置
Secret 加密数据
DownwardAPI Pod或Container的元数据信息
ServiceAccountToken Service Account中的token数据
Projected Volume 一种特殊的存储卷类型,用于将一个或多个上述资源对象一次性挂载到容器内的同一个目录下

Kubernetes管理的宿主机本地存储类型如下:

类型 描述
EmptyDir 临时存储
HostPath 宿主机目录

持久化存储(PV))和网络共享存储类型如下:

类型 描述
CephFS 一种开源共享存储系统
Cinder 一种开源共享存储系统
CSI 容器存储接口(由存储提供商提供驱动程序和存储管理程序)
FC(Fibre Channel) 光纤存储设备
FlexVolume 一种基于插件式驱动的存储
Flocker 一种开源共享存储系统
Glusterfs 一种开源共享存储系统
iSCSI iSCSI存储设备
Local 本地持久化存储
NFS 网络文件系统
PersistentVolumeClaim 简称PVC,持久化存储的申请空间
Portworx Volumes Portworx提供的存储服务
Quobyte Volumes Quobyte提供的存储服务
RBD(Ceph Block Device) Ceph块存储

存储厂商提供的存储卷类型如下:

类型 描述
ScalelO Volumes DellEMC的存储设备
StorageOS StorageOS提供的存储服务
VsphereVolume VMWare提供的存储系统

公有云提供的存储卷类型如下:

类型 描述
AWSElasticBlockStore AWS公有云提供的Elastic Block Store
AzureDisk Azure公有云提供的Disk
AzureFile Azure公有云提供的File
GCEPersistentDisk GCE公有云提供的Persistent Disk

2.2 PV

详情参考: 《k8s教程(Volume篇)-PV详解》

PV作为对存储资源的定义,主要涉及存储能力、访问模式、存储类型、回收策略、后端存储类型等关键信息的设置。

PV示例:5GiB存储空间,存储卷模式为 Filesystem,访问模式为ReadWriteOnce,存储类型为slow(要求在系统中己存在名称为“slow”的StorageClass),回收策略为Recycle,并且后端存储类型为nfs (设置了 NFS ServerIP地址和路径),同时设置了挂载选项 (mountOptions)

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    Storage: 5Gi
  volumeMode: Filesystem 
  accessModes:
    - ReadwriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow 
  mountoptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /tmp
    server: 172.17.0.2

2.3 PVC

详情参考: 《k8s教程(Volume篇)-PVC详解》

PVC作为用户对存储资源的需求申请,主要涉及存储空间请求访问模式PV选择条件存储类别等信息的设置。

示例:申请8GiB存储空间,访问模式为ReadWriteOnce,PV选择条件为包含release=stable标签并且包含条件为environment In[dev]的标签,存储类别为“slow”(要求在系统中已存在名为slow的StorageClass)

apiVersion: v1
kind: PersistentVolumeclaim 
metadata:
  name: myclaim 
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 8Gi
  storageClassName: slow 
  selector:
    matchLabels:
      release: "stable"
    matchExpressions:
      - {key: environment, operator: In, values: [dev]}

2.4 StorageClass

详情参考:《k8s教程(Volume篇)-StorageClass详解》

StorageClass作为对存储资源的抽象定义,对用户设置的PVC申请屏蔽后端存储的细节,一方面减少了用户对于存储资源细节的关注,另一方面减轻了管理员手工管理PV的工作,由系统自动完成PV的创建和绑定,实现动态的资源供应。基于StorageClass的动态资源供应模式将逐步成为云平台的标准存储管理模式。

示例:定义了一个StorageClass,名称为standardprovisioneraws-ebstypegp2,回收策略为Retain

apiVersion: storage.k8s.io/v1 
kind: StorageClass 
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs 
parameters:
  type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true 
mountOptions:
  - debug
volumeBindingMode: Immediate

2.5 CSI

详情参考: 《k8s教程(Volume篇)-CSI存储机制详解》

Kubernetes从1.9版本开始引入容器存储接口 Container Storage Interface (CSI)机制,用于在Kubernetes和外部存储系统之间建立一套标准的存储管理接口,通过该接口为容器提供存储服务。

CSI的核心组件和部署架构如下:

CSI Controller:主要功能是 提供存储服务视角对存储资源和存储卷进行管理和操作。在Kubernetes中建议将其部署为单实例Pod,可以使用StatefulSetDeployment控制器进行部署,设置副本数量为1,保证一种存储插件只运行一个控制器实例。

CSI Node:主要功能是对主机(Node )上的Volume进行管理和操作在 Kubernetes中建议将其部署为DaemonSet,在需要提供存储资源的各个Node上都运行一个Pod

03 文末

本文主要是对k8s的volume做一个简单的笔记整理,便于后续的回顾,谢谢大家的阅读,本文完!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
Kubernetes Shell Perl
【Azure K8S|AKS】进入AKS的POD中查看文件,例如PVC Volume Mounts使用情况
【Azure K8S|AKS】进入AKS的POD中查看文件,例如PVC Volume Mounts使用情况
|
6月前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
现在,你已经成功在Kubernetes集群上部署了Nginx应用。通过访问Service的外部IP地址,你可以访问Nginx服务。
85 4
|
6月前
|
Kubernetes 关系型数据库 MySQL
在 K8S Volume 中使用 subPath
在 K8S Volume 中使用 subPath
|
6月前
|
Kubernetes Java 容器
部署 Spring Boot 应用到 K8S 教程
部署 Spring Boot 应用到 K8S 教程
302 0
|
5月前
|
Kubernetes Ubuntu jenkins
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
|
6月前
|
Kubernetes 调度 Docker
kubernetes核心技术之Volume知识点总结
kubernetes核心技术之Volume知识点总结
64 0
|
6月前
|
存储 Kubernetes 数据安全/隐私保护
k8s详细教程(二)
k8s详细教程(二)
268 0
|
6月前
|
Kubernetes 调度 Docker
k8s详细教程(一)
k8s详细教程(一)
316 0
|
6月前
|
Kubernetes Linux 网络安全
百度搜索:蓝易云【K8s在centos7安装及kubectl教程】
希望以上教程对你有所帮助!Kubernetes是一个强大的容器编排平台,能够帮助你更轻松地管理容器化应用程序。如果你有其他问题,请随时继续提问。
105 1
|
6月前
|
Kubernetes Ubuntu Docker
百度搜索:蓝易云【Ubuntu系统搭建K8s集群教程】
现在,你已经在Ubuntu系统上成功搭建了一个Kubernetes集群。记得保留好Kubernetes配置文件以便后续管理。
77 0
下一篇
无影云桌面