Ce document explique comment mettre à niveau la version Kubernetes d'un cluster Kubernetes Google Distributed Cloud (GDC) sous air gap. Vous devez planifier des mises à niveau régulières pour vos clusters afin de vous assurer qu'ils intègrent les dernières fonctionnalités et corrections de Kubernetes.
Ce document est destiné à des audiences telles que les administrateurs informatiques, les ingénieurs en sécurité et les administrateurs réseau du groupe d'administrateurs de plate-forme, qui sont chargés de gérer les ressources Kubernetes au sein de leur organisation. Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.
Avant de commencer
Pour effectuer les tâches décrites dans ce document, vous devez demander les autorisations nécessaires et préparer votre environnement.
Demander des rôles IAM
Vous devez disposer de rôles spécifiques pour obtenir les autorisations nécessaires à la mise à niveau de votre cluster Kubernetes. Vous devez demander des rôles limités à votre projet et à votre organisation.
Rôles au sein de l'organisation
Pour afficher la liste des versions de mise à niveau disponibles pour un cluster Kubernetes, demandez à votre administrateur IAM de l'organisation de vous attribuer le rôle Administrateur de cluster d'utilisateur (user-cluster-admin). Ce rôle n'est pas lié à un espace de noms.
Si vous gérez un cluster standard et que vous ne parvenez pas à obtenir le rôle d'administrateur de cluster d'utilisateur auprès de votre groupe d'administrateurs de plate-forme, vous devez lui demander de vous fournir la liste des versions de mise à niveau Kubernetes disponibles.
Rôles au niveau du projet
Pour créer, supprimer, modifier ou afficher les mises à niveau de cluster, demandez à votre administrateur IAM de projet de vous attribuer le rôle Administrateur de cluster standard (standard-cluster-admin). Ce rôle est lié à l'espace de noms de votre projet.
Préparer votre environnement
Pour exécuter des commandes sur un cluster Kubernetes à l'aide de l'API, assurez-vous de disposer des ressources suivantes :
Téléchargez et installez la gcloud CLI.
Recherchez le nom du cluster Kubernetes ou demandez-le à un membre du groupe d'administrateurs de plate-forme.
Utilisez le nom du cluster Kubernetes pour remplacer
CLUSTER_NAMEdans ces instructions.Connectez-vous et générez le fichier kubeconfig pour le serveur d'API de gestion.
Utilisez le chemin d'accès kubeconfig du serveur d'API de gestion pour remplacer
MANAGEMENT_API_SERVERdans ces instructions.
Mettre à niveau un cluster Kubernetes
Utilisez l'
UserClusterUpgradeRequest
API pour mettre à niveau un cluster Kubernetes existant.
Pour mettre à niveau un cluster Kubernetes à l'aide de l'API, procédez comme suit :
Affichez la liste des versions de mise à niveau Kubernetes disponibles en imprimant la valeur
kubernetesVersiondes objetsUserClusterMetadata:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'Remplacez
MANAGEMENT_API_SERVERpar le chemin d'accès au fichier kubeconfig du serveur d'API de gestion.La commande renvoie une liste des versions Kubernetes disponibles :
TARGET_VERSION 1.30.1000-gke.85Notez la version Kubernetes de la sortie précédente vers laquelle vous souhaitez mettre à niveau votre cluster. La
targetVersionque vous spécifiez dans la requête de mise à niveau à l'étape suivante doit être l'une de ces versions disponibles.Demandez la mise à niveau du cluster en créant une ressource
UserClusterUpgradeRequest:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: cluster.gdc.goog/v1 kind: UserClusterUpgradeRequest metadata: name: CLUSTER_NAME namespace: CLUSTER_NAMESPACE spec: clusterRef: name: CLUSTER_NAME targetVersion: TARGET_VERSION EOFRemplacez les éléments suivants :
MANAGEMENT_API_SERVER: chemin d'accès au fichier kubeconfig du serveur d'API de gestion.CLUSTER_NAME: nom du cluster Kubernetes à mettre à niveau, tel queuser-vm-2.CLUSTER_NAMESPACE: espace de noms du cluster Kubernetes. Pour les clusters partagés, utilisez l'espace de nomsplatform. Pour les clusters standards, utilisez l'espace de noms du projet du cluster.TARGET_VERSION: version cible de la mise à niveau identifiée à l'étape précédente, telle que1.30.1000-gke.85.
La durée moyenne de mise à niveau d'un cluster Kubernetes est d'environ 20 minutes.
Vérifiez la mise à niveau du cluster en surveillant la ressource
UserClusterUpgradeRequest:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe userclusterupgraderequest CLUSTER_NAME \ -n CLUSTER_NAMESPACERemplacez les éléments suivants :
MANAGEMENT_API_SERVER: chemin d'accès au fichier kubeconfig du serveur d'API de gestion.CLUSTER_NAME: nom du cluster Kubernetes à mettre à niveau, tel queuser-vm-2.CLUSTER_NAMESPACE: espace de noms du cluster Kubernetes. Pour les clusters partagés, utilisez l'espace de nomsplatform. Pour les clusters standards, utilisez l'espace de noms du projet du cluster.
Inspectez la section
Specdu résultat. Elle contientCurrent VersionetTarget Version. La mise à niveau est toujours en cours siCurrent VersionetTarget Versionsont différentes.Spec: ... Current Version: 1.29.500-gke.60 Target Version: 1.30.1000-gke.85 Status: Conditions: - Message: Upgrade is in progress Reason: UpgradeInProgress Status: "False" Type: SucceededLa mise à niveau est terminée et réussie lorsque la condition
Succeededa l'étatTrueet queCurrent Versioncorrespond àTarget Version.Si la condition
Succeededa l'étatFalse, la mise à niveau a échoué. Si vous rencontrez des erreurs liées à la mise à niveau de votre cluster Kubernetes, contactez le groupe d'opérateurs d'infrastructure pour obtenir de l'aide.
Vérifier les sous-composants du cluster après la mise à niveau
Une fois votre cluster Kubernetes mis à niveau, nous vous recommandons de vérifier que tous les sous-composants du cluster sont opérationnels.
Recherchez les échecs de sous-composants dans votre cluster :
Vérifiez qu'aucun sous-composant n'affiche le message
ReconciliationError:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "ReconciliationError") | select(.status.featureDisabled != true) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'Si le résultat renvoie des sous-composants, contactez votre groupe d'opérateurs d'infrastructure pour obtenir de l'aide.
Vérifiez qu'aucun sous-composant n'affiche le message
Reconciling:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "Reconciling") | select(.status.featureDisabled != true) | select( "\(.status)" | contains("PreinstallPending") | not) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'Pour les clusters Kubernetes avec trois nœuds de plan de contrôle et trois nœuds de calcul, la durée de mise à niveau est d'environ 20 minutes. Si vous voyez toujours des sous-composants à l'état
Reconcilingaprès 20 minutes, contactez votre groupe d'opérateurs d'infrastructure pour obtenir de l'aide.
Étape suivante
- Concevoir la séparation des charges de travail
- Gérer les clusters Kubernetes
- Gérer des pools de nœuds