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做一个简单的笔记整理,便于后续的回顾,谢谢大家的阅读,本文完!

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3月前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
现在,你已经成功在Kubernetes集群上部署了Nginx应用。通过访问Service的外部IP地址,你可以访问Nginx服务。
43 4
|
2月前
|
Kubernetes Java 容器
部署 Spring Boot 应用到 K8S 教程
部署 Spring Boot 应用到 K8S 教程
59 0
|
2月前
|
存储 Kubernetes 数据安全/隐私保护
k8s详细教程(二)
k8s详细教程(二)
112 0
|
2月前
|
Kubernetes 调度 Docker
k8s详细教程(一)
k8s详细教程(一)
72 0
|
4月前
|
Kubernetes Ubuntu Docker
百度搜索:蓝易云【Ubuntu系统搭建K8s集群教程】
现在,你已经在Ubuntu系统上成功搭建了一个Kubernetes集群。记得保留好Kubernetes配置文件以便后续管理。
31 0
|
4月前
|
Kubernetes Linux 网络安全
百度搜索:蓝易云【K8s在centos7安装及kubectl教程】
希望以上教程对你有所帮助!Kubernetes是一个强大的容器编排平台,能够帮助你更轻松地管理容器化应用程序。如果你有其他问题,请随时继续提问。
58 1
|
5月前
|
存储 Kubernetes Linux
百度搜索:蓝易云【Centos7系统K8S集群安装教程。】
恭喜!你已成功在CentOS 7系统上安装了一个简单的Kubernetes集群。请注意,这只是一个基本的安装示例,实际中可能还需要进行其他配置和调整来满足特定需求。建议参考Kubernetes官方文档和相关资源,深入了解和优化Kubernetes集群的配置和功能。
89 0
|
5月前
|
Kubernetes 监控 安全
百度搜索:蓝易云【【k8s系列】搭建MicroK8s Dashboard教程。】
完成以上步骤后,你就成功搭建了MicroK8s Dashboard,并可以通过Web界面管理和监控你的MicroK8s集群。请确保根据实际需求进行适当的安全配置和访问控制,以保护你的集群和数据安全。
65 2
|
5月前
|
Kubernetes 网络协议 Linux
百度搜索:蓝易云【【K8S&RockyLinux】基于开源操作系统搭建K8S高可用集群教程。】
这是一个简要的教程,用于基于Rocky Linux搭建Kubernetes高可用集群。请注意,具体步骤可能因Kubernetes版本、网络插件选择和环境配置而有所不同。在实际搭建过程中,请参考相关文档和官方指南,并根据您的需求进行适当的调整和配置。
202 0
|
13天前
|
运维 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【4月更文挑战第26天】 在动态且不断增长的云计算环境中,维护高性能的 Kubernetes 集群是一个挑战。本文将探讨一系列实用的策略和工具,旨在帮助运维专家监控、分析和优化 Kubernetes 集群的性能。我们将讨论资源分配的最佳实践,包括 CPU 和内存管理,以及集群规模调整的策略。此外,文中还将介绍延迟和吞吐量的重要性,并提供日志和监控工具的使用技巧,以实现持续改进的目标。