Questa pagina spiega come preparare i cluster per gli upgrade alla versione 1.25 di GKE. Puoi trovare i client API che effettuano chiamate alle API deprecate rimosse nella versione 1.25 e aggiornarli in modo che utilizzino le API GA. Per informazioni più dettagliate, consulta la guida alla migrazione delle API deprecate di Kubernetes.
API rimosse nella versione 1.25
La maggior parte delle API deprecate nella versione 1.25 di Kubernetes sono ex API beta che
sono passate dalla versione beta (ad esempio v1beta1) alla versione GA
(ad esempio v1). Le API GA forniscono
garanzie di compatibilità a lungo termine
e devono essere utilizzate al posto delle API beta deprecate.
È possibile interagire con tutti gli oggetti esistenti per le API passate alla versione GA utilizzando le API GA.
EndpointSlice
La versione API beta (discovery.k8s.io/v1beta1) di EndpointSlice non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21.
- Esegui la migrazione dei manifest e dei client API in modo che utilizzino la versione API
discovery.k8s.io/v1. Consulta la tabella seguente che descrive le modifiche importanti nella versione API GA:
Campo Cambia endpoints[*].topology["kubernetes.io/hostname"]Utilizza endpoints[*].nodeName.endpoints[*].topology["topology.kubernetes.io/zone"]Utilizza endpoints[*].zone.endpoints[*].topologySostituito con endpoints[*].deprecatedTopology, che non è scrivibile nella versione v1.
PodDisruptionBudget
La versione API beta (policy/v1beta1) di PodDisruptionBudget non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21.
- Esegui la migrazione dei manifest e dei client API in modo che utilizzino la versione API
policy/v1. Consulta la tabella seguente che descrive le modifiche importanti nella versione API GA:
Campo Cambia spec.selectorUn valore vuoto ( {}) scritto in unpolicy/v1 PodDisruptionBudgetseleziona tutti i pod nello spazio dei nomi. Un valore non impostato non seleziona ancora alcun pod.
CronJob
La versione API beta (batch/v1beta1) di CronJob non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21. Esegui la migrazione dei manifest e dei client API in modo che utilizzino la versione API batch/v1.
PodSecurityPolicy
La versione API beta (policy/v1beta1) di PodSecurityPolicy non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21.
Per ulteriori informazioni, consulta la pagina relativa al ritiro di PodSecurityPolicy.
RuntimeClass
La versione API beta (node.k8s.io/v1beta1) di RuntimeClass non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.20. Esegui la migrazione dei manifest e dei client API in modo che utilizzino la versione API node.k8s.io/v1.
Eventi
La versione API beta (events.k8s.io/v1beta1) di Events non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.19.
- Esegui la migrazione dei manifest e dei client API in modo che utilizzino la
v1versione API o laevents.k8s.io/v1versione API. Consulta la tabella seguente che descrive le modifiche importanti nella versione API GA:
Campo Cambia typeLimitato a NormaleWarning.involvedObjectRinominato in regarding.action,reason,reportingControllerereportingInstanceQuesti campi sono ora obbligatori durante la creazione degli eventi. firstTimestampRinominato in deprecatedFirstTimestampe non è più consentito nei nuovi eventi. Utilizza inveceeventTime.lastTimestampRinominato in deprecatedLastTimestampe non è più consentito nei nuovi eventi. Utilizza inveceseries.lastObservedTime.countRinominato in deprecatedCounte non è più consentito nei nuovi eventi. Utilizza inveceseries.count.source.componentRinominato in deprecatedSource.componente non è più consentito nei nuovi eventi. Utilizza invecereportingController.source.hostRinominato in deprecatedSource.hoste non è più consentito in nuovi eventi. Utilizza invecereportingInstance.
HorizontalPodAutoscaler
La versione API beta (autoscaling/v2beta1) di HorizontalPodAutoscaler non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.23.
Esegui la migrazione dei manifest e dei client API in modo che utilizzino la versione API autoscaling/v2 HorizontalPodAutoscaler.
Prepararsi per l'upgrade alla versione 1.25
Non è necessario eliminare e ricreare gli oggetti API. Tutti gli oggetti API persistenti esistenti per le API passate alla versione GA possono già essere letti e aggiornati utilizzando le nuove versioni API.
Tuttavia, ti consigliamo di eseguire la migrazione dei client e dei manifest prima di eseguire l'upgrade a Kubernetes 1.25. Per saperne di più, consulta la guida alla migrazione delle API deprecate di Kubernetes.
Puoi visualizzare informazioni e consigli sul ritiro per determinare se il tuo cluster utilizza le API deprecate di Kubernetes 1.25. GKE genera informazioni sul ritiro quando gli user agent chiamano le API deprecate, non dalla configurazione degli oggetti Kubernetes.
Trovare i cluster che utilizzano le API deprecate
Puoi trovare i cluster che utilizzano le API deprecate dalle informazioni sul ritiro. Le informazioni sul ritiro forniscono anche informazioni, ad esempio quali client API chiamano le API deprecate nel cluster.
Puoi anche utilizzare gli audit log per trovare i client che effettuano chiamate alle API deprecate.
Individuare i client API che effettuano chiamate di scrittura alle API deprecate
Per i cluster con Google Cloud Observability abilitato, puoi utilizzare la seguente query degli audit log Attività di amministrazione per mostrare l'utilizzo delle API deprecate da parte degli user agent non gestiti da Google:
resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")
Sostituisci DEPRECATED_API_MINOR_VERSION con la versione secondaria in cui viene rimossa l'API deprecata, ad esempio 1.22.
Gli audit log Attività di amministrazione vengono abilitati automaticamente per i cluster GKE. Con questa query, i log mostrano gli user agent che effettuano chiamate di scrittura alle API deprecate.
Individuare i client API che effettuano chiamate di lettura alle API deprecate
Per impostazione predefinita, gli audit log mostrano solo le chiamate di scrittura alle API deprecate. Per mostrare anche le chiamate di lettura alle API deprecate, configura gli audit log di accesso ai dati.
Segui le istruzioni per configurare gli audit log di accesso ai dati con la Google Cloud console. Nella Google Cloud console,
seleziona l'API Kubernetes Engine. Nella scheda Tipi di log nel riquadro delle informazioni, seleziona Admin Read e Data Read.
Con questi log abilitati, puoi ora utilizzare la query originale per visualizzare sia le chiamate di lettura sia le chiamate di scrittura alle API deprecate.
Eseguire l'upgrade dei componenti di terze parti
Le informazioni sul ritiro potrebbero mostrare risultati per gli agenti di terze parti che effettuano chiamate alle API deprecate nel cluster.
Per risolvere il problema degli agenti di terze parti che chiamano le API deprecate, ti consigliamo le seguenti best practice:
- Rivolgiti al fornitore di software di terze parti per una versione aggiornata.
- Esegui l'upgrade del software di terze parti all'ultima versione. Se non puoi eseguire l'upgrade del software, devi verificare se l'upgrade di GKE alla versione con le API deprecate rimosse interromperebbe il servizio.
Ti consigliamo di eseguire questo upgrade e l'upgrade della versione di GKE su un cluster di gestione temporanea per monitorare eventuali interruzioni prima di eseguire l'upgrade dei cluster di produzione.
Aggiornare i cluster interessati dai ritiri
Per eseguire l'upgrade dei cluster interessati dai ritiri, segui questi passaggi:
- Controlla quali user agent utilizzano le API deprecate nei log.
- Aggiorna gli user agent che utilizzano le API deprecate in modo che utilizzino le versioni API supportate.
- Aggiorna all'ultima versione qualsiasi software di terze parti che chiama le API deprecate.
- Esegui l'upgrade di un cluster di test e testa l'applicazione in un ambiente di test prima di eseguire l'upgrade del cluster di produzione per ridurre il rischio di interruzioni quando le API deprecate non sono più disponibili.
- Se non puoi aggiornare uno user agent interessato, esegui l'upgrade di un cluster di test separato per verificare se l'upgrade causa interruzioni. Se l'upgrade non causa interruzioni, puoi eseguire l'upgrade del cluster manualmente.
- Dopo aver aggiornato tutti gli user agent, GKE attende 30 giorni senza osservare l'utilizzo delle API deprecate, quindi sblocca gli upgrade automatici. Gli upgrade automatici procedono in base al programma delle pubblicazioni.
Risorse
Ulteriori informazioni sono disponibili nella documentazione OSS di Kubernetes:
- Blog di Kubernetes: Kubernetes Removals and Major Changes In 1.25
- Note di rilascio di Kubernetes 1.25
- Guida alla migrazione delle API deprecate di Kubernetes