容器相关
非root用户Docker与K8S
Containerd安装
Containerd常用命令
Docker
镜像创建
国内镜像仓库
容器创建(Dockerfile)
容器系统
docker配置
docker数据管理
docker网络管理
docker容器自启动
docker镜像加速
docker问题
搭建Portainer可视化界面
Docker Swarm
Swarm搭建Docker集群
Docker Compose
Docker Compose命令
Docker Compose模板
Docker Machine
Kubernetes常用命令
k8s部署(kubeadmin)
k8s高可用部署
MiniKube
k8s1.24部署(containerd)
k8s1.24部署(docker)
部署 Dashboard
Kuboard K8S管理台
k8s权限管理
k8s网络插件
私有仓密码镜像拉取
k8s集群管理
POD--基本单位
Pod模板
Pod生命周期
Pod健康检查
初始化容器(initContainer)
Deployment--Pod的管理
Deployment模板
Deployment升级与回滚
DaemonSet控制器
StatefulSet控制器(有状态)
JOB与CRONJOB
Service--发布服务
ingress-traefix
ingress-nginx
MetalLB
存储与配置
持久存储卷
配置存储卷
资源管理
标签、选择器与注解
资源预留
调度管理
自动扩容
Proxy API与API Server
Helm--K8S的包管理器
helm常用命令
自定义Chart
私有chart仓库
helm dashboard
K8S证书过期
K8S问题解决
Harbor安装
Harbor操作
Harbor问题
Harbor升级
Docker Registry安装
Docker Registry鉴权
Registry用Nginx代理SSL及鉴权
Docker Registry问题
Istio 服务网络
常用示例
Gateway【服务网关】
kiali 可视化页面
开启HTTPS
linkerd 服务网络
本文档使用MrDoc发布
返回首页
-
+
持久存储卷
2021年9月17日 16:22
admin
![](/media//202109/2021-09-17161152579557.png) --- #PV >###表示持久存储卷,定义了K8S集群中可用的存储资源,其中包含存储资源实现的细节. --- apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv namespace: qsm-pv-test spec: capacity: storage: 100Mi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Recycle storageClassName: examplenfs # PV名称 nfs: server: 192.168.100.100 path: "/test/mysql-nfs01" ================================================================== #访问方式: accessModes: ReadWriteOnce(RWO):读写权限,并且只能被单个Node挂载。 ReadOnlyMany(ROX):只读权限,允许被多个Node挂载。 ReadWriteMany(RWX):读写权限,允许被多个Node挂载。 #回收策略: persistentVolumeReclaimPolicy: Retain 保留:保留数据,需要手工处理。 Recycle 回收空间:简单清除文件的操作(例如执行rm -rf /thevolume/* 命令)。 Delete 删除:与PV相连的后端存储完成Volume的删除操作 #PVC >###表示存储卷的申请,是由用户发起的对存储资源的请求。 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: qsm-nfs-pvc namespace: qsm-pv-test spec: accessModes: - ReadWriteMany storageClassName: examplenfs #要对应PV的名称 resources: requests: storage: 90Mi ================================================================== #访问方式: accessModes: ReadWriteOnce(RWO):读写权限,并且只能被单个Node挂载。 ReadOnlyMany(ROX):只读权限,允许被多个Node挂载。 ReadWriteMany(RWX):读写权限,允许被多个Node挂载。 #回收策略: persistentVolumeReclaimPolicy: Retain 保留:保留数据,需要手工处理。 Recycle 回收空间:简单清除文件的操作(例如执行rm -rf /thevolume/* 命令)。 Delete 删除:与PV相连的后端存储完成Volume的删除操作 ##注意:PVC和PV是一对一的,也即一个PV被一个PVC自动匹配后,不会再被其它PVC匹配了,即使PVC需求能够完全满足。 --- #[注意:Pod使用PVC方法](http://baodoc.frp.bao-server.club:22080/project/35/398/ "Pod使用PVC方法") --- #StorageClass >###StorageClass的作用就像是创建PV模板,当PVC发出存储资源(容量和访问模式)请求时,Kubernetes的供应者Provisioner根据StorageClass来动态创建PV。 ###注意:k8s官方内置的存储分配器并不支持NFS,需要额外安装NFS存储分配器 --- ###deployment.yaml kind: Deployment apiVersion: apps/v1 metadata: name: nfs-client-provisioner spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: nfs-client-provisioner template: metadata: labels: app: nfs-client-provisioner spec: serviceAccountName: nfs-client-provisioner imagePullSecrets: - name: registry-secret containers: - name: nfs-client-provisioner image: quay.io/external_storage/nfs-client-provisioner:latest imagePullPolicy: IfNotPresent volumeMounts: - name: nfs-client-root mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: nfs-client #注意:后面创建StorageClass时,provisioner值要与其相同 - name: NFS_SERVER value: 172.16.0.220 - name: NFS_PATH value: /nfs volumes: - name: nfs-client-root nfs: server: 172.16.0.220 path: /nfs --- ###rabc.yaml kind: ServiceAccount apiVersion: v1 metadata: name: nfs-client-provisioner --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: nfs-client-provisioner-runner rules: - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "delete"] - apiGroups: [""] resources: ["persistentvolumeclaims"] verbs: ["get", "list", "watch", "update"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] verbs: ["create", "update", "patch"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: run-nfs-client-provisioner namespace: default subjects: - kind: ServiceAccount name: nfs-client-provisioner namespace: default roleRef: kind: ClusterRole name: nfs-client-provisioner-runner apiGroup: rbac.authorization.k8s.io --- kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: leader-locking-nfs-client-provisioner rules: - apiGroups: [""] resources: ["endpoints"] verbs: ["get", "list", "watch", "create", "update", "patch"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: leader-locking-nfs-client-provisioner namespace: default subjects: - kind: ServiceAccount name: nfs-client-provisioner # replace with namespace where provisioner is deployed roleRef: kind: Role name: leader-locking-nfs-client-provisioner apiGroup: rbac.authorization.k8s.io --- ###storeClass.yaml apiVersion: storage.k8s.io/v1beta1 kind: StorageClass metadata: name: managed-nfs-storage provisioner: nfs-client #注意:要与deployment模板中PROVISIONER_NAME的值一致 parameters: archiveOnDelete: "false" #false:表示与之关联的PVC在删除时,它所绑定的PV不会被存储分配器保留,ture:则保留 --- #[注意:Pod使用storageClass方法](http://baodoc.frp.bao-server.club:22080/project/35/398/ "Pod使用PVC方法")
分享到: