运动鞋子网站建设规划书,备案域名出售是否违法,南京高端网站开发,外销平台有哪些1、存储卷#xff1a;容器内的目录和宿主机的目录进行挂载
2、容器在系统上的生命周期是短暂的#xff0c;delete#xff0c;k8s用控制器创建的pod#xff0c;delete相当于重启#xff0c;容器的状态也会恢复到初始状态#xff0c;一旦回到初始状态#xff0c;所有的后…1、存储卷容器内的目录和宿主机的目录进行挂载
2、容器在系统上的生命周期是短暂的deletek8s用控制器创建的poddelete相当于重启容器的状态也会恢复到初始状态一旦回到初始状态所有的后天编辑的文件都会消失。
3、容器和节点之间创建一个可以持久化保存容器内文件的存储卷即使容器被销毁、删除、重启节点上的存储卷的数据依旧存在后续也可以继续使用可以继续将容器内目录和宿主机挂载保存的数据继续使用
4、存储卷的类型 emptyDir 容器内部共享存储在k8s系统中是一个pod当中的多个容器共享一个存储卷目录 ①emptyDir可以是pod当中容器在这个存储卷上读取和写入 ②emptyDir是不能挂载到节点的随着pod的生命周期结束emptyDir也会结束数据也不会保留不能做数据持久化 hostPath: 将容器内的挂载点和节点上的目录进行挂载hostPath可以实现数据的持久化pod被销毁数据不会丢失。除非node节点被销毁数据才会丢失 * hostPath这种挂载方式非常直接但有一个重要的限制hostPath 是特定于节点的而不是集群范围的 * 面污点设置为noexecute节点上的pod会被驱逐文件数据是否存在 ①pod被驱逐并不是node节点被销毁所有数据还保留在节点上 ②pod被驱逐基于控制器创建的会在其他节点重新部署又会在其他节点生成一个新的存储卷数据依然可以持久化 ③若存储卷类型为emptyDir数据会丢失 NFS共享存储推荐使用 所有pod内的目录都和远程服务器上的nfs共享目录形成数据卷所有的数据文件都保存在共享目录当中集中管理、方便
5、emptyDir的实例
1创建挂载卷 2指定容器进入kubectl exec -it nginx1-7b9b94c8b9-7j4tj -c nginx2 bash
①测试 3删除pod、存储卷也随之销毁 4查看pod内指定容器的日志kubectl logs nginx1-7b57fbd6fb-9zvl7 -c nginx1 6、hostPath实例 7、NFS共享存储的实例
1创建共享目录
mkdir volumes
chmod 777 volumes/
vim /etc/exports
systemctl restart rpcbind
systemctl restart nfs
showmount -e 2配置yaml文件 2第一种指定IP地址 ①测试 3第二种指定主机名 ①所有节点配置主机映射 4删除deploymentkubectl delete -f test.yaml删除基于yaml文件创建的 8、PVC和PV重点 1PVpersistent volume持久化存储卷 用来描述和定义一个存储卷PV一般由运维人员定义 2PVCpersistent volume claim持久化存储的请求 PVC实际上是用来描述或者声明希望使用什么样的PV来进行存储 3PVC和PV ①PVC和PV一一对应描述、存储大小静态请求、动态请求 ②PV和PVC都是虚拟化的概念是k8s中抽象的、虚拟的存储资源 ③PVC——PV——nfs ④PV是集群当中的存储资源PVC请求存储资源也是对存储资源的一种检索检查索引选择一个最合适的PV来存储资源 ⑤当pod运行之后通过PVC请求到了PV除非pod被销毁否则无法删除PVC 4PV和PVC之间的生命周期管理 ①provisioning配置——PVC请求request——检索找一个合适的PV——PVC和PV绑定binding——使用——pod被删除——PV的releasing释放——recycling回收 配置静态、动态 绑定就是把PV分配给PVC 使用就是pod通过PVC使用存储资源 释放pod解除和挂载卷volume之间的关系删除PVC 回收保留PV以供下一个PVC使用 PVC和PV之间的静态请求一旦有上百个PVC使用动态请求
1PV的状态 Available 可用而且没有被任何PVC绑定可以被请求 Bound 绑定PV已经绑定到了PVC绑定即使用 Released 释放PVC已经被删除了但是PV的存储资源还没有被集群回收 Failed 表示PV的资源回收失败而且PV为不可用状态
2PV的读写方式配置文件里是全称 ReadWriteOnceRWO 存储的PV可读可写但是只能被单个pod挂载 ReadOnlyManyROX 存储的PV可以以只读的方式被多个pod挂载 ReadWriteManyRWX 存储的PV可以以读写的方式被多个pod挂载
3PV的挂载方式支持的读写方式 nfs 可以支持三种读写和挂载方式 hostpath 只支持ReadWriteOnce其他两个都不支持 ISCSI 不支持ReadWriteMany
①查看机器上所有SCSI的设备lsscsi ②查看服务器是否有ISCSI设备iscsiadm -m session -P 3 iscsiadm -m session -P 3 iscsiadm 查看服务器是否有ISCSI设备 -m session 指定操作的会话模块管理iscsi -P 3 显示详细信息的级别级别就是3显示详细信息 4集群回收PV资源的方式 Retain 保留pod和挂载点的数据不会被删除默认策略 Recycle 回收PV上的数据会被删除挂载点的数据也会被删除 Delete 删除解绑时会自动删除PV上的数据本地硬盘不能使用只有云平台AWS、EBS、GCE支持动态卷、可以使用PV不再可用云平台自己处理
9、静态请求
1创建nfs挂载目录 ①节点查看nfsshowmount -e 20.0.0.72 2创建PV一个yaml文件中定义多个类型 3定义PVC请求 4使用PV存储卷 ①PVC发起请求请求用哪个PV的存储PV和物理存储做映射挂载物理设备提供存储卷
5删除PVC
①测试
kubectl delete deployments.apps nginx
kubectl delete pvc mypvc ②恢复PV的可用状态 6配置集群回收PV资源Recycle
①persistentVolumeReclaimPolicy: Recycle ②删除测试回收PV上的数据会被删除挂载点的数据也会被删除 7delete的PV回收方式 ①删除测试本地硬盘不支持delete不会删除数据 8总结 k8s中存储卷的模式 emptyDir 容器内的存储卷随着pod的销毁empty也会被销毁数据不保留 hostPath 节点目录的存储卷可以实现持久化存储数据在每个节点上都有不方便集中管理 nfs 享目录存储卷可以实现持久化数据集中在一个目录方便管理 PV和PVC 1PVC请求请求PV的存储硬盘空间nfs 2nfs支持PVC的所有挂载方式和读写模式 3hostpath仅支持readwriteonce 4PVC是以检索的方式找到匹配的PV资源 ①检索挂载方式和读写模式 ②检索PV能够提供的存储资源的大小 ③谁适合选谁 ④保留默认可以不写 ⑤回收自动回收节点上的数据会被删除 ⑥删除PV会变成failed模式不可用数据也会被删除 静态的PV和PVC双方指定好配置 ①运维负责PV创建好持久化存储卷声明好读写和挂载类型以及可以提供的存储空间 ②开发负责PVC运维负责和开发沟通好期望的读写和挂载类型以及存储空间
10、动态请求基于nfs实现
1发布PVC自动生成PV在共享服务器上直接生成挂载目录PVC直接绑定和使用PV
①动态请求的默认回收策略delete
2动态PV需要的组件 ①卷插件Provisionerk8s本身支持的动态PV创建不包括nfs要需要声明和安装一个外部插件nfs使用的是nfs-client Provisioner 存储分配器动态创建PV然后根据PVC的请求自动绑定和使用 ②StorageClass定义PV的属性、存储类型、大小、回收策略
3使用nfs实现动态PVnfs支持的方式nfs-clientProvisioner适配nfs-client 动态请求的过程 provisioner卷插件存储分配器支持nfs、创建PV目录 storageclass定义PV的属性 1、创建serviceAccount账户管理NFS Provisioner插件在k8s集群中的权限 ①让卷插件provisioner能够在集群内部通信、获取资源、监听事件、创建、删除和更新PV 2、基于Deployment来创建NFS Provisioner由卷插件的pod动态创建PV 3、创建StorageClass负责建立PVC并调用NFS provisioner进行工作并让PV与PVC建立关联 ①给PV赋予属性PVC被删除之后PV的状态、PV的回收策略、动态扩缩容 4、创建PVC声明期望的PV属性和pod
4第一步创建nfs-client-Provisioner卷插件
①创建nfs共享目录 ②创建serviceAccount账户管理NFS Provisioner插件在k8s集群中的权限 NFS Provisioner是一个插件没有权限是无法在集群中获取k8s的消息。这个插件要有权限能够监听apiserver、获取个体、list获取集群的列表资源、create、delete、watch监听事件 rbacrole-based access control基础权限控制定义角色在集群中可以使用的权限
vim nfs-client-rbac.yaml kubectl apply -f nfs-client-rbac.yaml 5第二步基于Deployment来创建NFS Provisionerprovisioner创建PV
①屏蔽self-link字段vim /etc/kubernetes/manifests/kube-apiserver.yaml 1.20版本之后有一个新的机制 * selflinkapi的资源对象之一表示资源对象在集群当中自身的一个连接self-link是一个唯一的标识符号可以用于标识k8s集群当中每个资源的对象 * self-link的值是一个url也是指向该资源对象在k8s中的api路径 * self-link的作用更好的实现资源对象的查找和引用
kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml kubectl delete pod kube-apiserver -n kube-system
kubectl get pod -n kube-system ②基于deployment部署nfs-provisioner插件vim nfs-client-provisioner.yaml * nfs-provisioner的客户端以pod的方式运行在集群中监听k8s集群当中PV的请求动态的创建与nfs服务器相关的PV * 容器内使用的配置在nfs-provisioner当中定义好环境变量传给容器 * 环境变量storageclass的名称、nfs服务器的地址、nfs的目录
quay.io/external_storage/nfs-client-provisioner:latest kubectl apply -f nfs-client-provisioner.yaml
kubectl get pod 6第三步创建StorageClass负责建立PVC并调用NFS provisioner进行预定的工作并让PV与PVC建立关联
①vim nfs-client-storageclass.yaml
kubectl apply -f nfs-client-storageclass.yaml
kubectl get storageclasses.storage.k8s.io kubectl get storageclasses.storage.k8s.io NAME storageclass的名称 PROVISIONER 对应的创建PV的provisioner的插件 RECLAIMPOLICY 回收策略保留 VOLUMEBINDINGMODE 卷绑定模式immediate表示PVC请求创建PV时系统会立即绑定一个可用的PV ②waitforfirstconsumer第一个使用者出现之后再绑定PV ALLOWVOLUMEEXPANSION true表示可以在运行时可以对PV进行扩容
7第四部创建PVCvim pvc-pod.yaml kubectl apply -f pvc-pod.yaml ①访问 8测试 ①访问测试 ②删除测试
kubectl delete deployments.apps nginx2
kubectl delete pvc nfs-pvc1 ③恢复PV 9修改回收策略
①修改回收策略vim nfs-client-storageclass.yaml
kubectl delete storageclasses.storage.k8s.io nfs-client-storageclass
kubectl apply -f nfs-client-storageclass.yaml
kubectl get storageclasses.storage.k8s.io ②创建deployment ③测试删除pod、删除PVC kubectl delete deployments.apps nginx2
kubectl delete pvc nfs-pvc1