日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過配置JindoRuntime實(shí)現(xiàn)Master組件狀態(tài)持久化存儲(chǔ)

更新時(shí)間:

為避免運(yùn)行Master組件的容器重啟造成緩存系統(tǒng)元數(shù)據(jù)丟失,F(xiàn)luid支持通過配置JindoRuntime,持久化存儲(chǔ)JindoFS Master組件的元數(shù)據(jù),從而提升JindoFS分布式緩存集群的可用性。

功能介紹

JindoFS來源于阿里云EMR團(tuán)隊(duì),是基于C++實(shí)現(xiàn)的支撐Dataset數(shù)據(jù)管理和數(shù)據(jù)緩存的執(zhí)行引擎,同時(shí)支持對(duì)OSS、OSS-HDFS和PVC等多種數(shù)據(jù)源提供數(shù)據(jù)緩存服務(wù)。更多信息,請(qǐng)參見JindoData概述

JindoFS采用Master-Worker架構(gòu),Master組件和Worker組件均容器化運(yùn)行于集群中,其中Master組件負(fù)責(zé)記錄緩存數(shù)據(jù)元信息和掛載點(diǎn)信息等,Worker組件負(fù)責(zé)維護(hù)緩存數(shù)據(jù)信息。當(dāng)運(yùn)行Master組件的容器重啟或重新調(diào)度時(shí),Master組件緩存的數(shù)據(jù)元信息和掛載點(diǎn)信息可能會(huì)丟失,從而導(dǎo)致JindoFS分布式緩存集群不可用。您可以通過配置Fluid JindoRuntime,使JindoFS Master組件將元信息持久化存儲(chǔ)于Kubernetes存儲(chǔ)卷中,提高JindoFS分布式緩存集群的可用性。

前提條件

步驟一:準(zhǔn)備云盤存儲(chǔ)卷

  1. 創(chuàng)建pvc.yaml文件,配置云盤存儲(chǔ)卷PVC。

    說明

    如果您需要為云盤存儲(chǔ)卷PVC配置更多參數(shù),請(qǐng)參見通過kubectl命令行使用云盤動(dòng)態(tài)存儲(chǔ)卷

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: demo-jindo-master-meta
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: alicloud-disk-topology-alltype
      resources:
        requests:
          storage: 30Gi
  2. 執(zhí)行以下命令,創(chuàng)建PVC資源。

    kubectl create -f pvc.yaml

    預(yù)期輸出:

    persistentvolumeclaim/demo-jindo-master-meta created

步驟二:創(chuàng)建Dataset和JindoRuntime

  1. 創(chuàng)建secret.yaml文件,保存用于RAM訪問OSS Bucket的AccessKeyId(AK)和AccessKeySecret(SK)。

    apiVersion: v1
    kind: Secret
    metadata:
      name: access-key
    stringData:
      fs.oss.accessKeyId: ****** # 請(qǐng)輸入AccessKeyId。
      fs.oss.accessKeySecret: ****** # 請(qǐng)輸入AccessKeySecret。
  2. 執(zhí)行以下命令,創(chuàng)建Secret資源。

    kubectl create -f secret.yaml

    預(yù)期輸出:

    secret/access-key created
  3. 創(chuàng)建dataset.yaml文件,配置Fluid Dataset資源和Fluid JindoRuntime資源的參數(shù)信息。

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: demo
    spec:
      mounts: 
        - mountPoint: oss://<OSS_BUCKET>/<BUCKET_DIR>
          name: demo
          path: /
          options:
            fs.oss.endpoint: <OSS_BUCKET_ENDPOINT>
          encryptOptions:
            - name: fs.oss.accessKeyId
              valueFrom:
                secretKeyRef:
                  name: access-key
                  key: fs.oss.accessKeyId
            - name: fs.oss.accessKeySecret
              valueFrom:
                secretKeyRef:
                  name: access-key
                  key: fs.oss.accessKeySecret
    ---
    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: demo
    spec:
      replicas: 2
      volumes:
        - name: meta-vol
          persistentVolumeClaim:
            claimName: demo-jindo-master-meta
      master:
        volumeMounts:
          - name: meta-vol
            mountPath: /root/jindofsx-meta
        properties:
          namespace.meta-dir: "/root/jindofsx-meta"
      tieredstore:
        levels:
          - mediumtype: MEM
            path: /dev/shm
            volumeType: emptyDir
            quota: 12Gi
            high: "0.99"
            low: "0.99"

    與本功能相關(guān)的關(guān)鍵參數(shù)說明如下:

    參數(shù)

    說明

    JindoRuntime

    volumes

    配置JindoRuntime各組件可掛載的存儲(chǔ)卷信息。您需要選擇步驟一:準(zhǔn)備云盤存儲(chǔ)卷中創(chuàng)建的云盤存儲(chǔ)卷PVC。

    master.volumeMounts

    配置運(yùn)行JindoRuntime Master組件的容器所掛載的存儲(chǔ)卷和掛載路徑。

    master.properties

    配置JindoRuntime Master組件的詳細(xì)參數(shù)信息。為啟用Master組件的元信息持久化存儲(chǔ)能力,需指定namespace.meta-dir: <path>,其中<path>master.volumeMounts中指定的存儲(chǔ)卷掛載路徑(即mountPath參數(shù)值)。

  4. 執(zhí)行以下命令,創(chuàng)建JindoRuntime和Dataset。

    kubectl create -f dataset.yaml

    預(yù)期輸出:

    dataset.data.fluid.io/demo created
    jindoruntime.data.fluid.io/demo created
  5. 執(zhí)行以下命令,查看Dataset部署情況。

    kubectl get dataset

    預(yù)期輸出:

    NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE
    demo 531.89MiB      0.00B  24.00GiB       0.0%              Bound 5m35s

    PHASE字段變?yōu)?code data-tag="code" code-type="xCode" class="code">Bound狀態(tài),表明Dataset和JindoRuntime已部署成功。Fluid將自動(dòng)為Bound狀態(tài)的Dataset創(chuàng)建同名PVC,應(yīng)用Pod可通過掛載該P(yáng)VC,訪問Dataset掛載點(diǎn)(Dataset.spec.mountPoint)中指定的數(shù)據(jù)。

步驟三:驗(yàn)證Master組件狀態(tài)持久化存儲(chǔ)功能

在本步驟中,通過對(duì)節(jié)點(diǎn)添加污點(diǎn)模擬運(yùn)行Master組件的Pod重新調(diào)度的場景,以驗(yàn)證本功能是否正確配置并生效。

  1. 創(chuàng)建pod.yaml文件,用于掛載PVC。

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
        - name: nginx
          image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
          volumeMounts:
            - mountPath: /data
              name: data-vol
      volumes:
        - name: data-vol
          persistentVolumeClaim:
            claimName: demo
  2. 執(zhí)行以下命令,在Kubernetes集群中部署Nginx應(yīng)用。

    kubectl create -f pod.yaml

    預(yù)期輸出:

    pod/nginx created
  3. 執(zhí)行以下命令,從應(yīng)用Pod中訪問數(shù)據(jù)。

    kubectl exec -it nginx -- ls /data

    預(yù)期輸出Dataset掛載點(diǎn)(Dataset.spec.mountPoint)中指定的OSS文件系統(tǒng)中的數(shù)據(jù)。

  4. 執(zhí)行以下命令,獲取運(yùn)行JindoFS Master組件的Pod所在的節(jié)點(diǎn)。

    master_node=$(kubectl get pod -o wide | awk '/demo-jindofs-master-0/ {print $7}')
  5. 執(zhí)行以下命令,通過污點(diǎn)阻止新的Pod調(diào)度至步驟4中查詢的節(jié)點(diǎn)。

    kubectl taint node $master_node test-jindofs-master=reschedule:NoSchedule

    預(yù)期輸出:

    node/cn-beijing.192.168.xx.xx tainted
  6. 執(zhí)行以下命令,刪除并自動(dòng)重建JindoFS Master組件的Pod。

    kubectl delete pod demo-jindofs-master-0

    預(yù)期輸出:

    pod "demo-jindofs-master-0" deleted 

    此時(shí),重建的Pod(demo-jindofs-master-0)將會(huì)被調(diào)度到集群中的另一個(gè)節(jié)點(diǎn)上。但是由于運(yùn)行JindoFS Master組件的Pod掛載了存儲(chǔ)卷,因此Master組件可以通過存儲(chǔ)卷恢復(fù)到Pod被重建前的狀態(tài)。

    說明

    由于云盤存儲(chǔ)卷不支持跨可用區(qū)掛載,因此在使用云盤作為持久化存儲(chǔ)時(shí),重建的Pod只能被調(diào)度到同可用區(qū)的其他節(jié)點(diǎn)上。請(qǐng)確保集群中至少包含另一個(gè)與重建前Pod同可用區(qū)的ECS節(jié)點(diǎn)。

  7. 執(zhí)行以下命令,重建應(yīng)用Pod。

    kubectl delete -f pod.yaml && kubectl create -f pod.yaml

    預(yù)期輸出:

    pod "nginx" deleted
    pod/nginx created
  8. 執(zhí)行以下命令,從重建后的應(yīng)用Pod中再次訪問數(shù)據(jù)。

    kubectl exec -it nginx -- ls /data

    預(yù)期輸出Dataset掛載點(diǎn)(Dataset.spec.mountPoint)中指定的OSS文件系統(tǒng)中的數(shù)據(jù)。

步驟四:環(huán)境清理

  1. 執(zhí)行以下命令,刪除Pod。

    kubectl delete -f pod.yaml

    預(yù)期輸出:

    pod "nginx" deleted
  2. 執(zhí)行以下命令,刪除為節(jié)點(diǎn)添加的污點(diǎn)。

    kubectl taint node $master_node test-jindofs-master-

    預(yù)期輸出:

    node/cn-beijing.192.168.xx.xx untainted
  3. 可選)依次執(zhí)行以下命令,清理云盤存儲(chǔ)卷資源。

    重要
    • 本示例中創(chuàng)建的云盤存儲(chǔ)卷將持續(xù)產(chǎn)生費(fèi)用。如果您不再需要使用該數(shù)據(jù)加速功能,請(qǐng)及時(shí)清理環(huán)境。關(guān)于云盤存儲(chǔ)卷產(chǎn)生的費(fèi)用,請(qǐng)參見云盤存儲(chǔ)卷概述

    • 清理前,確保沒有正在使用該數(shù)據(jù)集并進(jìn)行I/O操作的應(yīng)用Pod。

    kubectl delete -f dataset.yaml
    kubectl delete -f pvc.yaml