Résolvez les échecs des vérifications préalables qui bloquent les mises à niveau des clusters ACK, les migrations ou les mises à niveau des composants.
Types de vérification
ACK effectue trois types de vérifications préalables :
| Type de vérification | Moment d'exécution | S'applique à |
|---|---|---|
| Vérification de mise à niveau du cluster | Avant une mise à niveau du cluster | Tous les types de cluster |
| Vérification de migration du cluster | Avant une migration de cluster | ACK Serverless Basic Edition vers ACK Serverless Pro |
| Vérification des composants | Avant une mise à niveau d'un composant | Composants individuels |
Vérification de mise à niveau du cluster
Avant une mise à niveau du cluster, ACK recherche les API obsolètes, les contraintes de version des composants et les modifications du runtime. La mise à niveau ne se poursuit que si toutes les vérifications réussissent.
La vérification couvre deux catégories :
Ressources du cluster : ressources cloud telles que les instances Server Load Balancer (SLB) et les réseaux Virtual Private Cloud (VPC).
Composants du cluster : configurations des composants, paramètres des applications et utilisation d'API obsolètes.
Les éléments de vérification varient selon le type de cluster, la version et le runtime. La page de vérification de la console ACK fait autorité.
Ressources du cluster
| Élément de vérification | Ce qu'il valide |
|---|---|
| APIServer SLB | L'instance SLB existe |
| Le statut de l'instance SLB est Normal | |
| La configuration de l'écouteur SLB (port et protocole) est valide | |
| La configuration du groupe de serveurs backend SLB est valide | |
| La configuration du contrôle d'accès SLB est correcte (la vérification réussit si elle n'est pas configurée) | |
| VPC | L'instance VPC existe |
| Le statut de l'instance VPC est Normal | |
| vSwitch | Le vSwitch existe |
| Le statut du vSwitch est Normal | |
| Le vSwitch dispose d'au moins deux adresses IP disponibles |
Composants du cluster
| Élément de vérification | Ce qu'il valide |
|---|---|
| Kube Proxy Master | Le composant existe |
| Kube Proxy Worker | Le composant existe |
| APIService | Aucun APIService indisponible n'existe |
| Component versions | Les versions de Terway, CoreDNS, cloud-controller-manager (CCM), Nginx Ingress Controller et Metric Server répondent aux exigences de mise à niveau |
| Deprecated APIs | Le cluster n'utilise pas d'API obsolètes |
Configuration du cluster
| Élément de vérification | Ce qu'il valide |
|---|---|
| iptables | La configuration iptables est valide |
| Operating system | Le système d'exploitation prend en charge la mise à niveau |
| yum | Le gestionnaire de paquets yum fonctionne correctement |
| kubelet | La configuration kubelet répond aux attentes |
| Container runtime | Le statut du runtime Docker ou containerd est Normal |
| Manifest | Le fichier manifeste répond aux attentes |
Vérification de migration du cluster
ACK vérifie le cluster avant la migration de Serverless Basic Edition vers Serverless Pro. La migration ne se poursuit que si toutes les vérifications réussissent.
La vérification couvre deux catégories :
Ressources du cluster : instances SLB et réseaux VPC utilisés par le cluster.
Composants du cluster : configurations des composants, y compris la présence éventuelle d'APIServices indisponibles.
Les éléments de vérification varient selon le type de cluster, la version et le runtime. La page de vérification de la console ACK fait autorité.
Ressources du cluster
| Élément de vérification | Ce qu'il valide |
|---|---|
| APIServer SLB | L'instance SLB existe |
| Le statut de l'instance SLB est Normal | |
| La configuration de l'écouteur SLB (port et protocole) est valide | |
| La configuration du groupe de serveurs backend SLB est valide | |
| La configuration du contrôle d'accès SLB est correcte (la vérification réussit si elle n'est pas configurée) | |
| VPC | L'instance connectée au VPC existe |
| Le statut de l'instance connectée au VPC est Normal | |
| vSwitch | Le vSwitch existe |
| Le statut du vSwitch est Normal | |
| Le vSwitch dispose d'au moins deux adresses IP disponibles |
Composants du cluster
| Élément de vérification | Ce qu'il valide |
|---|---|
| Kube Proxy Master | Le composant existe |
| Kube Proxy Worker | Le composant existe |
| APIService | Aucun APIService indisponible n'existe |
Vérification des composants
ACK vérifie chaque composant avant sa mise à niveau. La mise à niveau ne se poursuit que si toutes les vérifications réussissent.
Les éléments de vérification varient selon le type de composant, la version et le runtime. La page de vérification de la console ACK fait autorité.
| Composant | Élément de vérification | Ce qu'il valide |
|---|---|---|
| cloud-controller-manager | Addon_CCM | La mise à niveau du composant ne provoque pas de modifications SLB |
| Component_Block_Version | La version CCM peut être mise à niveau | |
| csi-plugin | DaemonSet_Annotation | Les annotations DaemonSet répondent aux attentes |
| Csi_Driver_Attributes | Les propriétés du pilote Container Storage Interface (CSI) répondent aux exigences | |
| csi-provisioner | Stateful_Set_Exist | La ressource est un StatefulSet |
| Deployment_Annotation | Les annotations Deployment répondent aux attentes | |
| Storage_Class_Attributes | Les propriétés StorageClass répondent aux exigences | |
| nginx-ingress-controller | Deployment_Healthy | Le déploiement Nginx Ingress est sain |
| Deployment_Not_Under_HPA | Aucun Horizontal Pod Autoscaler (HPA) n'est configuré pour le déploiement | |
| Deployment_Not_Modified | Le déploiement n'a pas été modifié | |
| Nginx_Ingress_Pod_Error_Log | Nginx ne contient aucun journal d'erreur | |
| LoadBalancer_Service_Healthy | Le service Nginx est sain | |
| Nginx_Ingress_Configuration | L'Ingress ne contient aucune configuration incompatible | |
| aliyun-acr-credential-helper | RamRole_Exist | Le composant bénéficie du rôle RAM AliyunCSManagedAcrRole |
| ack-cost-exporter | RamRole_Exist | Le composant bénéficie du rôle RAM AliyunCSManagedCostRole |
Résoudre les vérifications ayant échoué
Échecs courants des vérifications et résolutions :
| Vérification ayant échoué | Résolution |
|---|---|
| La version du composant est trop ancienne | Mettez à niveau le composant. Consultez Gérer les composants. |
| APIService est indisponible | Suivez les étapes ci-dessous. |
| Le cluster contient des API obsolètes | Consultez API obsolètes. |
Pour résoudre un problème d'APIService indisponible :
-
Identifiez l'APIService indisponible.
kubectl -n kube-system get apiservices | grep -i false -
Confirmez si l'APIService est toujours nécessaire.
ImportantLa suppression accidentelle d'un APIService peut provoquer des exceptions dans le cluster. Vérifiez son objectif avant de poursuivre.
-
Si l'APIService n'est plus nécessaire, supprimez-le.
kubectl -n kube-system delete apiservices ${your-abnormal-apiservice-name}
API obsolètes
Pour les clusters exécutant Kubernetes 1,20 ou une version ultérieure, la vérification préalable à la mise à niveau analyse les journaux d'audit de la veille afin de détecter l'utilisation d'API obsolètes.
Fonctionnement de la détection des API obsolètes
Lors d'une mise à niveau de Kubernetes 1,20 vers 1,22, le système analyse les journaux d'audit du cluster 1,20 à la recherche d'API obsolètes :
Si des API obsolètes sont détectées, le résultat est une simple notification ; cela ne bloque pas la mise à niveau.
Si vous continuez à utiliser des API obsolètes après la mise à niveau vers la version 1,22, des risques de sécurité peuvent apparaître.
Les notifications d'API obsolètes ne bloquent pas la mise à niveau. Après la mise à niveau, les ressources utilisant des API obsolètes sont remplacées par de nouvelles. Ne créez pas de ressources avec des API obsolètes par la suite.
Catégories d'API obsolètes
Les API obsolètes sont classées par source de requête (User Agent).
| Catégorie | Description | Exemples | Action requise |
|---|---|---|---|
| core | Composants principaux de Kubernetes. ACK les met automatiquement à niveau lors d'une mise à niveau du cluster. | apiserver, scheduler, kube-controller-manager | Aucune — non affiché sur la page de vérification |
| ack | Composants gérés par ACK. ACK les affiche et vous guide pour les mettre à niveau. | metrics-server, nginx-ingress-controller, coredns | Mettez à niveau via Operations > Add-ons dans la console ACK |
| opensource | Composants de la communauté open source. ACK affiche une liste partielle. Les composants non reconnus apparaissent sous unknown. | rancher, elasticsearch-operator | Mettez à niveau si nécessaire |
| unknown | Composants dont la source n'est pas reconnue. | kubectl, agent, Go-http-client, okhttp | Mettez à niveau si nécessaire |
Mettre à niveau les composants ACK pour effacer les avertissements liés aux API obsolètes
Accédez à Operations > Add-ons dans la console ACK pour mettre à niveau les composants. Les avertissements relatifs aux API obsolètes pour ces composants disparaissent le lendemain de la mise à niveau.Console ACK
Si les résultats de la vérification incluent coredns, il se peut que CoreDNS utilise des API obsolètes dans Kubernetes 1,24 ou une version ultérieure. Consultez Pourquoi CoreDNS utilise-t-il une API obsolète ?.