Le composant ack-kubernetes-elastic-workload surveille une charge de travail Kubernetes et distribue les réplicas entre la charge de travail source et les unités élastiques selon les politiques de planification. Lorsque le nombre de réplicas dépasse un seuil configuré, les réplicas supplémentaires sont planifiés sur des nœuds virtuels adossés à Elastic Container Instance (ECI).
Vous pouvez toujours utiliser Elastic Workload. Toutefois, son développement est interrompu depuis juin 2024. Nous vous recommandons d'utiliser plutôt UnitedDeployment. Pour comparer les solutions de planification sur nœuds virtuels, consultez la rubrique Planifier un pod sur un nœud virtuel.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster ACK managé ou dédié
Le composant ack-virtual-node (version v2.0.0.102-045a06eb4-aliyun ou ultérieure) déployé dans le cluster. Pour plus d'informations, consultez la rubrique Planifier des pods sur des instances de conteneur élastiques via des nœuds virtuels.
Limitations
ack-kubernetes-elastic-workload ne prend pas en charge les charges de travail OpenKruise. Utilisez plutôt le contrôleur UnitedDeployment.
Installer ack-kubernetes-elastic-workload
Connectez-vous à la console Container Service.
Dans le volet de navigation de gauche, choisissez .
Sur la page Marketplace, cliquez sur l'onglet App Catalog. Recherchez puis cliquez sur ack-kubernetes-elastic-workload.
Cliquez sur Deploy.
Dans le panneau Deploy, sélectionnez un cluster et un namespace, puis cliquez sur Next.
À l'étape Parameters, configurez les paramètres et cliquez sur OK.
Vérifiez l'installation : accédez à la page des détails du cluster. Dans le volet de navigation de gauche, choisissez Applications > Helm. Confirmez que ack-kubernetes-elastic-workload apparaît dans la liste.
Planifier des réplicas élastiques sur des nœuds virtuels
Cet exemple illustre la planification de la capacité pour une application répondant aux exigences suivantes :
Jusqu'à 4 réplicas s'exécutent sur des instances Elastic Compute Service (ECS)
2 réplicas sont conservés pendant les heures creuses
Les réplicas au-delà de 4 sont planifiés sur des nœuds virtuels (ECI)
Étape 1 : Créer un Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-basic
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
limits:
cpu: "500m"
Étape 2 : Définir un ElasticWorkload
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: ElasticWorkload
metadata:
name: elasticworkload-sample
spec:
sourceTarget:
name: nginx-deployment-basic
kind: Deployment
apiVersion: apps/v1
min: 2 # The minimum number of replicas.
max: 4 # The maximum number of replicas.
replicas: 6
elasticUnit:
- name: virtual-kubelet
labels:
alibabacloud.com/eci: "true"
ack-kubernetes-elastic-workload est déployé en tant que module complémentaire externe et n'affecte pas vos activités existantes.
La définition de ressource personnalisée (CRD) ElasticWorkload comprend deux sections clés :
| Champ | Description |
|---|---|
sourceTarget |
Définit le type de charge de travail source et la plage de réplicas. Les réplicas compris dans la plage min-max sont planifiés sur la charge de travail source. |
elasticUnit |
Tableau de politiques de planification pour les unités élastiques. Pour définir des politiques de planification pour plusieurs unités élastiques, spécifiez les paramètres associés dans l'ordre défini. Lorsque le nombre de réplicas dépasse max, les réplicas supplémentaires sont planifiés sur les unités élastiques selon l'ordre défini. |
Dans cet exemple :
sourceTargetlimite la charge de travail source (nginx-deployment-basic) à 2-4 réplicas sur des instances ECS.Le nombre total de réplicas (6) dépasse la valeur
max(4). Les 2 réplicas restants sont planifiés sur l'unité élastique virtual-kubelet avec le libelléalibabacloud.com/eci=true.
Étape 3 : Vérifier le déploiement
Vérifiez l'état de la charge de travail élastique :
kubectl describe ew elasticworkload-sample
La sortie affiche les Desired Replicas pour la charge de travail source et l'unité élastique :
Status:
Elastic Units Status:
Desired Replicas: 2
Name: nginx-deployment-basic-unit-virtual-kubelet
Replicas: 6
Source Target:
Desired Replicas: 4
Kind: Deployment
Name: nginx-deployment-basic
Vérifiez la distribution des pods sur les nœuds :
kubectl get pod -o wide
Sortie attendue :
NAME READY STATUS RESTARTS AGE IP NODE
nginx-deployment-basic-5bf87f5f59-22jnw 1/1 Running 0 16m 10.34.0.131 cn-beijing.172.16.0.1
nginx-deployment-basic-5bf87f5f59-gfp24 1/1 Running 0 13m 10.34.0.133 cn-beijing.172.16.0.1
nginx-deployment-basic-5bf87f5f59-pw2zx 1/1 Running 0 13m 10.34.0.134 cn-beijing.172.16.0.1
nginx-deployment-basic-5bf87f5f59-qvh7m 1/1 Running 0 16m 10.34.0.132 cn-beijing.172.16.0.1
nginx-deployment-basic-unit-virtual-kubelet-65fb6f4cd7-48ssb 1/1 Running 0 13m 172.16.22.157 virtual-kubelet-cn-beijing-e
nginx-deployment-basic-unit-virtual-kubelet-65fb6f4cd7-gjqhm 1/1 Running 0 13m 172.16.22.158 virtual-kubelet-cn-beijing-e
Les 4 premiers pods s'exécutent sur des nœuds ECS. Les 2 pods restants s'exécutent sur des nœuds virtuels (ECI).
Utiliser HPA avec des charges de travail élastiques
Horizontal Pod Autoscaler (HPA) peut cibler directement les ressources ElasticWorkload. Lors de la réduction de l'échelle, les réplicas des unités élastiques sont réduits en premier.
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: elastic-workload-demo
namespace: default
spec:
scaleTargetRef:
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: ElasticWorkload
name: elasticworkload-sample
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
Lorsque HPA réduit le nombre de réplicas (par exemple, de 6 à 4), la charge de travail élastique supprime d'abord les réplicas des unités élastiques, tout en maintenant stables les réplicas de la charge de travail source.