Exécution d'applications sur des noeuds reposant sur Arm
Découvrez comment exécuter des applications sur des noeuds de processus actif basés sur Arm dans des clusters créés à l'aide de Kubernetes Engine (OKE).
Pour exécuter des applications sur des noeuds de processus actif Arm, vous sélectionnez un pool de noeuds gérés et une forme Arm. La forme détermine le nombre d'UC et la quantité de mémoire alloués à chaque noeud du pool de noeuds. Vous pouvez sélectionner des formes Bare Metal basées sur Arm et des formes de machine virtuelle flexibles. Ces instances Ampere A1 Compute sont basées sur le processeur Ampere Altra (reportez-vous à Calcul reposant sur Arm). Pour plus d'informations sur le nombre d'OCPU, la mémoire, le stockage et les détails de fonctions de réseau de ces formes, reportez-vous à Formes de calcul.
Lorsque vous créez un cluster, vous pouvez indiquer une forme Arm pour un pool de noeuds à l'aide de la console, de l'API et de l'interface de ligne de commande. Vous pouvez également spécifier une forme reposant sur Arm lorsque vous créez un pool de noeuds. Reportez-vous aux étapes de configuration de pool de noeuds dans Création de clusters Kubernetes à l'aide de workflows de console et Création de noeuds de processus actif avec des propriétés mises à jour, respectivement.
Pour afficher le nombre de coeurs Arm réservables disponibles, utilisez la console. Ouvrez le menu de navigation et sélectionnez Gouvernance et administration. Sous Gestion des locations, sélectionnez Limites, quotas et utilisation.
Par rapport aux autres formes, les formes reposant sur Arm offrent un meilleur rapport prix/performances, une meilleure isolation de sécurité (car chaque coeur est monothread) et des performances plus cohérentes. En règle générale, les développeurs utilisent des noeuds de processus actif basés sur Arm dans des clusters Kubernetes pour développer et tester des applications.
Lorsque vous déployez une application sur un cluster que vous avez créé avec Kubernetes Engine, vous devez indiquer dans la spécification de pod les ressources de calcul requises. Pour déployer l'application, le planificateur de kube détermine quel noeud dispose des ressources nécessaires. Si un cluster dispose de pools de noeuds avec des formes reposant sur Arm et de pools de noeuds avec d'autres formes (par exemple, des formes AMD64), vous pouvez utiliser un élément nodeSelector dans la spécification de pod pour indiquer qu'une application doit être exécutée sur des noeuds de processus actif reposant sur Arm. Reportez-vous à Définition d'un pod à exécuter uniquement sur les noeuds Arm.
Si vous voulez déployer une application sur des noeuds de processus actif Arm et non Arm dans le même cluster, utilisez des images multi-architectures (parfois appelées listes de manifestes) stockées dans un registre compatible avec Open Container Initiative, comme Oracle Cloud Infrastructure Registry (reportez-vous à Présentation de Container Registry). Vous créez des images multi-architectures à partir d'une arborescence source unique, avec une balise d'image qui inclut des images pour les architectures x86 et Arm. Vous pouvez créer des images multi-architecture à l'aide de Docker Buildx, de Podman et de Buildah.
Tenez compte des éléments suivants :
- Vous pouvez indiquer des formes reposant sur Arm pour les pools de noeuds dans les clusters exécutant Kubernetes version 1.19.7 ou ultérieure. N'indiquez pas de forme reposant sur Arm pour les pools de noeuds exécutant des versions antérieures de Kubernetes.
- Après avoir créé un pool de noeuds avec une forme basée sur Arm, vous ne pouvez pas modifier le pool de noeuds pour qu'il ait une forme non basée sur Arm. De même, vous ne pouvez pas modifier un pool de noeuds avec une forme non Arm pour avoir une forme Arm.
- Lorsque vous indiquez une forme reposant sur Arm pour un pool de noeuds, vous indiquez également une image compatible avec la forme. Reportez-vous à Formes de calcul.
Définition d'un pod à exécuter uniquement sur les noeuds Arm
Si un cluster comporte des pools de noeuds avec des formes reposant sur Arm et des pools de noeuds avec d'autres formes (par exemple, des formes AMD64), vous pouvez utiliser nodeSelector dans la spécification de pod pour indiquer qu'une application doit être exécutée uniquement sur des noeuds de processus actif reposant sur Arm. Par exemple, le fichier de configuration suivant définit un pod à exécuter sur n'importe quel noeud Arm du cluster :
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
kubernetes.io/arch: arm64