全部产品
Search
文档中心

Elastic Container Instance:Terapkan CRD DataCache

更新时间:Jul 02, 2025

Elastic Container Instance menyediakan fitur caching data untuk pengguna Kubernetes berdasarkan definisi sumber daya kustom (CRD) DataCache. Pengguna Kubernetes dapat menggunakan fitur ini untuk menarik data skala besar secara terlebih dahulu. Topik ini menjelaskan cara menerapkan CRD DataCache di kluster Kubernetes.

Penagihan

  • Jika Anda menerapkan CRD DataCache di kluster Container Service for Kubernetes (ACK), CRD DataCache akan diterapkan pada node Elastic Compute Service (ECS) yang sudah ada di kluster secara default. Anda tidak akan dikenakan biaya untuk CRD tersebut.

  • Jika Anda menerapkan CRD DataCache di kluster ACK Serverless, sebuah pod yang menyediakan 0,25 vCPU dan 0,5 GiB memori akan dibuat setelah CRD DataCache diterapkan. Anda akan dikenakan biaya berdasarkan pod tersebut. Harga dihitung menggunakan rumus berikut: Harga = (0,25 × Harga satuan vCPU + 0,5 × Harga satuan memori) × Durasi berjalan pod. Untuk informasi lebih lanjut tentang penagihan pod dan harga satuan vCPU serta memori, lihat Penagihan instance kontainer elastis.

Prasyarat

  • ID AccessKey dan Rahasia AccessKey telah diperoleh. Untuk informasi lebih lanjut tentang cara mendapatkan pasangan AccessKey, lihat Buat pasangan AccessKey.

    Penting

    Pastikan akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) tempat pasangan AccessKey dimiliki memiliki izin untuk memanggil operasi API terkait DataCaches.

  • ID wilayah tempat kluster berada telah diperoleh.

(Direkomendasikan) Terapkan CRD DataCache menggunakan Helm

  1. Sambungkan ke kluster Kubernetes.

  2. Peroleh versi Helm.

    helm version
  3. Terapkan CRD DataCache menggunakan salah satu metode berikut berdasarkan versi Helm:

    Helm 3.7.0 atau lebih baru

    1. Jika versi Helm adalah 3.7.x, aktifkan fitur eksperimental.

      Jika versi Helm adalah 3.8.0 atau lebih baru, lewati langkah ini.

      export HELM_EXPERIMENTAL_OCI=1
    2. Konfigurasikan variabel lingkungan.

      Catatan

      Atur parameter REPO ke oci://eci-release-registry.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator. Anda tidak perlu mengubah ID wilayah.

      export REPO="oci://eci-release-registry.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator"
      export AK='<ID AccessKey>'
      export SK='<Rahasia AccessKey>'
      export REGION='<ID Wilayah>'
    3. Terapkan CRD DataCache.

      helm install datacache-operator $REPO --set accessKey=$AK --set secretKey=$SK --set regionId=$REGION

    Versi Helm lebih lama dari 3.7.0

    1. Instal Plugin Container Registry.

      helm plugin install https://github.com/AliyunContainerService/helm-acr

      Jika Anda dapat mengakses GitHub, jalankan perintah di atas untuk menginstal Plugin Container Registry. Jika kondisi jaringan tidak stabil, gunakan perintah berikut untuk menginstal Plugin Container Registry.

      git clone https://github.com/AliyunContainerService/helm-acr.git
      sed -i 's/github.com/helm-acr-releases.oss-cn-hangzhou.aliyuncs.com/g' helm-acr/scripts/install_plugin.sh
      helm plugin install helm-acr
    2. Tambahkan repositori Helm ke klien Helm lokal.

      helm repo add datacache acr://eci-release-chart.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator
      helm repo update
    3. Konfigurasikan variabel lingkungan.

      export REPO="datacache/datacache-operator"
      export AK='<ID AccessKey>'
      export SK='<Rahasia AccessKey>'
      export REGION='<ID Wilayah>'
    4. Terapkan CRD DataCache.

      helm install datacache-operator $REPO --set accessKey=$AK --set secretKey=$SK --set regionId=$REGION

Terapkan CRD DataCache menggunakan file YAML

  1. Sambungkan ke kluster Kubernetes.

  2. Siapkan file konfigurasi YAML bernama aliyun-datacache-controller.yaml untuk CRD DataCache.

    Template berikut menyediakan isi dari file konfigurasi YAML. Masukkan nilai sebenarnya untuk ID AccessKey (baris 13), Rahasia AccessKey (baris 14), dan ID wilayah (baris 211) dalam template.

    Buka

    apiVersion: v1 
    kind: Namespace 
    metadata: 
      name: datacache-controller
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: accesskey.eci.aliyun.com
      namespace: datacache-controller
    type: Opaque
    stringData:
      accessKey: ***            # Masukkan ID AccessKey.
      secretKey: ***            # Masukkan Rahasia AccessKey.
    ---
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      name: datacaches.eci.aliyun.com
    spec:
      group: eci.aliyun.com
      scope: Cluster
      names:
        kind: DataCache
        plural: datacaches
        singular: datacache
        shortNames:
          - edc
        categories:
          - all
      versions:
        - name: v1alpha1
          served: true
          storage: true
          subresources:
            status: {}
          schema:
            openAPIV3Schema:
              type: object
              required:
                - spec
              properties:
                spec:
                  type: object
                  required:
                    - path
                    - dataSource
                  properties:
                    bucket:
                      type: string
                      default: default
                      description: nama bucket. Nama default adalah default. Bucket bernama eci-system disediakan untuk menyimpan cache umum Elastic Container Instance dan tidak dapat digunakan sebagai nilai.
                    path:
                      type: string
                      description: direktori bucket.
                    dataSource:
                      type: object
                      description: sumber data cache.
                      properties:
                        type:
                          type: string
                          description: properti sumber data cache. Nilai valid: NAS, OSS, URL, dan SNAPSHOT.
                        options:
                          type: object
                          description: opsi untuk jenis sumber data cache tertentu. Untuk informasi lebih lanjut, lihat dokumentasi DataCache.
                          x-kubernetes-preserve-unknown-fields: true
                    size:
                      type: integer
                      default: 20
                      description: ukuran cache data. Anda harus merencanakan ukuran. Nilai default: 20 GiB, yaitu ukuran minimum penyimpanan blok elastis (EBS).
                    retentionDays:
                      type: integer
                      description: periode retensi cache data. Secara default, cache data tidak pernah kedaluwarsa.
                    netConfig:
                      type: object
                      properties:
                        securityGroupId:
                          type: string
                          description: ID grup keamanan.
                        vSwitchId:
                          type: string
                          description: ID vSwitch.
                        eipInstanceId:
                          type: string
                          description: ID alamat IP elastis (EIP). Jika tidak ada entri NAT sumber yang dibuat untuk vSwitch, Anda dapat mengikat EIP untuk menarik data Internet.
                        eipCreateParam:
                          type: object
                          description: parameter yang digunakan untuk membuat EIP. Anda dapat menentukan EipInstanceId atau EipCreateParam.
                          properties:
                            bandwidth:
                              type: integer
                              description: bandwidth publik. Unit: MB. Nilai default: 5.
                            commonBandwidthPackage:
                              type: string
                              description: rencana bandwidth EIP.
                            internetChargeType:
                              type: string
                              description: metode penagihan EIP.
                            publicIpAddressPoolId:
                              type: string
                              description: kolam alamat IP.
                            ISP:
                              type: string
                              description: tipe jalur EIP.
                status:
                  type: object
                  properties:
                    status: 
                      type: string
                    progress:
                      type: string
                    snapshotId:
                      type: string
                    dataCacheId:
                      type: string
          additionalPrinterColumns:
            - name: Age
              type: date
              jsonPath: .metadata.creationTimestamp
            - name: dataCacheId
              type: string
              jsonPath: .status.dataCacheId
            - name: Status
              type: string
              jsonPath: .status.status
            - name: Progress
              type: string
              jsonPath: .status.progress
            - name: Bucket
              type: string
              jsonPath: .spec.bucket
            - name: Path
              type: string
              jsonPath: .spec.path
    --- 
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: aliyun-datacache-controller
      namespace: datacache-controller
    --- 
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: aliyun-datacache-controller
      namespace: datacache-controller
    rules:
      - apiGroups:
          - "eci.aliyun.com"
        resources:
          - datacaches
          - datacaches/status
        verbs:
          - "*"
      - apiGroups:
          - ""
        resources:
          - events
        verbs:
          - create
          - patch
          - update
      - apiGroups:
          - ""
        resources:
          - configmaps
        verbs:
          - get
    --- 
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: aliyun-datacache-controller
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: aliyun-datacache-controller
    subjects:
      - kind: ServiceAccount
        name: aliyun-datacache-controller
        namespace: datacache-controller
    --- 
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aliyun-datacache-controller
      namespace: datacache-controller
    spec:
      selector:
        matchLabels:
          app: aliyun-datacache-controller
      replicas: 1
      template:
        metadata:
          labels:
            app: aliyun-datacache-controller
        spec:
          serviceAccountName: aliyun-datacache-controller
          containers:
          - name: datacache-operator
            image: eci-release-registry.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator:latest
            resources:
              limits: 
                memory: "512Mi"
                cpu: "250m"
              requests:
                memory: "64Mi"
                cpu: "50m"
            env: 
            - name: REGION_ID
              value: *** # Tentukan ID wilayah sebenarnya.
            - name: ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: accesskey.eci.aliyun.com
                  key: accessKey
            - name: SECRET_KEY
              valueFrom: 
                secretKeyRef:
                  name: accesskey.eci.aliyun.com
                  key: secretKey
  3. Terapkan CRD DataCache.

    kubectl apply -f aliyun-datacache-controller.yaml