兰州网站seo哪家公司好,离婚律师免费咨询,泉州网站建设,百度小程序注册流程1、什么是卷
在某些场景下#xff0c;我们可能希望新的容器可以在之前容器结束的位
置继续运⾏#xff0c;⽐如在物理机上重启进程。可能不需要#xff08;或者不想要#xff09;
整个⽂件系统被持久化#xff0c;但又希望能保存实际数据的⽬录。
Kubernetes通过定义存储…1、什么是卷
在某些场景下我们可能希望新的容器可以在之前容器结束的位
置继续运⾏⽐如在物理机上重启进程。可能不需要或者不想要
整个⽂件系统被持久化但又希望能保存实际数据的⽬录。
Kubernetes通过定义存储卷来满⾜这个需求它们不像pod这样的
顶级资源⽽是被定义为pod的⼀部分并和pod共享相同的⽣命周
期。这意味着在pod启动时创建卷并在删除pod时销毁卷。因此在
容器重新启动期间卷的内容将保持不变在重新启动容器之后新
容器可以识别前⼀个容器写⼊卷的所有⽂件。另外如果⼀个pod包含
多个容器那这个卷可以同时被所有的容器使⽤。
2、卷的类型
2.1 emptyDir
最简单的卷类型是emptyDir卷卷从⼀个空⽬录开始运⾏在pod内的
应⽤程序可以写⼊它需要的任何⽂件。因为卷的⽣存周期与pod的⽣存
周期相关联所以当删除pod时卷的内容就会丢失。
emptyDir卷是最简单的卷类型但是其他类型的卷都是在它的基础
上构建的在创建空⽬录后它们会⽤数据填充它。 2.2 gitRepo
gitRepo卷基本上也是⼀个emptyDir卷它通过克隆Git仓库并在pod
启动时但在创建容器之前检出特定版本来填充数据
gitRepo容器就像emptyDir卷⼀样基本上是⼀个专⽤⽬录专门
⽤于包含卷的容器并单独使⽤。当pod被删除时卷及其内容被删除。 2.3 hostPath
hostPath卷指向节点⽂件系统上的特定⽂件或⽬录。在同⼀个节点上运⾏并在其hostPath
卷中使⽤相同路径的pod可以看到相同的⽂件。 hostPath卷是我们介绍的第⼀种类型的持久性存储因为gitRepo和
emptyDir卷的内容都会在pod被删除时被删除⽽hostPath卷的内容则不
会被删除。如果删除了⼀个pod并且下⼀个pod使⽤了指向主机上相
同路径的hostPath卷则新pod将会发现上⼀个pod留下的数据但前提
是必须将其调度到与第⼀个pod相同的节点上。
查看kubectl-system 是否存在hostPath 卷
一般都是kubenetes放配置文件才会放到hostpath卷
⼤多数情况下都使⽤这种类型的卷来访问节点的⽇志⽂件、kubeconfigKubernetes配置⽂件
或CA证书。请记住仅当需要在节点上读取或写⼊系统⽂件时才使⽤
hostPath切勿使⽤它们来持久化跨pod的数据。 3、持久化存储
3.1 GCE Google Compute Engine
创建GCE持久磁盘 同⼀区域中创建GCE持久磁盘 使 ⽤ gce Persistent Disk 卷 的 pod: mongodbpodgcepd.yaml 如果要使⽤Minikube就不能使⽤GCE持久磁盘但是可以
部署mongodb-pod-hostpath.yaml这个使⽤的是hostpath卷⽽不是GCE
持久磁盘。
pod包含⼀个容器和⼀个卷被之前创建的GCE持久磁盘⽀持。因为MongoDB就是在
/data/db上存储数据的所以容器中的卷也要挂载在这个路径上 3.2 AWS弹性块存储卷
AWS弹性块存储Aws Elastic Block Store 3.3 NFS卷
如果集群是运⾏在⾃有的⼀组服务器上那么就有⼤量其他可移
植的选项⽤于在卷内挂载外部存储。例如要挂载⼀个简单的NFS共
享只需指定NFS服务器和共享路径 3.4 其他
其他的⽀持选项包括⽤于挂载ISCSI磁盘资源的iscsi⽤于挂载
GlusterFS的glusterfs适⽤于RADOS块设备的rbd还有fiexVolume、
cinder、cephfs、fiocker、fc光纤通道等。rbd如果你不会使⽤到它
们就不需要知道所有的信息。这⾥提到是为了展⽰Kubernetes⽀持⼴
泛的存储技术并且可以使⽤喜欢和习惯的任何存储技术。
4、持久卷使用
4.1 NFS、PVPersistentVolume、PVCPersistentVolumeClain NFS 储存服务器
真实磁盘PersistentVolume 持久卷简称PV
持久分区目录PVC PersistentVolumeClain 持久卷声明
指定所需要的最低容量要求和访问模式然后⽤户将持久卷声明清单提交给Kubernetes
API服务器Kubernetes将找到可匹配的持久卷并将其绑定到持久卷声
明 4.2 创建持久卷
# 查看现有持久卷
kubectl get pv 4.3 创建持久卷声明 绑定持久卷
# 查看现有持久卷
kubectl get pvc# 查看yaml
kubectl get pvc datadir-zk-0 -o yaml -n ydxs-uat
# 修改yaml
kubectl edit pvc datadir-zk-0 -o yaml -n ydxs-uatRWO——ReadWriteOnce——仅允许单个节点挂载读写。
ROX——ReadOnlyMany——允许多个节点挂载只读。
RWX——ReadWriteMany——允许多个节点挂载读写这个卷。 # 查看持久卷
kubectl get pv持久卷显⽰被绑定在default/mongodb-pvc的声明上这个default部
分是声明所在的命名空间在默认命名空间中创建的声明我们之
前有提到过持久卷是集群范围的因此不能在特定的命名空间中创
建但是持久卷声明又只能在特定的命名空间创建所以持久卷和持
久卷声明只能被同⼀命名空间内的pod创建使⽤。 4.4 创建pod 绑定持久卷声明 4.5 创建持久卷声明的好处
是研发⼈员不需要关⼼底层实际使⽤的存储技术。
可以对卷的进行声明配置 4.6 卷的回收 Retain Recycle Delete
⼿动回收持久卷 persistentVolumeReclaimPolicy 配置
设 置 为 Retain 从 ⽽ 通 知 到
Kubernetes我们希望在创建持久卷后将其持久化让Kubernetes可以
在持久卷从持久卷声明中释放后仍然能保留它的卷和数据内容。据我
所知⼿动回收持久卷并使其恢复可⽤的唯⼀⽅法是删除和重新创建
持久卷资源。当这样操作时你将决定如何处理底层存储中的⽂件
可以删除这些⽂件也可以闲置不⽤以便在下⼀个pod中复⽤它们。⾃动回收持久卷 persistentVolumeReclaimPolicy 配置
Recycle 删除卷的内容并使卷可⽤于再次声明通过这种⽅式持久卷可以被不同的
持久卷声明和pod反复使⽤Delete 策略删除底层存储。需要注意当前GCE持久磁盘
⽆法使⽤Recycle选项。这种类型的持久卷只⽀持Retain和Delete策略
其他类型的持久磁盘可能⽀持这些选项也可能不⽀持这些选项 4.7 StorageClass
# 创建 sc 创建StorageClass资源后⽤户可以在其持久卷声明中按名称引⽤
存储类。
创建⼀个请求特定存储类的PVC定义
可以修改mongodb-pvc以使⽤动态配置。以下代码清单显⽰了PVC
中更新后的YAML定义。 # 查看pvc
kubectl get pvc # 自动生成pv