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 state promosse 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 di cui è stato eseguito l'upgrade alla versione GA utilizzando le API GA.
EndpointSlice
La versione beta dell'API (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 per utilizzare la versione dell'API
discovery.k8s.io/v1
. Consulta la seguente tabella che descrive le modifiche significative nella versione dell'API GA:
Campo Cambia endpoints[*].topology["kubernetes.io/hostname"]
Utilizza endpoints[*].nodeName
.endpoints[*].topology["topology.kubernetes.io/zone"]
Utilizza endpoints[*].zone
.endpoints[*].topology
Sostituito con endpoints[*].deprecatedTopology
, che non è scrivibile nella versione 1.
PodDisruptionBudget
La versione beta dell'API (policy/v1beta1
) di PodDisruptionBudget
non viene più
servita a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21.
- Esegui la migrazione dei manifest e dei client API per utilizzare la versione API
policy/v1
. Consulta la seguente tabella che descrive le modifiche significative nella versione dell'API GA:
Campo Cambia spec.selector
Un valore vuoto ( {}
) scritto in unpolicy/v1 PodDisruptionBudget
seleziona tutti i pod nello spazio dei nomi. Un valore non impostato non seleziona comunque alcun pod.
CronJob
La versione beta dell'API (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 per utilizzare la versione batch/v1
dell'API.
PodSecurityPolicy
La versione beta dell'API (policy/v1beta1
) di PodSecurityPolicy
non viene più
servita a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21.
Per maggiori informazioni, consulta la pagina relativa al ritiro di PodSecurityPolicy.
RuntimeClass
La versione beta dell'API (node.k8s.io/v1beta1
) di RuntimeClass
non viene più
servita a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.20. Esegui la migrazione
dei manifest e dei client API per utilizzare la versione API node.k8s.io/v1
.
Eventi
La versione beta dell'API (events.k8s.io/v1beta1
) di Events
non viene più
servita a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.19.
- Esegui la migrazione dei manifest e dei client API per utilizzare la versione API
v1
o la versione APIevents.k8s.io/v1
. Consulta la seguente tabella che descrive le modifiche significative nella versione dell'API GA:
Campo Cambia type
Limitato a Normal
eWarning
.involvedObject
Rinominato in regarding
.action
,reason
,reportingController
ereportingInstance
Questi campi sono ora obbligatori durante la creazione degli eventi. firstTimestamp
Ridenominato in deprecatedFirstTimestamp
e non più consentito nei nuovi eventi. Utilizza inveceeventTime
.lastTimestamp
Ridenominato in deprecatedLastTimestamp
e non più consentito nei nuovi eventi. Usa inveceseries.lastObservedTime
.count
Ridenominato in deprecatedCount
e non più consentito nei nuovi eventi. Utilizza inveceseries.count
.source.component
Ridenominato in deprecatedSource.component
e non più consentito nei nuovi eventi. Usa invecereportingController
.source.host
Ridenominato deprecatedSource.host
e non più consentito nei nuovi eventi. Utilizza invecereportingInstance
.
HorizontalPodAutoscaler
La versione beta dell'API (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 per utilizzare la
versione API autoscaling/v2 HorizontalPodAutoscaler
.
Preparazione dell'upgrade alla versione 1.25
Non è necessario eliminare e ricreare nessuno degli oggetti API. Tutti gli oggetti API persistenti esistenti per le API di cui è stata eseguita la migrazione alla disponibilità generale possono già essere letti e aggiornati utilizzando le nuove versioni delle 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 approfondimenti e consigli sul ritiro per determinare se il tuo cluster utilizza API deprecate di Kubernetes 1.25. GKE genera approfondimenti sul ritiro quando gli user agent chiamano API ritirate, non dalla configurazione degli oggetti Kubernetes.
Trovare cluster che utilizzano API obsolete
Puoi scoprire quali cluster utilizzano API ritirate dagli insight sul ritiro. Gli approfondimenti sull'obsolescenza forniscono anche informazioni, ad esempio quali client API chiamano le API obsolete nel tuo cluster.
Puoi anche utilizzare gli audit log per scoprire quali client effettuano chiamate alle API ritirate.
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 del log di controllo dell'attività di amministrazione per mostrare l'utilizzo delle API ritirate da 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 delle 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 ritirate.
Individuare i client API che effettuano chiamate di lettura alle API deprecate
Per impostazione predefinita, i log di controllo mostrano solo le chiamate di scrittura alle API ritirate. Per visualizzare anche le chiamate di lettura alle API ritirate, configura gli audit log di accesso ai dati.
Segui le istruzioni per configurare gli audit log di accesso ai dati con la console Google Cloud . Nella console Google Cloud ,
seleziona l'API Kubernetes Engine. Nella scheda Tipi di log del pannello delle informazioni,
seleziona Admin Read
e Data Read
.
Con questi log abilitati, ora puoi utilizzare la query originale per visualizzare sia le chiamate di lettura sia le chiamate di scrittura alle API ritirate.
Eseguire l'upgrade dei componenti di terze parti
Gli approfondimenti sul ritiro potrebbero mostrare risultati per agenti di terze parti che effettuano chiamate ad API ritirate nel tuo cluster.
Per risolvere il problema degli agenti di terze parti che chiamano API ritirate, ti consigliamo di seguire le seguenti best practice:
- Rivolgiti al fornitore del 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 ritirate rimosse interromperebbe il tuo servizio.
Ti consigliamo di eseguire questo upgrade e l'upgrade della versione di GKE su un cluster di staging per monitorare eventuali interruzioni prima di eseguire l'upgrade dei cluster di produzione.
Aggiornamento dei cluster interessati dai ritiri
Per eseguire l'upgrade dei cluster interessati dai ritiri, segui questi passaggi:
- Controlla quali user agent utilizzano le API obsolete nei log.
- Aggiorna gli user agent che utilizzano le API ritirate in modo che utilizzino le versioni dell'API supportate.
- Aggiorna all'ultima versione qualsiasi software di terze parti che chiama API obsolete.
- 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 ritirate non sono più disponibili.
- Se non riesci ad 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 di API ritirate, quindi sblocca gli upgrade automatici. Gli upgrade automatici vengono eseguiti in base al programma di rilascio.
Risorse
Per saperne di più, consulta la documentazione di Kubernetes OSS:
- Blog di Kubernetes: Kubernetes Removals and Major Changes In 1.25
- Note di rilascio di Kubernetes 1.25
- Guida alla migrazione delle API Kubernetes deprecate