nba2kol控卫

admin · 2019-01-01

  

  

本文转载自微信公家号「黑客下昼茶」,作家为少。转载本文请相闭黑客下昼茶公家号。

  Rook 是一个开源 cloud-native storage orchestrator(云原生活储编排器),为种种存储处置计划供给平台、框架和救援,以与云原生境遇举办原生集成。

  Rook 将存储软件变动为自我处分(self-managing)、自我扩大(self-scaling)和自我修复(self-healing)的存储任事。它经由过程主动化陈设(automating deployment)、启发(bootstrapping)、装备(configuration)、提供(provisioning)、 扩大(scaling)、晋级(upgrading)、转移(migration)、劫难光复(disaster recovery)、监控(monitoring)和资本处分(resource management)来实行这一点。 Rook 行使底层云原生容器处分、调理和编排平台供给的举措来施行其职责。

  Rook 使用扩大点深度集成到云原生境遇中,并为调理、人命周期处分、资本处分、和平、监控和用户休会供给无缝休会。

   Cassandra 迅速初学

  Cassandra 是一个高可用、容错、平等的 NoSQL 数据库,存在闪电般的本能和可调的同等性。它供给了无单点滞碍的大范围可扩大性。

  Scylla 是正在 C++ 中对 Cassandra 的亲热硬件重写。它采取无同享架构,可实行真实的线性扩大和紧要硬件优化,从而实行超低耽误和极高含糊量。它是 Cassandra 的直接代替品,并行使相像的接口,所以 Rook 也救援它。

   前摘要求

  运转 Rook Cassandra operator 必要 Kubernetes 集群。为了确保你有一个为 Rook 绸缪好的 Kubernetes 集群(Cassandra 无须要 flexvolume 插件)

  陈设 Cassandra Operator

  起初行使如下下令陈设 Rook Cassandra Operator:

  

$gitclone--single-branch--branchv1.6.8https://github.com/rook/rook.gitcdrook/cluster/examples/kubernetes/cassandrakubectlapply-foperator.yaml

 

  这将正在定名空间 rook-cassandra-system 中安置 operator。您能够检讨 operator 能否已启动并运转:

  

kubectl-nrook-cassandra-systemgetpod

创筑和初始化 Cassandra/Scylla 集群

 

  现正在 operator 正正在运转,咱们能够经由过程创筑 clusters.cassandra.rook.io 资本的实例来创筑 Cassandra/Scylla 集群的实例。该资本的某些值是可装备的,所以请粗心涉猎 cluster.yaml 并遵照本身的嗜好调解成立。

  当你绸缪创筑一个 Cassandra 集群时,只要运转:

  

kubectlcreate-fcluster.yaml

 

  咱们能够行使如下下令验证能否已创筑代外咱们新 Cassandra 集群的 Kubernetes 工具。这很紧张,由于它标明 Rook 已告捷扩大 Kubernetes,使 Cassandra 集群成为 Kubernetes 云原生境遇中的一等国民。

  

kubectl-nrook-cassandragetclusters.cassandra.rook.io

 

  要检讨能否悉数所需的成员都正在运转,您应当从如下下令中看到与 cluster.yaml 中指定的成员数目相像的条款数:

  

kubectl-nrook-cassandragetpod-lapp=rook-cassandra

 

  您还能够从其形态跟踪 Cassandra 集群的形态。要检讨集群确当前形态,请运转:

  

kubectl-nrook-cassandradescribeclusters.cassandra.rook.iorook-cassandra

 

  会见数据库

   从 kubectl:

  要正在新集群中获取 cqlsh shell:

  

kubectlexec-nrook-cassandra-itrook-cassandra-east-1-east-1a-0--cqlsh>DESCRIBEKEYSPACES;

从 Pod 外部:

 

  当你创筑一个新的集群时,Rook 会主动为客户端创筑一个任事来会见集群。任事的称号从命商定-client。您能够经由过程运转如下下令正在集群中检查此任事:

  

kubectl-nrook-cassandradescribeservicerook-cassandra-client

 

  正在 Kubernetes 集群中运转的 Pod 能够行使此任事连绵到 Cassandra。这是行使 Python Driver 的示例:

  

fromcassandra.clusterimportClustercluster=Cluster([rook-cassandra-client.rook-cassandra.svc.cluster.local])session=cluster.connect()

Scale Up

 

  operator 救援扩大机架(rack)以及增添新机架(rack)。要举办变动,您能够行使:

  

kubectleditclusters.cassandra.rook.iorook-cassandra

要扩大一个 rack,请将 rack 的 Spec.Members 字段变动为所需值。 要增添新 rack,请正在 racks 列外中增添一个新 rack。请记着为新 rack 遴选区别的 rack 称号。 编纂并保管 yaml 后,请检讨集群的形态和事宜以获取相闭正发作境况的新闻:

kubectl-nrook-cassandradescribeclusters.cassandra.rook.iorook-cassandra

Scale Down

 

  operator 救援按比例缩小 rack。要举办变动,您能够行使:

  

kubectleditclusters.cassandra.rook.iorook-cassandra

要缩小一个 rack,请将 rack 的 Spec.Members 字段变动为所需值。 编纂并保管 yaml 后,请检讨集群的形态和事宜以获取相闭正发作境况的新闻:

kubectl-nrook-cassandradescribeclusters.cassandra.rook.iorook-cassandra

Clean Up

 

  要整理与此操练干系的悉数资本,您能够运转如下下令。

  留神:这将摧残您的数据库并删除其悉数干系数据。

  

kubectldelete-fcluster.yamlkubectldelete-foperator.yaml

滞碍摈弃

 

  假若集群没有呈现,第一步是检讨 operator 的日记:

  

kubectl-nrook-cassandra-systemlogs-lapp=rook-cassandra-operator

 

  假若 operator 日记中齐备平常,您还能够检查 Cassandra 实例之一的日记:

  

kubectl-nrook-cassandralogsrook-cassandra-0

Cassandra 监控

 

  要为 cassandra rack 启用 jmx_exporter,您应当正在 CassandraCluster CRD 中为 rack 指定 jmxExporterConfigMapName 选项。

  比方:

  

apiVersion:cassandra.rook.io/v1alpha1kind:Clustermetadata:name:my-cassandranamespace:rook-cassandraspec:...datacenter:name:my-datacenterracks:-name:my-rackmembers:3jmxExporterConfigMapName:jmx-exporter-settingsstorage:volumeClaimTemplates:-metadata:name:rook-cassandra-dataspec:storageClassName:my-storage-classresources:requests:storage:200Gi

 

  获取悉数目标的简易 config map 示例:

  

apiVersion:v1kind:ConfigMapmetadata:name:jmx-exporter-settingsnamespace:rook-cassandradata:jmx_exporter_config.yaml:

 

  ConfigMap 的数据字段必需包罗带有 jmx exporter 成立的 jmx_exporter_config.yaml key。

  当 config map 更新时,Pod 没有主动从新加载机制。 configmap 变动后,您应当手动从新启动悉数 rack pods:

  

NAMESPACE=<namespace>CLUSTER=<cluster_name>RACKS=$(kubectlgetsts-n${NAMESPACE}-l"cassandra.rook.io/cluster=${CLUSTER}")echo${RACKS}

Ceph Storage 迅速初学

 

  本指南将启发您告终 Ceph 集群的根本成立,并使您或许行使集群中运转的其余 pod 中的块、工具和文献存储。

   最低版本

  Rook 救援 Kubernetes v1.11 或更高版本。

  Important 假若您行使的是 K8s 1.15 或更早版本,则必要创筑区别版本的 Rook CRD。创筑正在示例清单的 pre-k8s-1.16 子文献夹中找到的 crds.yaml。

   前摘要求

  为确保您领有可用于 Rook 的 Kubernetes 集群。

  为了装备 Ceph 存储集群,起码必要如下当地存储选项之一:

   原始配置(无分区或体例化文献体例) 这必要正在主机上安置 lvm2。为了防止这类依附性,您能够正在磁盘上创筑一个完全的磁盘分区(睹下文) 原始分区(无体例化文献体例) block 形式下存储类中可用的历久卷

  您能够行使如下下令确认您的分区或配置能否已体例化文献体例。

  

lsblk-f
NAMEFSTYPELABELUUIDMOUNTPOINTvda└─vda1LVM2_member>eSO50t-GkUV-YKTH-WsGq-hNJY-eKNf-3i07IB├─ubuntu--vg-rootext4c2366f76-6e21-4f10-a8f3-6776212e2fe4/└─ubuntu--vg-swap_1swap9492a3dc-ad75-47cd-9596-678e8cf17ff9[SWAP]vdb

 

  假若 FSTYPE 字段不为空,则正在响应配置的顶部有一个文献体例。正在这类境况下,您能够将 vdb 用于 Ceph,而不克不及行使 vda 及其分区。

   TL;DR

  假若走运的话,能够行使如下 kubectl 下令和示例 yaml 文献创筑一个简易的 Rook 集群。

  

$gitclone--single-branch--branchv1.6.8https://github.com/rook/rook.gitcdrook/cluster/examples/kubernetes/cephkubectlcreate-fcrds.yaml-fco妹妹on.yaml-foperator.yamlkubectlcreate-fcluster.yaml

集群境遇

 

  Rook 文档注重于正在坐蓐境遇中启动 Rook。还供给了少许示例来放宽测试境遇的少许成立。正在本指南前面创筑集群时,请斟酌如下示例集群清单:

   cluster.yaml: 正在裸机上运转的坐蓐集群的集群成立。起码必要三个做事节点。 cluster-on-pvc.yaml: 正在静态云境遇中运转的坐蓐集群的集群成立。 cluster-test.yaml: 测试境遇的集群成立,比方 minikube。 陈设 Rook Operator

  第一步是陈设 Rook operator。检讨您能否正正在行使与您的 Rook 版本绝对应的示例 yaml 文献。

  

cdcluster/examples/kubernetes/cephkubectlcreate-fcrds.yaml-fco妹妹on.yaml-foperator.yaml#verifytherook-ceph-operatorisinthe`Running`statebeforeproceedingkubectl-nrook-cephgetpod

 

  正在坐蓐中启动 Operator 以前,您也许必要斟酌少许成立:

   假若您行使 kubernetes v1.15 或更早版本,则必要正在此处创筑 CRD,正在 /cluster/examples/kubernetes/ceph/pre-k8s-1.16/crd.yaml。 CustomResourceDefinition 的 apiextension v1beta1 版本正在 Kubernetes v1.16 中已弃用。 斟酌能否要启用默许禁用的某些 Rook 功用。相闭这些和其余高等成立,请参阅 operator.yaml。 配置发明:假若启用了 ROOK_ENABLE_DISCOVERY_DAEMON 成立,Rook 将监督要装备的新配置,常用于裸机集群。 Flex driver:Flex driver 已被弃用,取而代之的是 CSI driver,但仍可经由过程 ROOK_ENABLE_FLEX_DRIVER 成立启用。 Node affinity and tolerations(节点闭系和容忍度):默许境况下,CSI driver 将正在集群中的任何节点上运转。要装备 CSI driver affinity,能够行使众种成立。 创筑 Rook Ceph 集群

  现正在 Rook operator 正正在运转,咱们能够创筑 Ceph 集群。为了使集群正在从新启动后接连存正在,请确保成立对主机无效的 dataDirHostPath 属性。

  创筑集群:

  

kubectlcreate-fcluster.yaml

 

  行使 kubectl 列出 rook-ceph 定名空间中的 pod。一朝它们悉数运转,您应当或许看到如下 pod。 osd pod 的数目将取决于集群中的节点数目和装备的配置数目。假若没有修正下面的 cluster.yaml,估计每一个节点会创筑一个 OSD。CSI、rook-ceph-agent(flex driver)和 rook-discover pod 也是可选的,整体取决于您的成立。

  

kubectl-nrook-cephgetpod
NAMEREADYSTATUSRESTARTSAGEcsi-cephfsplugin-provisioner-d77bb49c6-n5tgs5/5Running0140scsi-cephfsplugin-provisioner-d77bb49c6-v9rvn5/5Running0140scsi-cephfsplugin-rthrp3/3Running0140scsi-rbdplugin-hbsm73/3Running0140scsi-rbdplugin-provisioner-5b5cd64fd-nvk6c6/6Running0140scsi-rbdplugin-provisioner-5b5cd64fd-q7bxl6/6Running0140srook-ceph-crashcollector-minikube-5b57b7c5d4-hfldl1/1Running0105srook-ceph-mgr-a-64cd7cdf54-j8b5p1/1Running077srook-ceph-mon-a-694bb7987d-fp9w71/1Running0105srook-ceph-mon-b-856fdd5cb9-5h2qk1/1Running094srook-ceph-mon-c-57545897fc-j576h1/1Running085srook-ceph-operator-85f5b946bd-s8grz1/1Running092mrook-ceph-osd-0-6bb747b6c5-lnvb61/1Running023srook-ceph-osd-1-7f67f9646d-44p7v1/1Running024srook-ceph-osd-2-6cd4b776ff-v4d681/1Running025srook-ceph-osd-prepare-node1-vx2rz0/2Completed060srook-ceph-osd-prepare-node2-ab3fd0/2Completed060srook-ceph-osd-prepare-node3-w4xyz0/2Completed060s

 

  要验证集群能否处于康健形态,请连绵到 Rook toolbox 并运转 ceph status 下令。

   悉数 mons 都应到达法定人数 mgr 应当是活泼的 起码有一个 OSD 处于行动形态 假若运转景遇不是 HEALTH_OK,则应侦察正告或舛误

cephstatus
cluster:id:a0452c76-30d9-4c1a-a948-5d8405f19a7chealth:HEALTH_OKservices:mon:3daemons,quoruma,b,c(age3m)mgr:a(active,since2m)osd:3osds:3up(since1m),3in(since1m)..

Storage

 

  相闭 Rook 公然的三种存储范例的操练,请参阅如下指南:

   Block:创筑要由 Pod 行使的块(block)存储 Object:创筑可正在 Kubernetes 集群外部或外部会见的工具存储 Shared Filesystem:创筑要正在众个 pod 之间同享的文献体例 Ceph 仪外板

  Ceph 有一个仪外板,您能够正在此中检查集群的形态。

   器械

  咱们创筑了一个 toolbox 容器,此中包罗用于调试和摈弃 Rook 集群滞碍的全套 Ceph 客户端。

   监控

  每一个 Rook 集群都有少许内置的目标网络器(collectors)/导出器(exporters),用于行使 Prometheus 举办监控。

   毁灭

  告终测试集群后,请参阅这些讲明以整理集群。

   收集文献体例 (NFS)

  NFS 许诺近程主机经由过程收集挂载文献体例并与这些文献体例交互,就像它们是正在当地挂载一律。这使体例处分员或许将资本整合到收集上的中心任事器上。

   前摘要求 运转 Rook NFS operator 必要 Kubernetes 集群。

  要大白的卷,必要经由过程 PVC 附加到 NFS server pod。

  能够被附加(attached)和导出(exported)任何范例的 PVC,比方 Host Path、AWS Elastic Block Store、GCP Persistent Disk、CephFS、Ceph RBD 等。这些卷的局限(limitations)正在它们由 NFS 同享时也实用。您能够正在 Kubernetes docs 中进一步体会这些卷的具体新闻和局限。3. NFS client packages 必需安置正在 Kubernetes 也许运转挂载 NFS 的 pod 的悉数节点上。正在 CentOS 节点上安置 nfs-utils 或正在 Ubuntu 节点上安置 nfs-co妹妹on。

   陈设 NFS Operator

  起初行使如下下令陈设 Rook NFS operator:

  

$gitclone--single-branch--branchv1.6.8https://github.com/rook/rook.gitcdrook/cluster/examples/kubernetes/nfskubectlcreate-fco妹妹on.yamlkubectlcreate-foperator.yaml

 

  您能够检讨 operator 能否已启动并运转:

  

kubectl-nrook-nfs-systemgetpod

 

  NAME READY STATUS RESTARTS AGE

  

NAMEREADYSTATUSRESTARTSAGErook-nfs-operator-879f5bf8b-gnwht1/1Running029m

陈设 NFS Admission Webhook (可选)

 

  Admission webhooks 是 HTTP 回调,用于接管对 API 任事器的准入哀求。两品种型的 admission webhooks 是验证 admission webhook 和 mutating admission webhook。 NFS Operator 救援验证 admission webhook,它正在存储到 etcd(历久化)以前验证发送到 API server 的 NFSServer 工具。

  要正在 NFS 上启用 admission webhook,比方验证 admission webhook,您必要施行如下操纵:

  起初,确保安置了 cert-manager。假若尚未安置,您能够根据 cert-manager 安置文档中的讲明举办安置。或许,您能够简易地运转如下单个下令:

  

kubectlapply--validate=false-fhttps://github.com/jetstack/cert-manager/releases/download/v0.15.1/cert-manager.yaml

 

  这将轻松安置最新版本 (v0.15.1) 的 cert-manager。告终后,确保 cert-manager 组件陈设精确并处于 Running 形态:

  

kubectlget-ncert-managerpod
NAMEREADYSTATUSRESTARTSAGEcert-manager-7747db9d88-jmw2f1/1Running02m1scert-manager-cainjector-87c85c6ff-dhtl81/1Running02m1scert-manager-webhook-64dc9fff44-5g5651/1Running02m1s

 

  一朝 cert-manager 运转,您现正在能够陈设 NFS webhook:

  

kubectlcreate-fwebhook.yaml

 

  验证 webhook 已启动并正正在运转:

  

kubectl-nrook-nfs-systemgetpod
NAMEREADYSTATUSRESTARTSAGErook-nfs-operator-78d86bf969-k7lqp1/1Running0102srook-nfs-webhook-74749cbd46-6jw2w1/1Running0102s

 

  创筑 Openshift 和平高低文管理(可选)

  正在 OpenShift 集群上,咱们必要创筑少许出格的和平高低文管理。假若您未正在 OpenShift 中运转,则能够跳过此片面并转到下一片面。

  要为 nfs-server pod 创筑和平高低文管理,咱们能够行使如下 yaml,它也能够正在 /cluster/examples/kubernetes/nfs 下的 scc.yaml 中找到。

  留神:旧版本的 OpenShift 也许必要 apiVersion: v1

  

kind:SecurityContextConstraintsapiVersion:security.openshift.io/v1metadata:name:rook-nfsallowHostDirVolumePlugin:trueallowHostIPC:falseallowHostNetwork:falseallowHostPID:falseallowHostPorts:falseallowPrivilegedContainer:falseallowedCapabilities:-SYS_ADMIN-DAC_READ_SEARCHdefaultAddCapabilities:nullfsGroup:type:MustRunAspriority:nullreadOnlyRootFilesystem:falserequiredDropCapabilities:-KILL-MKNOD-SYS_CHROOTrunAsUser:type:RunAsAnyseLinuxContext:type:MustRunAssupplementalGroups:type:RunAsAnyvolumes:-configMap-downwardAPI-emptyDir-persistentVolumeClaim-secretusers:-system:serviceaccount:rook-nfs:rook-nfs-server

 

  您能够行使如下下令创筑 scc:

  

occreate-fscc.yaml

 

  创筑 Pod 和平政策(引荐)

  咱们倡导您也创筑 Pod 和平政策

  

apiVersion:policy/v1beta1kind:PodSecurityPolicymetadata:name:rook-nfs-policyspec:privileged:truefsGroup:rule:RunAsAnyallowedCapabilities:-DAC_READ_SEARCH-SYS_RESOURCErunAsUser:rule:RunAsAnyseLinux:rule:RunAsAnysupplementalGroups:rule:RunAsAnyvolumes:-configMap-downwardAPI-emptyDir-persistentVolumeClaim-secret-hostPath

 

  行使称号 psp.yaml 保管此文献并行使如下下令创筑:

  

kubectlcreate-fpsp.yaml

创筑和初始化 NFS 任事器

 

  现正在 operator 正正在运转,咱们能够经由过程创筑 nfsservers.nfs.rook.io 资本的实例来创筑 NFS 任事器的实例。NFS server resource 的种种字段和选项可用于装备要导出的任事器及其卷。

  正在咱们创筑 NFS Server 以前,咱们必要创筑 ServiceAccount 和 RBAC 端正

  

---apiVersion:v1kind:Namespacemetadata:name:rook-nfs---apiVersion:v1kind:ServiceAccountmetadata:name:rook-nfs-servernamespace:rook-nfs---kind:ClusterRoleapiVersion:rbac.authorization.k8s.io/v1metadata:name:rook-nfs-provisioner-runnerrules:-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"]-apiGroups:[""]resources:["services","endpoints"]verbs:["get"]-apiGroups:["policy"]resources:["podsecuritypolicies"]resourceNames:["rook-nfs-policy"]verbs:["use"]-apiGroups:[""]resources:["endpoints"]verbs:["get","list","watch","create","update","patch"]-apiGroups:-nfs.rook.ioresources:-"*"verbs:-"*"---kind:ClusterRoleBindingapiVersion:rbac.authorization.k8s.io/v1metadata:name:rook-nfs-provisioner-runnersubjects:-kind:ServiceAccountname:rook-nfs-server#replacewithnamespacewhereprovisionerisdeployednamespace:rook-nfsroleRef:kind:ClusterRolename:rook-nfs-provisioner-runnerapiGroup:rbac.authorization.k8s.io

 

  行使称号 rbac.yaml 保管此文献并行使如下下令创筑:

  

kubectlcreate-frbac.yaml

 

  本指南有 3 个紧要示例,用于演示行使 NFS 任事器导出卷(exporting volumes):

   默许 StorageClass 示例 XFS StorageClass 示例 Rook Ceph volume 示例 默许 StorageClass 示例

  第一个示例将逐渐创筑一个 NFS server 实例,该实例导出由您凑巧运转的境遇的默许 StorageClass 救援的存储。正在某些境遇中,这也许是主机旅途(host path),正在其余境遇中,它也许是云供给商虚构磁盘(cloud provider virtual disk)。不管哪一种方法,此示例都必要存正在默许的 StorageClass。

  起初将如下 NFS CRD 实例界说保管到名为 nfs.yaml 的文献中:

  

---#AdefaultstorageclassmustbepresentapiVersion:v1kind:PersistentVolumeClai妹妹etadata:name:nfs-default-claimnamespace:rook-nfsspec:accessModes:-ReadWriteManyresources:requests:storage:1Gi---apiVersion:nfs.rook.io/v1alpha1kind:NFSServermetadata:name:rook-nfsnamespace:rook-nfsspec:replicas:1exports:-name:share1server:accessMode:ReadWritesquash:"none"#APersistentVolumeClai妹妹ustbecreatedbeforecreatingNFSCRDinstance.persistentVolumeClaim:claimName:nfs-default-claim#Akey/valuelistofannotationsannotations:rook:nfs

 

  保管了 nfs.yaml 文献后,现正在创筑 NFS server,如下所示:

  

kubectlcreate-fnfs.yaml

XFS StorageClass 示例

 

  Rook NFS 经由过程 xfs_quota 救援磁盘配额。所以,假若您必要为卷指定磁盘配额,则能够根据此示例举办操纵。

  正在这个例子中,咱们将行使一个带有 prjquota 选项的行动 xfs 挂载的底层卷。正在创筑底层卷(underlying volume)以前,您必要行使 xfs 文献体例和 prjquota mountOptions 创筑 StorageClass。Kubernetes 的很众分散式存储供给商都救援 xfs 文献体例。往往经由过程正在 storageClass 参数中界说 fsType: xfs 或 fs: xfs。但现实上怎样指定 storage-class 文献体例范例取决于它本身的存储供给者。您能够检查 https://kubernetes.io/docs/concepts/storage/storage-classes/ 体会更众概况。

  这是 GCE PD 和 AWS EBS 的示例 StorageClass

   GCE PD

apiVersion:storage.k8s.io/v1kind:StorageClassmetadata:name:standard-xfsparameters:type:pd-standardfsType:xfsmountOptions:-prjquotaprovisioner:kubernetes.io/gce-pdreclaimPolicy:DeletevolumeBindingMode:I妹妹ediateallowVolumeExpansion:true

AWS EBS

apiVersion:storage.k8s.io/v1kind:StorageClassmetadata:name:standard-xfsprovisioner:kubernetes.io/aws-ebsparameters:type:io1iopsPerGB:"10"fsType:xfsmountOptions:-prjquotareclaimPolicy:DeletevolumeBindingMode:I妹妹ediate

 

  一朝您曾经领有带有 xfs 文献体例和 prjquota mountOptions 的 StorageClass,您就能够行使如下示例创筑 NFS server 实例。

  

---#Astorageclasswithnamestandard-xfsmustbepresent.#ThestorageclassmustbehasxfsfilesystemtypeandprjquotamountOptions.apiVersion:v1kind:PersistentVolumeClai妹妹etadata:name:nfs-xfs-claimnamespace:rook-nfsspec:storageClassName:"standard-xfs"accessModes:-ReadWriteOnceresources:requests:storage:1Gi---apiVersion:nfs.rook.io/v1alpha1kind:NFSServermetadata:name:rook-nfsnamespace:rook-nfsspec:replicas:1exports:-name:share1server:accessMode:ReadWritesquash:"none"#APersistentVolumeClai妹妹ustbecreatedbeforecreatingNFSCRDinstance.persistentVolumeClaim:claimName:nfs-xfs-claim#Akey/valuelistofannotationsannotations:rook:nfs

 

  将此 PVC 和 NFS Server 实例保管为 nfs-xfs.yaml 并行使如下下令创筑。

  

kubectlcreate-fnfs-xfs.yaml

Rook Ceph volume 示例

 

  正在这个代替示例中,咱们将行使区别的根柢卷(underlying volume)行动 NFS server 的 export。这些次序将启发咱们导出 Ceph RBD block volume,以便客户端能够经由过程收集会见它。

  正在 Rook Ceph 集群启动并运转后,咱们能够接连创筑 NFS server。

  将此 PVC 和 NFS 任事器实例保管为 nfs-ceph.yaml:

  

---#Arookcephclustermustberunning#Createarookcephclusterusingexamplesinrook/cluster/examples/kubernetes/ceph#Refertohttps://rook.io/docs/rook/master/ceph-quickstart.htmlforaquickrookclustersetupapiVersion:v1kind:PersistentVolumeClai妹妹etadata:name:nfs-ceph-claimnamespace:rook-nfsspec:storageClassName:rook-ceph-blockaccessModes:-ReadWriteManyresources:requests:storage:2Gi---apiVersion:nfs.rook.io/v1alpha1kind:NFSServermetadata:name:rook-nfsnamespace:rook-nfsspec:replicas:1exports:-name:share1server:accessMode:ReadWritesquash:"none"#APersistentVolumeClai妹妹ustbecreatedbeforecreatingNFSCRDinstance.#CreateaCephclusterforusingthisexample#CreateacephPVCaftercreatingtherookcephclusterusingceph-pvc.yamlpersistentVolumeClaim:claimName:nfs-ceph-claim#Akey/valuelistofannotationsannotations:rook:nfs

 

  创筑您保管正在 nfs-ceph.yaml 中的 NFS server 实例:

  

kubectlcreate-fnfs-ceph.yaml

验证 NFS Server

 

  咱们能够行使如下下令验证能否已创筑代外咱们的新 NFS server 及其导出的 Kubernetes 工具。

  

kubectl-nrook-nfsgetnfsservers.nfs.rook.io
NAMEAGESTATErook-nfs32sRunning

 

  验证 NFS server pod 能否已启动并正正在运转:

  

kubectl-nrook-nfsgetpod-lapp=rook-nfs
NAMEREADYSTATUSRESTARTSAGErook-nfs-01/1Running02m

 

  假若 NFS server pod 处于 Running 形态,那末咱们曾经告捷创筑了一个大白的 NFS 同享,客户端能够入手经由过程收集会见。

   会见 Export

  从 Rook 版本 v1.0 入手,Rook 救援 NFS 的静态装备(dynamic provisioning)。此示例将展现怎样将静态装备功用用于 nfs。

  陈设 NFS Operator 和 NFSServer 实例后。必需创筑好似于如下示例的 storageclass 来静态装备卷。

  

apiVersion:storage.k8s.io/v1kind:StorageClassmetadata:labels:app:rook-nfsname:rook-nfs-share1parameters:exportName:share1nfsServerName:rook-nfsnfsServerNamespace:rook-nfsprovisioner:nfs.rook.io/rook-nfs-provisionerreclaimPolicy:DeletevolumeBindingMode:I妹妹ediate

 

  您能够将其另存为文献,比方:名为 sc.yaml 而后行使如下下令创筑 storageclass。

  

kubectlcreate-fsc.yaml

 

  留神:StorageClass 必要通报如下 3 个参数。

   exportName: 它报告提供商(provisioner)行使哪一个导出来提供卷。 nfsServerName: 它是 NFSServer 实例的称号。 nfsServerNamespace: NFSServer 实例运转所正在的定名空间。

  创筑上述 storageclass 后,您能够创筑援用 storageclass 的 PV claim,如上面给出的示例所示。

  

apiVersion:v1kind:PersistentVolumeClai妹妹etadata:name:rook-nfs-pv-claimspec:storageClassName:"rook-nfs-share1"accessModes:-ReadWriteManyresources:requests:storage:1Mi

 

  您也能够将其保管为文献,比方:名为 pvc.yaml 而后行使如下下令创筑 PV claim。

  

kubectlcreate-fpvc.yaml

花费 Export

 

  现正在咱们能够经由过程创筑一个示例 web server app 来行使刚才创筑的 PV, 该利用圭臬行使上述 PersistentVolumeClaim 申明导出的卷。有 2 个 pod 组成此示例:

  将读取和外现 NFS 同享实质的 Web server pod

  将随机数据写入 NFS 同享的 writer pod,以便网站不休更新

  从 cluster/examples/kubernetes/nfs 文献夹启动 busybox pod(writer)和 web server:

  

kubectlcreate-fbusybox-rc.yamlkubectlcreate-fweb-rc.yaml

 

  让咱们确认预期的 busybox writer pod 和 Web server pod 都已启动并处于 Running 形态:

  

kubectlgetpod-lapp=nfs-demo

 

  为了或许经由过程收集会见 Web server,让咱们为它创筑一个 service:

  

kubectlcreate-fweb-service.yaml

 

  而后咱们能够行使咱们以前启动的 busybox writer pod 来检讨 nginx 能否精确地供给数据。不才面的 1-liner 下令中,咱们行使 kubectl exec 正在 busybox writer pod 中运转一个下令, 该下令行使 wget 检索 web server pod 托管的 web page。跟着 busybox writer pod 接连写入新的光阴戳,咱们应当会看到前往的输出也每大概 10 秒更新一次。

  

$echo;kubectlexec$(kubectlgetpod-lapp=nfs-demo,role=busybox-ojsonpath={.items[0].metadata.name})--wget-qO-http://$(kubectlgetservicesnfs-web-ojsonpath={.spec.clusterIP});echo
ThuOct2219:28:55UTC2015nfs-busybox-w3s4t

整理毁灭

 

  要整理与此操练干系的悉数资本,您能够运转如下下令。

  

kubectldelete-fweb-service.yamlkubectldelete-fweb-rc.yamlkubectldelete-fbusybox-rc.yamlkubectldelete-fpvc.yamlkubectldelete-fpv.yamlkubectldelete-fnfs.yamlkubectldelete-fnfs-xfs.yamlkubectldelete-fnfs-ceph.yamlkubectldelete-frbac.yamlkubectldelete-fpsp.yamlkubectldelete-fscc.yaml#ifdeployedkubectldelete-foperator.yamlkubectldelete-fwebhook.yaml#ifdeployedkubectldelete-fco妹妹on.yaml

滞碍摈弃

 

  假若 NFS server pod 没有呈现,第一步是检讨 NFS operator 的日记:

  

kubectl-nrook-nfs-systemlogs-lapp=rook-nfs-operator

 

文章推荐:

2022 年中国人工智能行业发展现状与市场规模分析 市场规模超 3000 亿元

该来的总要来! 切尔西老板将彻底退出英国市场

雷神黑武士四代开售:i7搭RTX3060不到9千元

智慧城市中 5G 和物联网的未来