Lorsque vous créez des nœuds ou étendez un pool de nœuds, ACK exécute un processus d'initialisation standardisé qui installe et configure les logiciels requis en fonction des paramètres du pool de nœuds, puis intègre le nœud au cluster Kubernetes.
Périmètre d'application
Cette rubrique s'applique aux pools de nœuds ECS et EGS dans les clusters managés ACK et les clusters dédiés ACK exécutant la version 1.20 ou ultérieure du cluster.
Fonctionnement
L'initialisation se déroule en quatre phases séquentielles :
Création du nœud — ACK provisionne l'instance ECS ou EGS et le système d'exploitation effectue la configuration de base. Cloud-init exécute ensuite le script User Data, qui comprend trois parties : le script Pre-defined Custom Data, les scripts d'initialisation ACK et le script User Data.
Exécution des scripts de pré-personnalisation — Cloud-init exécute le script Pre-defined Custom Data pour installer les dépendances, configurer les agents de surveillance ou effectuer des vérifications de l'environnement.
Exécution des scripts d'initialisation ACK — ACK installe les composants Kubernetes, les pilotes matériels facultatifs et les packages de sécurité. Le nœud s'enregistre ensuite auprès du serveur API du cluster.
Exécution des scripts personnalisés — Cloud-init exécute le script User Data pour la configuration au niveau de l'application, parallèlement à la transition du nœud vers l'état
Ready.
Scripts d'initialisation ACK
Cette phase comprend sept sous-étapes et prend en charge des mécanismes d'ignorance pour les environnements hors ligne et les configurations spécialisées.
Préparation de l'environnement de base
Ce sous-étape configure l'environnement d'exécution dont Kubernetes a besoin pour démarrer sur le nœud :
Démarrage de chronyd — synchronise l'horloge du nœud avec le serveur NTP.
Définition de l'ID et du nom d'hôte du nœud — calcule et attribue un ID de nœud dans le cluster. Si le pool de nœuds est configuré avec un Custom Node Name, ce nom est également défini comme nom d'hôte.
Initialisation du disque de données — si le pool de nœuds comporte des disques de données, le système identifie le dernier disque par ordre lexicographique (en privilégiant NVMe), le formate et le monte en tant que répertoire d'exécution des conteneurs (par exemple,
/var/lib/containerd).
Mécanismes d'ignorance :
| Fichier à créer | Effet |
|---|---|
/var/.skip-auto-fdisk |
Ignore le formatage automatique des disques. Utilisez cette option lorsque vous gérez les partitions manuellement ou lorsque le disque contient déjà des données. |
/var/.keep-container-data |
Ignore le formatage, mais copie les données d'exécution existantes (telles qu'un cache d'images) vers le nouveau chemin de montage après le montage. Utilisez cette option pour éviter les extractions d'images répétées lors de la migration d'un disque de données. |
Installation des composants Kubernetes
Installe et configure les composants principaux requis pour l'exécution de Kubernetes :
kubelet — voir Configuration Kubelet du pool de nœuds personnalisé.
Environnement d'exécution des conteneurs (tel que containerd) — voir Configuration Containerd du pool de nœuds personnalisé.
Installation des composants facultatifs
ACK installe des composants supplémentaires en fonction de la configuration du pool de nœuds :
Pilotes matériels hétérogènes et plug-in de périphérique — pour les instances GPU ou NPU, le système installe les pilotes matériels correspondants et un plug-in de périphérique Kubernetes (par exemple, le plug-in NVIDIA Device), permettant à l'ordonnanceur de reconnaître et d'allouer ces ressources.
Logiciel d'accélération d'image — si le chargement d'images de conteneur à la demande est activé, le système installe le logiciel d'accélération et met à jour la configuration de l'environnement d'exécution des conteneurs.
Pilotes et dépendances SGX — si le calcul confidentiel ACK-TEE est activé, le système installe les pilotes SGX et les packages associés pour fournir un environnement d'exécution approuvé (TEE) aux conteneurs confidentiels.
Intégration au cluster
kubelet démarre, s'enregistre auprès du serveur API du cluster et le nœud rejoint le cluster avec un statut initial de NotReady.
Installation de logiciels supplémentaires
Pour garantir la stabilité et la sécurité, ACK installe les packages d'outils de base et applique les mises à jour de sécurité.
Packages installés : pigz, container-selinux, zlib
Mises à jour de sécurité (Alibaba Cloud Linux uniquement) :
Met à niveau
systemdselon les besoins pour la stabilité.Applique les correctifs CVE minimaux en exécutant :
yum update-minimal --exclude kernel* --security -y
Mécanismes d'ignorance :
| Fichier à créer | Effet |
|---|---|
/var/.skip-yum |
Ignore l'intégralité de ce sous-étape, y compris les correctifs CVE. Utilisez cette option pour les environnements hors ligne ou lorsqu'un contrôle strict des versions de package est requis. |
/var/.skip-security-fix |
Ignore uniquement les correctifs CVE. Les packages d'outils de base sont toujours installés. |
Application de la configuration du système d'exploitation
Une fois tous les logiciels installés, le système réapplique la configuration du système d'exploitation du pool de nœuds pour confirmer que tous les paramètres sont effectifs. Voir Gérer les paramètres du système d'exploitation du pool de nœuds.
Application du durcissement de sécurité
Sur la base des capacités de Security Hardening configurées dans le pool de nœuds (telles que le durcissement du système d'exploitation Alibaba Cloud), le système exécute les scripts de durcissement correspondants. Ces scripts renforcent les paramètres du noyau et ajustent les autorisations du système pour répondre aux exigences de sécurité des entreprises.
Exécution parallèle : scripts personnalisés et état Ready du nœud
Une fois qu'un nœud a rejoint le cluster avec le statut NotReady, deux tâches s'exécutent en parallèle :
Transition du statut du nœud — kubelet communique en continu avec le plan de contrôle. Lorsque les composants critiques sont opérationnels et que toutes les vérifications d'état réussissent, le nœud passe à l'état
Readyet l'ordonnanceur Kubernetes le rend disponible pour les pods.Exécution du script User Data — Cloud-init exécute le script User Data pour l'initialisation au niveau de l'application, telle que le remplissage des répertoires de données ou le démarrage de services d'aide non conteneurisés.
Ces deux tâches sont indépendantes. Le résultat du script User Data — succès, échec ou durée — ne bloque pas la transition du nœud vers l'état Ready. Ne supposez pas que le nœud est Ready lorsque le script User Data se termine, ni que le script User Data est terminé lorsque le nœud devient Ready.
Suivi de l'exécution des scripts personnalisés
Pour vérifier si le script User Data s'est exécuté correctement, connectez-vous au nœud et exécutez :
cat /var/log/cloud-init-output.log