Le chargement de jeux de données volumineux dans des conteneurs ECI ralentit souvent le démarrage des pods. La CRD DataCache permet aux utilisateurs Kubernetes de précharger les données dans un cache, afin que les conteneurs démarrent avec les données déjà disponibles. Cette rubrique explique comment déployer le contrôleur de la CRD DataCache dans un cluster Kubernetes à l'aide de Helm (recommandé) ou d'un fichier YAML.
Facturation
| Type de cluster | Facturation |
|---|---|
| Cluster Container Service for Kubernetes (ACK) | La CRD DataCache se déploie sur un nœud Elastic Compute Service (ECS) existant. Aucun frais supplémentaire n'est appliqué. |
| Cluster ACK Serverless | Le déploiement de la CRD DataCache crée un pod doté de 0,25 vCPU et de 0,5 GiB de mémoire. Ce pod est facturé selon la formule suivante : Prix = (0,25 × prix unitaire des vCPU + 0,5 × prix unitaire de la mémoire) × durée d'exécution. Pour plus d'informations sur les tarifs, consultez la section Facturation des instances de conteneur élastiques. |
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
-
Un ID AccessKey et un secret AccessKey disposant des autorisations nécessaires pour appeler les API DataCache. Pour plus d'informations, consultez la section Créer une paire de clés AccessKey
ImportantLe compte Alibaba Cloud ou l'utilisateur RAM associé à la paire de clés AccessKey doit disposer des autorisations permettant d'appeler les API liées à DataCache.
L'ID de région du cluster
Déploiement avec Helm (recommandé)
Helm constitue la méthode de déploiement recommandée. Elle gère les dépendances et simplifie les mises à jour.
Helm 3.7.0 ou version ultérieure
Connectez-vous au cluster Kubernetes.
-
Vérifiez la version de Helm.
helm version -
Si vous utilisez Helm 3.7.x, activez la prise en charge du registre OCI.
export HELM_EXPERIMENTAL_OCI=1ImportantHelm 3.7.x requiert cet indicateur pour extraire les charts depuis des registres compatibles OCI. Helm 3.8.0 et les versions ultérieures activent la prise en charge OCI par défaut ; ignorez cette étape si vous utilisez la version 3.8.0 ou supérieure.
-
Définissez les variables d'environnement.
export REPO="oci://eci-release-registry.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator" export AK='<AccessKey ID>' export SK='<AccessKey secret>' export REGION='<Region ID>'ImportantLa valeur
REPOpointe vers le Container Registry Alibaba Cloud qui héberge le chart de l'opérateur DataCache. Ne modifiez pas l'ID de région intégré dans l'URL. -
Déployez la CRD DataCache.
helm install datacache-operator $REPO --set accessKey=$AK --set secretKey=$SK --set regionId=$REGION -
Vérifiez le déploiement.
kubectl get pods -n datacache-controllerLe pod du contrôleur doit être à l'état
Running:NAME READY STATUS RESTARTS AGE aliyun-datacache-controller-xxxxxxxxx-xxxxx 1/1 Running 0 30s
Helm antérieur à 3.7.0
Connectez-vous au cluster Kubernetes.
-
Vérifiez la version de Helm.
helm version -
Installez le plug-in Container Registry pour Helm. Si vous avez accès à GitHub, exécutez la commande suivante :
helm plugin install https://github.com/AliyunContainerService/helm-acrSi votre connexion réseau à GitHub est instable, utilisez plutôt le miroir Alibaba Cloud :
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-acrImportantLa commande
sedremplace l'URL de téléchargement GitHub dans le script d'installation par une URL de miroir Alibaba Cloud (helm-acr-releases.oss-cn-hangzhou.aliyuncs.com), plus fiable sur les réseaux dont l'accès à GitHub est restreint. -
Ajoutez le dépôt Helm DataCache.
helm repo add datacache acr://eci-release-chart.cn-hangzhou.cr.aliyuncs.com/datacache/datacache-operator helm repo update -
Définissez les variables d'environnement.
export REPO="datacache/datacache-operator" export AK='<AccessKey ID>' export SK='<AccessKey secret>' export REGION='<Region ID>' -
Déployez la CRD DataCache.
helm install datacache-operator $REPO --set accessKey=$AK --set secretKey=$SK --set regionId=$REGION -
Vérifiez le déploiement.
kubectl get pods -n datacache-controllerLe pod du contrôleur doit être à l'état
Running:NAME READY STATUS RESTARTS AGE aliyun-datacache-controller-xxxxxxxxx-xxxxx 1/1 Running 0 30s
Déploiement à l'aide d'un fichier YAML
Connectez-vous au cluster Kubernetes.
-
Créez un fichier nommé
aliyun-datacache-controller.yamlcontenant le code ci-dessous. Remplacez les trois valeurs fictives indiquées par***dans le modèle : l'ID AccessKey (ligne 13), le secret AccessKey (ligne 14) et l'ID de région (ligne 211).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: *** # Enter the AccessKey ID. secretKey: *** # Enter the AccessKey secret. --- 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: the name of a bucket. The default name is default. The bucket named eci-system is reserved to store common caches of Elastic Container Instance and cannot be used as a value. path: type: string description: the directory of the bucket. dataSource: type: object description: the cache data source. properties: type: type: string description: the property of the cache data source. Valid values: NAS, OSS, URL, and SNAPSHOT. options: type: object description: the options for a specific type of cache data source. For more information, see the DataCache documentation. x-kubernetes-preserve-unknown-fields: true size: type: integer default: 20 description: the size of the data cache. You must plan the size. Default value: 20 GiB, which is the minimum size of an elastic block storage (EBS). retentionDays: type: integer description: the retention period of the data cache. By default, data caches never expire. netConfig: type: object properties: securityGroupId: type: string description: the ID of the security group. vSwitchId: type: string description: the ID of the vSwitch. eipInstanceId: type: string description: the ID of the elastic IP address (EIP). If no source network address translation (SNAT) entry is created for the vSwitch, you can bind an EIP to pull Internet data. eipCreateParam: type: object description: the parameter that is used to create an EIP. You can specify EipInstanceId or EipCreateParam. properties: bandwidth: type: integer description: the public bandwidth. Unit: MB. Default value: 5. commonBandwidthPackage: type: string description: the EIP bandwidth plan. internetChargeType: type: string description: the billing method of the EIP. publicIpAddressPoolId: type: string description: the IP address pool. ISP: type: string description: the EIP line type. 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: *** # Specify the actual region ID. - name: ACCESS_KEY valueFrom: secretKeyRef: name: accesskey.eci.aliyun.com key: accessKey - name: SECRET_KEY valueFrom: secretKeyRef: name: accesskey.eci.aliyun.com key: secretKey -
Déployez la CRD DataCache.
kubectl apply -f aliyun-datacache-controller.yaml -
Vérifiez le déploiement.
kubectl get pods -n datacache-controllerLe pod du contrôleur doit être à l'état
Running:NAME READY STATUS RESTARTS AGE aliyun-datacache-controller-xxxxxxxxx-xxxxx 1/1 Running 0 30s