北京赛车轮盘博彩平台开奖记录查询_快速上手 Rook,初学云原生计储编排
发布日期:2023-10-30 06:00 点击次数:121
[[415352]]
本文转载自微信公众号「黑客下昼茶」,作家为少。转载本文请研究黑客下昼茶公众号。
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:
$ 澳门永利骰宝git clone --single-branch --branch v1.6.8 https://github.com/rook/rook.git cd rook/cluster/examples/kubernetes/cassandra kubectl apply -f operator.yaml
这将在定名空间 rook-cassandra-system 中装置 operator。您不错查验 operator 是否已启动并运行:
kubectl -n rook-cassandra-system get pod创建和启动化 Cassandra/Scylla 集群
当今 operator 正在运行,咱们不错通过创建 clusters.cassandra.rook.io 资源的实例来创建 Cassandra/Scylla 集群的实例。该资源的某些值是可成立的,因此请嘱托浏览 cluster.yaml 并证据我方的喜好养息缔造。
当你准备创建一个 Cassandra 集群时,只需运行:
kubectl create -f cluster.yaml
咱们不错使用以下大喊考证是否已创建代表咱们新 Cassandra 集群的 Kubernetes 对象。这很遑急,因为它标明 Rook 已收效推广 Kubernetes,使 Cassandra 集群成为 Kubernetes 云原生环境中的一等公民。
kubectl -n rook-cassandra get clusters.cassandra.rook.io
要查验是否通盘所需的成员齐在运行,您应该从以下大喊中看到与 cluster.yaml 中指定的成员数目疏浚的条款数:
kubectl -n rook-cassandra get pod -l app=rook-cassandra
您还不错从其现象追踪 Cassandra 集群的现象。要查验集群确现时现象,请运行:
皇冠客服飞机:@seo3687kubectl -n rook-cassandra describe clusters.cassandra.rook.io rook-cassandra
拜访数据库
从 kubectl:要在新集群中赢得 cqlsh shell:
kubectl exec -n rook-cassandra -it rook-cassandra-east-1-east-1a-0 -- cqlsh > DESCRIBE KEYSPACES;从 Pod 里面:
当你创建一个新的集群时,Rook 会自动为客户端创建一个干事来拜访集群。干事的称呼解任商定-client。您不错通过运行以下大喊在集群中稽察此干事:
kubectl -n rook-cassandra describe service rook-cassandra-client
在 Kubernetes 集群中运行的 Pod 不错使用此干事流畅到 Cassandra。这是使用 Python Driver 的示例:
from cassandra.cluster import Cluster cluster = Cluster(['rook-cassandra-client.rook-cassandra.svc.cluster.local']) session = cluster.connect()Scale Up
operator 因循推广机架(rack)以及添加新机架(rack)。要进行改换,您不错使用:
kubectl edit clusters.cassandra.rook.io rook-cassandra要推广一个 rack,请将 rack 的 Spec.Members 字段改换为所需值。 要添加新 rack,请在 racks 列表中添加一个新 rack。请记取为新 rack 聘任不同的 rack 称呼。 剪辑并保存 yaml 后,请查验集群的现象和事件以赢得相关正发生情况的信息:
kubectl -n rook-cassandra describe clusters.cassandra.rook.io rook-cassandraScale Down
operator 因循按比例诽谤 rack。要进行改换,您不错使用:
kubectl edit clusters.cassandra.rook.io rook-cassandra要诽谤一个 rack,请将 rack 的 Spec.Members 字段改换为所需值。 剪辑并保存 yaml 后,请查验集群的现象和事件以赢得相关正发生情况的信息:
kubectl -n rook-cassandra describe clusters.cassandra.rook.io rook-cassandraClean Up
要计帐与此演练关连的通盘资源,您不错运行以下大喊。
博彩平台开奖记录查询老成:这将浮松您的数据库并删除其通盘关连数据。
kubectl delete -f cluster.yaml kubectl delete -f operator.yaml故障排斥
要是集群莫得出现,第一步是查验 operator 的日记:
博彩游戏不仅仅是一项娱乐活动,对于一些聪明的玩家来说,它也可以成为一种赚钱的方式,但需要注意风险和责任。kubectl -n rook-cassandra-system logs -l app=rook-cassandra-operator
要是 operator 日记中一切肤浅,您还不错稽察 Cassandra 实例之一的日记:
kubectl -n rook-cassandra logs rook-cassandra-0Cassandra 监控
要为 cassandra rack 启用 jmx_exporter,您应该在 CassandraCluster CRD 中为 rack 指定 jmxExporterConfigMapName 选项。
举例:
apiVersion: cassandra.rook.io/v1alpha1 kind: Cluster metadata: name: my-cassandra namespace: rook-cassandra spec: ... datacenter: name: my-datacenter racks: - name: my-rack members: 3 jmxExporterConfigMapName: jmx-exporter-settings storage: volumeClaimTemplates: - metadata: name: rook-cassandra-data spec: storageClassName: my-storage-class resources: requests: storage: 200Gi
赢得通盘方针的浅易 config map 示例:
apiVersion: v1 kind: ConfigMap metadata: name: jmx-exporter-settings namespace: rook-cassandra data: jmx_exporter_config.yaml: | lowercaseOutputLabelNames: true lowercaseOutputName: true whitelistObjectNames: ["org.apache.cassandra.metrics:*"]
ConfigMap 的数据字段必须包含带有 jmx exporter 缔造的 jmx_exporter_config.yaml key。
当 config map 更新时,Pod 莫得自动从头加载机制。 configmap 改换后,您应该手动从头启动通盘 rack pods:
NAMESPACE=<namespace> CLUSTER=<cluster_name> RACKS=$(kubectl get sts -n ${NAMESPACE} -l "cassandra.rook.io/cluster=${CLUSTER}") echo ${RACKS} | xargs -n1 kubectl rollout restart -n ${NAMESPACE}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
NAME FSTYPE LABEL UUID MOUNTPOINT vda └─vda1 LVM2_member >eSO50t-GkUV-YKTH-WsGq-hNJY-eKNf-3i07IB ├─ubuntu--vg-root ext4 c2366f76-6e21-4f10-a8f3-6776212e2fe4 / └─ubuntu--vg-swap_1 swap 9492a3dc-ad75-47cd-9596-678e8cf17ff9 [SWAP] vdb
要是 FSTYPE 字段不为空,则在相应开拓的顶部有一个文献系统。在这种情况下,您不错将 vdb 用于 Ceph,而弗成使用 vda 偏激分区。
TL;DR要是行运的话,不错使用以下 kubectl 大喊和示例 yaml 文献创建一个浅易的 Rook 集群。
$ git clone --single-branch --branch v1.6.8 https://github.com/rook/rook.git cd rook/cluster/examples/kubernetes/ceph kubectl create -f crds.yaml -f common.yaml -f operator.yaml kubectl create -f cluster.yaml集群环境
Rook 文档侧重于在坐蓐环境中启动 Rook。还提供了一些示例来放宽测试环境的一些缔造。在本指南后头创建集群时,请研讨以下示例集群清单:
北京赛车轮盘 cluster.yaml: 在裸机上运行的坐蓐集群的集群缔造。至少需要三个职责节点。 cluster-on-pvc.yaml: 在动态云环境中运行的坐蓐集群的集群缔造。 cluster-test.yaml: 测试环境的集群缔造,举例 minikube。 部署 Rook Operator第一步是部署 Rook operator。查验您是否正在使用与您的 Rook 版块相对应的示例 yaml 文献。
cd cluster/examples/kubernetes/ceph kubectl create -f crds.yaml -f common.yaml -f operator.yaml # verify the rook-ceph-operator is in the `Running` state before proceeding kubectl -n rook-ceph get pod
在坐蓐中启动 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 属性。
创建集群:
kubectl create -f cluster.yaml
使用 kubectl 列出 rook-ceph 定名空间中的 pod。一朝它们一谈运行,您应该或者看到以下 pod。 osd pod 的数目将取决于集群中的节点数目和成立的开拓数目。要是莫得修改上头的 cluster.yaml,瞻望每个节点会创建一个 OSD。CSI、rook-ceph-agent(flex driver)和 rook-discover pod 亦然可选的,具体取决于您的缔造。
kubectl -n rook-ceph get pod
NAME READY STATUS RESTARTS AGE csi-cephfsplugin-provisioner-d77bb49c6-n5tgs 5/5 Running 0 140s csi-cephfsplugin-provisioner-d77bb49c6-v9rvn 5/5 Running 0 140s csi-cephfsplugin-rthrp 3/3 Running 0 140s csi-rbdplugin-hbsm7 3/3 Running 0 140s csi-rbdplugin-provisioner-5b5cd64fd-nvk6c 6/6 Running 0 140s csi-rbdplugin-provisioner-5b5cd64fd-q7bxl 6/6 Running 0 140s rook-ceph-crashcollector-minikube-5b57b7c5d4-hfldl 1/1 Running 0 105s rook-ceph-mgr-a-64cd7cdf54-j8b5p 1/1 Running 0 77s rook-ceph-mon-a-694bb7987d-fp9w7 1/1 Running 0 105s rook-ceph-mon-b-856fdd5cb9-5h2qk 1/1 Running 0 94s rook-ceph-mon-c-57545897fc-j576h 1/1 Running 0 85s rook-ceph-operator-85f5b946bd-s8grz 1/1 Running 0 92m rook-ceph-osd-0-6bb747b6c5-lnvb6 1/1 Running 0 23s rook-ceph-osd-1-7f67f9646d-44p7v 1/1 Running 0 24s rook-ceph-osd-2-6cd4b776ff-v4d68 1/1 Running 0 25s rook-ceph-osd-prepare-node1-vx2rz 0/2 Completed 0 60s rook-ceph-osd-prepare-node2-ab3fd 0/2 Completed 0 60s rook-ceph-osd-prepare-node3-w4xyz 0/2 Completed 0 60s
要考证集群是否处于健康现象,请流畅到 Rook toolbox 并运行 ceph status 大喊。
通盘 mons 齐应达到法定东谈主数 mgr 应该是活跃的 至少有一个 OSD 处于举止现象 要是运职业况不是 HEALTH_OK,则应侦察劝诫或格外ceph status
cluster: id: a0452c76-30d9-4c1a-a948-5d8405f19a7c health: HEALTH_OK services: mon: 3 daemons, quorum a,b,c (age 3m) mgr: a(active, since 2m) osd: 3 osds: 3 up (since 1m), 3 in (since 1m) ..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-common。
部署 NFS Operator当先使用以下大喊部署 Rook NFS operator:
$ git clone --single-branch --branch v1.6.8 https://github.com/rook/rook.git cd rook/cluster/examples/kubernetes/nfs kubectl create -f common.yaml kubectl create -f operator.yaml
您不错查验 operator 是否已启动并运行:
皇冠体育 appkubectl -n rook-nfs-system get pod
NAME READY STATUS RESTARTS AGE
NAME READY STATUS RESTARTS AGE rook-nfs-operator-879f5bf8b-gnwht 1/1 Running 0 29m部署 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 装置文档中的评释进行装置。或者,您不错浅易地运行以下单个大喊:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.1/cert-manager.yaml
这将削弱装置最新版块 (v0.15.1) 的 cert-manager。完成后,确保 cert-manager 组件部署正确并处于 Running 现象:
kubectl get -n cert-manager pod
NAME READY STATUS RESTARTS AGE cert-manager-7747db9d88-jmw2f 1/1 Running 0 2m1s cert-manager-cainjector-87c85c6ff-dhtl8 1/1 Running 0 2m1s cert-manager-webhook-64dc9fff44-5g565 1/1 Running 0 2m1s
一朝 cert-manager 运行,您当今不错部署 NFS webhook:
kubectl create -f webhook.yaml
考证 webhook 已启动并正在运行:
kubectl -n rook-nfs-system get pod
NAME READY STATUS RESTARTS AGE rook-nfs-operator-78d86bf969-k7lqp 1/1 Running 0 102s rook-nfs-webhook-74749cbd46-6jw2w 1/1 Running 0 102s
创建 Openshift 安全高下文拘谨(可选)
在 OpenShift 集群上,咱们需要创建一些特地的安全高下文拘谨。要是您未在 OpenShift 中运行,则不错跳过此部分并转到下一部分。
皇冠hg86a
要为 nfs-server pod 创建安全高下文拘谨,咱们不错使用以下 yaml,它也不错在 /cluster/examples/kubernetes/nfs 下的 scc.yaml 中找到。
老成:旧版块的 OpenShift 可能需要 apiVersion: v1
kind: SecurityContextConstraints apiVersion: security.openshift.io/v1 metadata: name: rook-nfs allowHostDirVolumePlugin: true allowHostIPC: false allowHostNetwork: false allowHostPID: false allowHostPorts: false allowPrivilegedContainer: false allowedCapabilities: - SYS_ADMIN - DAC_READ_SEARCH defaultAddCapabilities: null fsGroup: type: MustRunAs priority: null readOnlyRootFilesystem: false requiredDropCapabilities: - KILL - MKNOD - SYS_CHROOT runAsUser: type: RunAsAny seLinuxContext: type: MustRunAs supplementalGroups: type: RunAsAny volumes: - configMap - downwardAPI - emptyDir - persistentVolumeClaim - secret users: - system:serviceaccount:rook-nfs:rook-nfs-server
您不错使用以下大喊创建 scc:
oc create -f scc.yaml
创建 Pod 安全计谋(推选)
咱们忽视您也创建 Pod 安全计谋

apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: rook-nfs-policy spec: privileged: true fsGroup: rule: RunAsAny allowedCapabilities: - DAC_READ_SEARCH - SYS_RESOURCE runAsUser: rule: RunAsAny seLinux: rule: RunAsAny supplementalGroups: rule: RunAsAny volumes: - configMap - downwardAPI - emptyDir - persistentVolumeClaim - secret - hostPath
使用称呼 psp.yaml 保存此文献并使用以下大喊创建:
kubectl create -f psp.yaml创建和启动化 NFS 干事器
当今 operator 正在运行,咱们不错通过创建 nfsservers.nfs.rook.io 资源的实例来创建 NFS 干事器的实例。NFS server resource 的各式字段和选项可用于成立要导出的干事器偏激卷。
在咱们创建 NFS Server 之前,咱们需要创建 ServiceAccount 和 RBAC 司法
--- apiVersion: v1 kind: Namespace metadata: name: rook-nfs --- apiVersion: v1 kind: ServiceAccount metadata: name: rook-nfs-server namespace: rook-nfs --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: rook-nfs-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"] - 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.io resources: - "*" verbs: - "*" --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: rook-nfs-provisioner-runner subjects: - kind: ServiceAccount name: rook-nfs-server # replace with namespace where provisioner is deployed namespace: rook-nfs roleRef: kind: ClusterRole name: rook-nfs-provisioner-runner apiGroup: rbac.authorization.k8s.io
使用称呼 rbac.yaml 保存此文献并使用以下大喊创建:
kubectl create -f rbac.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 的文献中:
--- # A default storageclass must be present apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-default-claim namespace: rook-nfs spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi --- apiVersion: nfs.rook.io/v1alpha1 kind: NFSServer metadata: name: rook-nfs namespace: rook-nfs spec: replicas: 1 exports: - name: share1 server: accessMode: ReadWrite squash: "none" # A Persistent Volume Claim must be created before creating NFS CRD instance. persistentVolumeClaim: claimName: nfs-default-claim # A key/value list of annotations annotations: rook: nfs
保存了 nfs.yaml 文献后,当今创建 NFS server,如下所示:
kubectl create -f nfs.yamlXFS 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 PDapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard-xfs parameters: type: pd-standard fsType: xfs mountOptions: - prjquota provisioner: kubernetes.io/gce-pd reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: trueAWS EBS
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard-xfs provisioner: kubernetes.io/aws-ebs parameters: type: io1 iopsPerGB: "10" fsType: xfs mountOptions: - prjquota reclaimPolicy: Delete volumeBindingMode: Immediate
一朝您也曾领有带有 xfs 文献系统和 prjquota mountOptions 的 StorageClass,您就不错使用以下示例创建 NFS server 实例。
--- # A storage class with name standard-xfs must be present. # The storage class must be has xfs filesystem type and prjquota mountOptions. apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-xfs-claim namespace: rook-nfs spec: storageClassName: "standard-xfs" accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: nfs.rook.io/v1alpha1 kind: NFSServer metadata: name: rook-nfs namespace: rook-nfs spec: replicas: 1 exports: - name: share1 server: accessMode: ReadWrite squash: "none" # A Persistent Volume Claim must be created before creating NFS CRD instance. persistentVolumeClaim: claimName: nfs-xfs-claim # A key/value list of annotations annotations: rook: nfs
将此 PVC 和 NFS Server 实例保存为 nfs-xfs.yaml 并使用以下大喊创建。
kubectl create -f nfs-xfs.yamlRook Ceph volume 示例
在这个替代示例中,咱们将使用不同的基础卷(underlying volume)算作 NFS server 的 export。这些门径将指点咱们导出 Ceph RBD block volume,以便客户端不错通过会聚拜访它。
在 Rook Ceph 集群启动并运行后,咱们不错不绝创建 NFS server。
将此 PVC 和 NFS 干事器实例保存为 nfs-ceph.yaml:
包凡当时的回答是,“去包凡化无非就是以后我的朋友圈小一点,各位合伙人的朋友圈大一点。我希望当我和我的朋友圈退出这个舞台的时候,华兴还能继续传承下去。”
这个黑色幽默故事,就发生在正在进行中的2023年上海国际电影节上,在万众期待的日影《MONDAYS / 如果不让上司注意到这个时间循环就无法结束》中,荒诞又真实的职场梗让人由衷爆笑,大写的期待!
--- # A rook ceph cluster must be running # Create a rook ceph cluster using examples in rook/cluster/examples/kubernetes/ceph # Refer to https://rook.io/docs/rook/master/ceph-quickstart.html for a quick rook cluster setup apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-ceph-claim namespace: rook-nfs spec: storageClassName: rook-ceph-block accessModes: - ReadWriteMany resources: requests: storage: 2Gi --- apiVersion: nfs.rook.io/v1alpha1 kind: NFSServer metadata: name: rook-nfs namespace: rook-nfs spec: replicas: 1 exports: - name: share1 server: accessMode: ReadWrite squash: "none" # A Persistent Volume Claim must be created before creating NFS CRD instance. # Create a Ceph cluster for using this example # Create a ceph PVC after creating the rook ceph cluster using ceph-pvc.yaml persistentVolumeClaim: claimName: nfs-ceph-claim # A key/value list of annotations annotations: rook: nfs
创建您保存在 nfs-ceph.yaml 中的 NFS server 实例:
kubectl create -f nfs-ceph.yaml考证 NFS Server
咱们不错使用以下大喊考证是否已创建代表咱们的新 NFS server 偏激导出的 Kubernetes 对象。
kubectl -n rook-nfs get nfsservers.nfs.rook.io
NAME AGE STATE rook-nfs 32s Running
考证 NFS server pod 是否已启动并正在运行:
kubectl -n rook-nfs get pod -l app=rook-nfs
NAME READY STATUS RESTARTS AGE rook-nfs-0 1/1 Running 0 2m
要是 NFS server pod 处于 Running 现象,那么咱们也曾收效创建了一个显现的 NFS 分享,客户端不错入手通过会聚拜访。
拜访 Export从 Rook 版块 v1.0 入手,Rook 因循 NFS 的动态成立(dynamic provisioning)。此示例将展示怎样将动态成建功能用于 nfs。
部署 NFS Operator 和 NFSServer 实例后。必须创建肖似于以下示例的 storageclass 来动态成立卷。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: labels: app: rook-nfs name: rook-nfs-share1 parameters: exportName: share1 nfsServerName: rook-nfs nfsServerNamespace: rook-nfs provisioner: nfs.rook.io/rook-nfs-provisioner reclaimPolicy: Delete volumeBindingMode: Immediate
您不错将其另存为文献,举例:名为 sc.yaml 然后使用以下大喊创建 storageclass。
kubectl create -f sc.yaml
老成:StorageClass 需要传递以下 3 个参数。
exportName: 它告诉供应商(provisioner)使用哪个导出来供应卷。 nfsServerName: 它是 NFSServer 实例的称呼。 nfsServerNamespace: NFSServer 实例运行方位的定名空间。创建上述 storageclass 后,您不错创建援用 storageclass 的 PV claim,如底下给出的示例所示。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: rook-nfs-pv-claim spec: storageClassName: "rook-nfs-share1" accessModes: - ReadWriteMany resources: requests: storage: 1Mi
您也不错将其保存为文献,举例:名为 pvc.yaml 然后使用以下大喊创建 PV claim。
kubectl create -f pvc.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:
kubectl create -f busybox-rc.yaml kubectl create -f web-rc.yaml
让咱们说明预期的 busybox writer pod 和 Web server pod 齐已启动并处于 Running 现象:
kubectl get pod -l app=nfs-demo
为了或者通过会聚拜访 Web server,让咱们为它创建一个 service:
kubectl create -f web-service.yaml
然后咱们不错使用咱们之前启动的 busybox writer pod 来查验 nginx 是否正确地提供数据。不才面的 1-liner 大喊中,咱们使用 kubectl exec 在 busybox writer pod 中运行一个大喊, 该大喊使用 wget 检索 web server pod 托管的 web page。跟着 busybox writer pod 不绝写入新的时刻戳,咱们应该会看到复返的输出也每梗概 10 秒更新一次。
$ echo; kubectl exec $(kubectl get pod -l app=nfs-demo,role=busybox -o jsonpath='{.items[0].metadata.name}') -- wget -qO- http://$(kubectl get services nfs-web -o jsonpath='{.spec.clusterIP}'); echo
Thu Oct 22 19:28:55 UTC 2015 nfs-busybox-w3s4t计帐就义
要计帐与此演练关连的通盘资源,您不错运行以下大喊。
kubectl delete -f web-service.yaml kubectl delete -f web-rc.yaml kubectl delete -f busybox-rc.yaml kubectl delete -f pvc.yaml kubectl delete -f pv.yaml kubectl delete -f nfs.yaml kubectl delete -f nfs-xfs.yaml kubectl delete -f nfs-ceph.yaml kubectl delete -f rbac.yaml kubectl delete -f psp.yaml kubectl delete -f scc.yaml # if deployed kubectl delete -f operator.yaml kubectl delete -f webhook.yaml # if deployed kubectl delete -f common.yaml故障排斥
要是 NFS server pod 莫得出现,第一步是查验 NFS operator 的日记:
kubectl -n rook-nfs-system logs -l app=rook-nfs-operator
相关资讯