在Docker的设计实现中,容器中的数据是临时的,即当容器被销毁时,其中的数据将会丢失。如果需要持久化数据,需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中。在K8S中,当Pod重建的时候,数据是会丢失的,K8S也是通过数据卷挂载来提供Pod数据的持久化的。K8S数据卷是对Docker数据卷的扩展,K8S数据卷是Pod级别的,可以用来实现Pod中容器的文件共享。
支持的类型
EmptyDir
HostPath
GCE PersistentDisk
AWS ElasticBlock Store
NFS
iSCSI
Flocker
GlusterFS
RBD
Git Repo
Secret
PersistentVolume Claim
Downward API
本地数据卷
EmptyDir、HostPath这两种类型的数据卷,只能用于本地文件系统。本地数据卷中的数据只会存在于一台机器上,所以当Pod发生迁移的时候,数据便会丢失。该类型Volume的用途是:Pod中容器间的文件共享、共享宿主机的文件系统。
EmptyDir
如果Pod配置了EmpyDir数据卷,在Pod的生命周期内都会存在,当Pod被分配到Node上时,会在Node上创建EmptyDir数据卷,并挂载到Pod的容器中。只要Pod存在,EmpyDir数据卷都会存在(容器删除不会导致EmpyDir数据卷丟失数据),但是如果Pod的生命周期终结(Pod被删除),EmpyDir数据卷也会被删除,并且永久丢失。
EmpyDir数据卷非常适合实现Pod中容器的文件共享。Pod的设计提供了一个很好的容器组合的模型,容器之间各司其职,通过共享文件目录来完成交互,比如可以通过一个专职日志收集容器,在每个Pod中和业务容器中进行组合,来完成日志的收集和汇总。
HostPath
HostPath数据卷允许将容器宿主机上的文件系统挂载到Pod中。如果Pod需要使用宿主机上的某些文件,可以使用HostPath。
网络数据卷
K8S提供了很多类型的数据卷以集成第三方的存储系统,包括一些非常流行的分布式文件系统,也有在IaaS平台上提供的存储支持,这些存储系统都是分布式的,通过网络共享文件系统,因此我们称这一类数据卷为网络数据卷。
网络数据卷能够满足数据的持久化需求,Pod通过配置使用网络数据卷,每次Pod创建的时候都会将存储系统的远端文件目录挂载到容器中,数据卷中的数据将被永久保存,即使Pod被删除,只是除去挂载数据卷,数据卷中的数据仍然保存在存储系统中,且当新的Pod被创建时,仍是挂载同样的数据卷。网络数据卷包含以下几种:NFS、iSCISI、GlusterFS、RBD(Ceph Block Device)、Flocker、AWS Elastic Block Store、GCE Persistent Disk
信息数据卷
K8S中有一些数据卷,主要用来给容器传递配置信息,称之为信息数据卷,比如Secret(处理敏感配置信息,密码、Token等)、Downward API(通过环境变量的方式告诉容器Pod的信息)、Git Repo(将Git仓库下载到Pod中),都是将Pod的信息以文件形式保存,然后以数据卷方式挂载到容器中,容器通过读取文件获取相应的信息。
分享到:
相关推荐
Kubernetes提供了丰富的扩展机制,如自定义资源定义(CRD)、Operator模式、Webhooks等,允许开发者和管理员根据需要构建复杂的自动化流程和定制化功能。此外,Kubernetes社区还发展了一大批周边工具和服务,如Helm...
4. **自定义资源和API扩展**:介绍如何通过CRD(Custom Resource Definition)和 Operator模式来自定义Kubernetes的资源类型,以适应特定的应用场景。 5. **监控和日志**:讲解如何集成Prometheus、Grafana等工具...
Volume是连接Pod和持久化存储的关键,如使用PersistentVolumeClaim(PVC)来动态请求存储资源。 通过深入研究“kubernetes-basico-master”的源码,你不仅能够掌握Kubernetes的基本操作,还能了解到如何利用K8s构建...
4. **存储增强**:支持更多类型的持久化存储,包括本地存储和云存储,为多种工作负载提供了更好的存储解决方案。 5. **监控与日志**:增强了内置的监控和日志收集功能,便于运维人员对集群健康状态进行实时监控。 ...
在项目"**kubernetes-rabbitmq-cluster-master**"中,包含了所有必要的Kubernetes资源定义,如Deployment、Service、PersistentVolumeClaim等,以及相关的配置文件。开发者可以根据自己的需求进行调整,例如更改存储...
容器运行时接口(CRI)、容器网络接口(CNI)和容器存储接口(CSI)为Kubernetes提供了标准化的接口,允许与不同类型的容器运行时、网络和存储系统集成。 资源对象,如Nodes、Namespaces、Labels和Annotations,是...
书中还会涵盖Kubernetes的扩展机制,包括自定义资源定义(CRDs)和Operator模式,它们使得Kubernetes能够支持更多的工作负载类型和复杂的应用场景。安全方面,Kubernetes的安全策略、Service Accounts和Role-Based ...
4. **存储管理**:Kubernetes 支持多种存储类型,包括本地存储、网络存储和云存储。代码示例可能涵盖 Persistent Volumes 和 Persistent Volume Claims 的使用,以持久化数据。 5. **滚动更新与回滚**:Deployments...
4. **存储管理**:了解Persistent Volumes(PV)、Persistent Volume Claims(PVC)的概念,以及如何使用不同类型的存储类(StorageClass)为应用提供持久化存储。 5. **工作负载管理**:掌握Deployment、...
5. **Volume与持久化存储**:Kubernetes支持多种Volume类型,用于在Pod间共享数据或实现持久化存储。这对于需要在Pod重启后保持数据的应用至关重要。 6. **Horizontal Pod Autoscaler (HPA)**:HPA允许自动调整Pod...
3. **网络与服务发现**:了解Kubernetes的网络模型,包括Service的类型(ClusterIP、NodePort、LoadBalancer)、Ingress和Network Policies,以及DNS解析。 4. **存储管理**:熟悉Persistent Volumes、Persistent ...
Kubernetes支持多种资源类型,如工作负载类(Pod、ReplicaSet、ReplicationController、Deployment、StatefulSet、DaemonSet)、服务发现和负载均衡(Service、Ingress)、配置和存储(Volume、Persistent Volume、...
Persistent Volume(PV)是Kubernetes中的一种存储资源,由管理员设置,是集群的一部分。PV具有独立于使用PV的Pod的生命周期,包含存储实现的细节,如NFS、iSCSI或特定于云供应商的存储系统。 Persistent Volume ...
- **CustomResourceDefinition**:允许用户自定义资源类型。 - **DaemonSet**:确保所有(或某些)节点上运行一个Pod的副本。 - **Deployment**:用于定义应用的部署方式,支持滚动更新和回滚。 - **Ingress**:提供...
- persistent volumes (PV) 和 persistent volume claims (PVC):提供持久化存储,支持多种存储类型。 7. **监控与日志** - Metrics Server提供基础资源使用情况的度量。 - Kubernetes事件记录操作历史,方便...
- **Namespace**: Namespace用于隔离Kubernetes资源,可以实现多用户间的资源分配。 **1.4 Kubernetes101** 本节介绍Kubernetes的基本操作,包括安装Kubernetes环境、创建和管理Pod、Service等基本对象。 **1.5 ...