当前位置: 首页 > news >正文

农村自建房设计网站网站开发天津

农村自建房设计网站,网站开发天津,秦皇岛信息平台,vps主机支持WordPress回到目录 kubernetes存储卷的分类太丰富了,每种类型都要写相应的接口与参数才行#xff0c;这就让维护与管理难度加大。 persistenvolume(PV) 是配置好的一段存储(可以是任意类型的存储卷) 也就是说将网络存储共享出来,配置定义成PV。 PersistentVolumeClaim(PVC)是用户pod使…回到目录 kubernetes存储卷的分类太丰富了,每种类型都要写相应的接口与参数才行这就让维护与管理难度加大。 persistenvolume(PV) 是配置好的一段存储(可以是任意类型的存储卷) 也就是说将网络存储共享出来,配置定义成PV。 PersistentVolumeClaim(PVC)是用户pod使用PV的申请请求。 用户不需要关心具体的volume实现细节,只需要关心使用需求。 持久卷PersistentVolumePV 是集群中的一块存储可以由管理员事先制备 或者使用存储类Storage Class来动态制备。 持久卷是集群资源就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样 也是使用卷插件来实现的只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。 此 API 对象中记述了存储的实现细节无论其背后是 NFS、iSCSI 还是特定于云平台的存储系统。 持久卷声明PersistentVolumeClaimPVC 表达的是用户对存储的请求。概念上与 Pod 类似。 Pod 会耗用节点资源而 PVC 申领会耗用 PV 资源。Pod 可以请求特定数量的资源CPU 和内存同样 PVC 申领也可以请求特定的大小和访问模式 例如可以要求 PV 卷能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载参见访问模式。 1 pv和pvc的关系 pv提供存储资源(生产者) pvc使用存储资源(消费者) 使用pvc绑定pv 2 生命周期 构建、绑定、使用、回收 2.1 构建 静态构建、动态构建 2.1.1 静态构建 集群管理员创建若干 PV 卷。这些卷对象带有真实存储的细节信息 并且对集群用户可用可见。PV 卷对象存在于 Kubernetes API 中可供用户消费使用 2.1.2 动态构建 如果集群中已经有的 PV 无法满足 PVC 的需求那么集群会根据 PVC 自动构建一个 PV该操作是通过 StorageClass 实现的。 想要实现这个操作前提是 PVC 必须设置 StorageClass否则会无法动态构建该 PV可以通过启用 DefaultStorageClass 来实现 PV 的构建 2.2 绑定 当用户创建一个 PVC 对象后主节点会监测新的 PVC 对象并且寻找与之匹配的 PV 卷找到 PV 卷后将二者绑定在一起。 如果找不到对应的 PV则需要看 PVC 是否设置 StorageClass 来决定是否动态创建 PV若没有配置PVC 就会一致处于未绑定状态直到有与之匹配的 PV 后才会申领绑定关系 2.3 使用 Pod 将 PVC 当作存储卷来使用集群会通过 PVC 找到绑定的 PV并为 Pod 挂载该卷。 Pod 一旦使用 PVC 绑定 PV 后为了保护数据避免数据丢失问题PV 对象会受到保护在系统中无法被删除 2.4 回收 当用户不再使用其存储卷时他们可以从 API 中将 PVC 对象删除 从而允许该资源被回收再利用。PersistentVolume 对象的回收策略告诉集群 当其被从申领中释放时如何处理该数据卷。 目前数据卷可以被 Retained保留、Recycled回收或 Deleted删除 2.4.1 Retain 回收策略 Retain 使得用户可以手动回收资源。当 PersistentVolumeClaim 对象被删除时PersistentVolume 卷仍然存在对应的数据卷被视为已释放released。 由于卷上仍然存在这前一申领人的数据该卷还不能用于其他申领。 管理员可以通过下面的步骤来手动回收该卷 删除 PersistentVolume 对象。与之相关的、位于外部基础设施中的存储资产 例如 AWS EBS、GCE PD、Azure Disk 或 Cinder 卷在 PV 删除之后仍然存在。 根据情况手动清除所关联的存储资产上的数据。 手动删除所关联的存储资产。 如果你希望重用该存储资产可以基于存储资产的定义创建新的 PersistentVolume 卷对象 2.4.2 Delete 对于支持 Delete 回收策略的卷插件删除动作会将 PersistentVolume 对象从 Kubernetes 中移除同时也会从外部基础设施如 AWS EBS、GCE PD、Azure Disk 或 Cinder 卷中移除所关联的存储资产。 动态制备的卷会继承其 StorageClass 中设置的回收策略 该策略默认为 Delete。管理员需要根据用户的期望来配置 StorageClass 否则 PV 卷被创建之后必须要被编辑或者修补 2.4.3 Recycle 警告 回收策略 Recycle 已被废弃。取而代之的建议方案是使用动态制备。 如果下层的卷插件支持回收策略 Recycle 会在卷上执行一些基本的擦除 rm -rf /thevolume/*操作之后允许该卷用于新的 PVC 申领 3 pv yaml apiVersion: v1 kind: PersistentVolume # 资源类型 PersistenVlume metadata: name: pv0001 # pv的名称 spec:capacity: # 容量限制storage: 5Gi # 容量为5GvolumeMode: Filesystem # 存储类型为文件系统accessModes: # 访问模式# ReadWriteOnce、ReadWriteMany、ReadOnlyMany- ReadWriteOnce # 可被单节点独写persistentVolumeReclaimPolicy: Recycle # 回收策略storageClassName: slow # 创建 PV 的存储类名需要与 pvc 的相同mountOptions: # 加载配置- hard- nfsvers4.1nfs: # 连接到 nfspath: /data/nfs/rw/test-pv # 存储路径server: 192.168.113.121 # nfs 服务地址 访问模式 ReadWriteOnce 只能被一个pvc绑定pvc可读写即服务独享该存储卷 ReadWriteMany 可被多个pvc绑定pvc可读写即多个服务可共享 ReadOnlyOnce 只能被一个pvc绑定pvc仅读操作即服务独享读 ReadOnlyMany 可被多个pvc绑定pvc仅读操作即多个服务共享读内容 pv的状态 状态含义Available空闲未被绑定Bound已经被 PVC 绑定ReleasedPVC 被删除资源已回收但是 PV 未被重新使用Failed自动回收失败 4 pvc yaml文件 不指定选择器则k8s通过资源要求等配置相同的进行自动选择绑定pv apiVersion: v1 kind: PersistentVolumeClaim # 资源类型 metadata:name: nfs-pvc # pvc名称 spec:accessModes:- ReadWriteOnce # 权限需要与对应的 pv 相同volumeMode: Filesystem # 存储类型resources:requests:storage: 5Gi # 资源可以小于 pv 的但是不能大于如果大于就会匹配不到 pvstorageClassName: slow # 名字需要与对应的 pv 相同slow自带的strogeClass # selector: # 使用选择器选择对应的 pv matchLabels标签选择表达式选择matchExpressions # matchLabels: # release: stable # matchExpressions: # - {key: environment, operator: In, values: [dev]} pod如何绑定pvc #在 pod 的挂载容器配置中增加 pvc 挂载 containers:......volumeMounts:- mountPath: /tmp/pvc # 挂载到容器里的路径name: nfs-pvc-test # 挂载数据卷的名称 volumes:- name: nfs-pvc-test # 数据卷名persistentVolumeClaim: # 类型为pvcclaimName: nfs-pvc # pvc 的名称 5 StorageClass k8s 中提供了一套自动创建 PV 的机制就是基于 StorageClass 进行的通过 StorageClass 可以实现仅仅配置 PVC然后交由 StorageClass 根据 PVC 的需求动态创建 PV 制备器 Provisioner每个 StorageClass 都有一个制备器Provisioner用来决定使用哪个卷插件制备 PV 准备Storage [nfs] 前提需要提前安装nfs 官方插件是不支持NFS动态供给的但是我们可以用第三方的插件来实现 RBAC配置 因为storage自动创建pv需要经过kube-apiserver所以需要授权 provisioner配置 storageclass配置 RBAC配置 名称rbac.yaml 用途授权账号 账号nfs-client-provisioner apiVersion: v1 kind: ServiceAccount metadata:name: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata:name: nfs-client-provisioner-runner rules:- apiGroups: []resources: [nodes]verbs: [get, list, watch]- 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 subjects:- kind: ServiceAccountname: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io --- kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata:name: leader-locking-nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default 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# replace with namespace where provisioner is deployednamespace: default subjects:- kind: ServiceAccountname: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io nfs-provisioner deploy-nfs-client-provisioner.yml apiVersion: apps/v1 kind: Deployment metadata:name: nfs-client-provisionerlabels:app: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner #storageclass通过该名称绑定- name: NFS_SERVERvalue: 10.199.99.201- name: NFS_PATHvalue: /home/data/nfsvolumes:- name: nfs-client-rootnfs:server: 10.199.99.201path: /home/data/nfs storageclass配置 storageclass-nfs.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:annotations:storageclass.kubernetes.io/is-default-class: truename: nfs-client provisioner: k8s-sigs.io/nfs-subdir-external-provisioner # or choose another name, must match deployments env PROVISIONER_NAME parameters:archiveOnDelete: false 操作 #1. 在/opt/k8s/下创建目录storageclass,-d标识没有上级目录也创建 mkdir -d /opt/k8s/storageclass#2. 进入目录创建storageclass-nfs-rbac.yaml将上面4.2.1内容复制 #3. 创建 [rootk8s-master1 storageclass]# kubectl apply -f storageclass-nfs-rbac.yaml serviceaccount/nfs-client-provisioner created clusterrole.rbac.authorization.k8s.io/nfs-client-provisioner-runner created clusterrolebinding.rbac.authorization.k8s.io/run-nfs-client-provisioner created role.rbac.authorization.k8s.io/leader-locking-nfs-client-provisioner created rolebinding.rbac.authorization.k8s.io/leader-locking-nfs-client-provisioner created#4. 创建制备器 deploy-nfs-client-provisioner.yml [rootk8s-master1 storageclass]# kubectl apply -f deploy-nfs-client-provisioner.yml deployment.apps/nfs-client-provisioner created#5. 创建storageclass storageclass-nfs.yaml [rootk8s-master1 storageclass]# kubectl apply -f storageclass-nfs.yaml storageclass.storage.k8s.io/managed-nfs-storage created 验证 #查看存储类sc [rootk8s-master1 storageclass]# kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE nfs-client k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate #查看制备器provisioner [rootk8s-master1 storageclass]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE nfs-client-provisioner 1/1 1 1 28m #查看制备器po [rootk8s-master1 storageclass]# kubectl get po NAME READY STATUS RESTARTS AGE nfs-client-provisioner-5b788667db-85hrp 1/1 Running 0 24m 创建一个statefulset验证是否自动制备 --- apiVersion: v1 kind: Service metadata:name: nginxlabels:app: nginx spec:ports:- port: 80name: webclusterIP: Noneselector:app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata:name: web spec:selector:matchLabels:app: nginxserviceName: nginxreplicas: 2template:metadata:labels:app: nginxspec:imagePullSecrets:- name: huoban-harborterminationGracePeriodSeconds: 10containers:- name: nginximage: nginx:latestports:- containerPort: 80name: webvolumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: wwwspec:accessModes: [ ReadWriteOnce ]storageClassName: nfs-client #storageclass 名称resources:requests:storage: 1Gi [rootk8s-master storageclass]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-243c7f89-23ff-40b3-821f-f7014d14ec99 1Gi RWO Delete Bound default/www-web-0 nfs-client 4s [rootk8s-master storageclass]# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE www-web-0 Bound pvc-243c7f89-23ff-40b3-821f-f7014d14ec99 1Gi RWO nfs-client 8s
http://www.hkea.cn/news/14289911/

相关文章:

  • 建设网站企业运营北京网页设计机构
  • 昆山网站网站建设信誉比较好的网上做任务的网站
  • 中科院网站建设安卓应用开发系统
  • 南宁建站软件怎么创建域名
  • 湖南做网站问磐石网络专业flash网站模版
  • 响应式网站建设教程中国最新军事新闻
  • 网站设计这个专业怎么样wordpress 邮箱函数
  • 织梦网站地图制作教程十堰高端网站建设
  • 网站建设费用折旧年限网站建设公司推广广告语
  • 企业网站模板做视频在哪个网站收益高
  • 怎么开网站做理论的网站
  • 做电脑网站手机能显示不出来怎么办网页图片转换成word文档
  • 网站开发实现的环境杭州建设项目审批网站
  • app网站制作要多少钱设计服务网站
  • 网站怎么宣传win10系统优化工具
  • 喜欢做网站土地流转网站开发
  • 有没有什么 网站能够做试卷wordpress需要伪静态吗
  • php做网站一般用什么软件网站后台树形菜单样式
  • 网站建设计划书内容专业网页网站设计图书
  • 硬盘做免费嗳暧视频网站网站外链建设与维护
  • 旅游网站建设案例网站建设 套格式
  • 高校网站集群平台子站开发官网在线制作
  • 深圳网站建设南山郑州seo网站有优化
  • 上市公司中 哪家网站做的好做网站公司哪个好
  • 厦门seo网站建设费用外贸公司取名
  • 对网站开发实训的建议软件通网站建设
  • 高质量的网站建设国外云服务器厂商
  • 网站建设文档搜索引擎优化策略应该包括
  • h5网站设计报价如何访问自己做的网站
  • 嘉兴网站制作费用安徽 网站开发