<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Rook [Rook](https://github.com/rook/rook)是一款云原生環境下的開源分布式存儲編排系統,目前已進入CNCF孵化。Rook的官方網站是<https://rook.io>。 ## Rook是什么? Rook將分布式存儲軟件轉變為自我管理,自我縮放和自我修復的存儲服務。它通過自動化部署,引導、配置、供應、擴展、升級、遷移、災難恢復、監控和資源管理來實現。 Rook使用基礎的云原生容器管理、調度和編排平臺提供的功能來履行其職責。 Rook利用擴展點深入融入云原生環境,為調度、生命周期管理、資源管理、安全性、監控和用戶體驗提供無縫體驗。 Rook現在處于alpha狀態,并且最初專注于在Kubernetes之上運行Ceph。Ceph是一個分布式存儲系統,提供文件、數據塊和對象存儲,可以部署在大型生產集群中。Rook計劃在未來的版本中增加對除Ceph之外的其他存儲系統以及Kubernetes之外的其他云原生環境的支持。 ## 部署 可以使用helm或直接用yaml文件兩種方式來部署rook operator。 **使用helm部署** ```bash helm init -i jimmysong/kubernetes-helm-tiller:v2.8.1 helm repo add rook-alpha https://charts.rook.io/alpha helm install rook-alpha/rook --name rook --namespace rook-system ``` **直接使用yaml文件部署** ```bash kubectl apply -f rook-operator.yaml ``` 不論使用那種方式部署的rook operator,都會在rook-agent中看到rook-agent用戶無法列出集群中某些資源的錯誤,可以通過為rook-agent的分配`cluster-admin`權限臨時解決,詳見[Issue 1472](https://github.com/rook/rook/issues/1472)。 使用如下yanl文件創建一個`ClusterRoleBinding`并應用到集群中。 ```yaml kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: rookagent-clusterrolebinding subjects: - kind: ServiceAccount name: rook-agent namespace: rook-system roleRef: kind: ClusterRole name: cluster-admin apiGroup: "" ``` **部署rook cluster** 創建完rook operator后,我們再部署rook cluster。 `rook-cluster.yaml`配置如下: ```yaml apiVersion: v1 kind: Namespace metadata: name: rook --- apiVersion: rook.io/v1alpha1 kind: Cluster metadata: name: rook namespace: rook spec: versionTag: v0.6.2 dataDirHostPath: /var/lib/rook storage: useAllNodes: true useAllDevices: false storeConfig: storeType: bluestore databaseSizeMB: 1024 journalSizeMB: 1024 ``` **注意**:需要手動指定`versionTag`,因為該鏡像repo中沒有`latest`標簽,如不指定的話Pod將出現鏡像拉取錯誤。 執行下面的命令部署rook集群。 ```bash kubectl apply -f rook-cluster.yaml ``` rook集群運行在`rook` namespace下,查看rook集群中的pod: ```bash $ kubectl -n rook get pod NAME READY STATUS RESTARTS AGE rook-api-848df956bf-q6zf2 1/1 Running 0 4m rook-ceph-mgr0-cfccfd6b8-cpk5p 1/1 Running 0 4m rook-ceph-mon0-t496l 1/1 Running 0 6m rook-ceph-mon1-zcn7v 1/1 Running 0 5m rook-ceph-mon3-h97qx 1/1 Running 0 3m rook-ceph-osd-557tn 1/1 Running 0 4m rook-ceph-osd-74frb 1/1 Running 0 4m rook-ceph-osd-zf7rg 1/1 Running 1 4m rook-tools 1/1 Running 0 2m ``` **部署StorageClass** StorageClass rook-block的yaml文件(rook-storage.yaml)如下: ```yaml apiVersion: rook.io/v1alpha1 kind: Pool metadata: name: replicapool namespace: rook spec: replicated: size: 1 # For an erasure-coded pool, comment out the replication size above and uncomment the following settings. # Make sure you have enough OSDs to support the replica size or erasure code chunks. #erasureCoded: # dataChunks: 2 # codingChunks: 1 --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: rook-block provisioner: rook.io/block parameters: pool: replicapool # Specify the Rook cluster from which to create volumes. # If not specified, it will use `rook` as the name of the cluster. # This is also the namespace where the cluster will be clusterName: rook # Specify the filesystem type of the volume. If not specified, it will use `ext4`. # fstype: ext4 ``` 我們在下面的示例中將使用rook-block這個StorageClass來創建PV。 ## 工具 部署rook操作工具pod,該工具pod的yaml文件(rook-tools.yaml)如下: ```yaml apiVersion: v1 kind: Pod metadata: name: rook-tools namespace: rook-system spec: dnsPolicy: ClusterFirstWithHostNet serviceAccountName: rook-operator containers: - name: rook-tools image: rook/toolbox:master imagePullPolicy: IfNotPresent env: - name: ROOK_ADMIN_SECRET valueFrom: secretKeyRef: name: rook-ceph-mon key: admin-secret securityContext: privileged: true volumeMounts: - mountPath: /dev name: dev - mountPath: /sys/bus name: sysbus - mountPath: /lib/modules name: libmodules - name: mon-endpoint-volume mountPath: /etc/rook hostNetwork: false volumes: - name: dev hostPath: path: /dev - name: sysbus hostPath: path: /sys/bus - name: libmodules hostPath: path: /lib/modules - name: mon-endpoint-volume configMap: name: rook-ceph-mon-endpoints items: - key: endpoint path: mon-endpoints ``` `ConfigMap`和`Secret`中的配置項內容是自定義的。 使用下面的命令部署工具pod: ```bash kubectl apply -f rook-tools.yaml ``` 這是一個獨立的pod,沒有使用其他高級的controller來管理,我們將它部署在`rook-system`的namespace下。 ```bash kubectl -n rook exec -it rook-tools bash ``` 使用下面的命令查看rook集群狀態。 ```bash $ rookctl status OVERALL STATUS: OK USAGE: TOTAL USED DATA AVAILABLE 37.95 GiB 1.50 GiB 0 B 36.45 GiB MONITORS: NAME ADDRESS IN QUORUM STATUS rook-ceph-mon0 10.254.162.99:6790/0 true UNKNOWN MGRs: NAME STATUS rook-ceph-mgr0 Active OSDs: TOTAL UP IN FULL NEAR FULL 1 1 1 false false PLACEMENT GROUPS (0 total): STATE COUNT none $ ceph df GLOBAL: SIZE AVAIL RAW USED %RAW USED 38861M 37323M 1537M 3.96 POOLS: NAME ID USED %USED MAX AVAIL OBJECTS ``` ## 示例 官方提供了使用rook作為典型的LAMP(Linux + Apache + MySQL + PHP)應用Wordpress的存儲后端的示例的yaml文件`mysql.yaml`和`wordpress.yaml`,使用下面的命令創建。 ```bash kubectl apply -f mysql.yaml kubectl apply -f wordpress.yaml ``` Wordpress要依賴于MySQL,所以要先創建MySQL。 在創建wordpress的時候可能遇到該錯誤[rook flexvolume failing to attach volumes #1147](https://github.com/rook/rook/issues/1147),該問題尚未解決。 ## 清理 如果使用helm部署,則執行下面的命令: ```bash helm delete --purge rook helm delete daemonset rook-agent ``` 如果使用yaml文件直接部署,則使用`kubectl delete -f `加當初使用的yaml文件即可刪除集群。 ## 參考 - [Operator Helm Chart](https://rook.io/docs/rook/master/helm-operator.html) - [Creating Rook Clusters](https://rook.io/docs/rook/v0.6/cluster-crd.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看