API Kubernetes 1.25 deprecate

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[*].topology Sostituito 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.selector Un valore vuoto ({}) scritto in un policy/v1 PodDisruptionBudget seleziona 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 v1 versione API o la events.k8s.io/v1 versione API.
  • Consulta la tabella seguente che descrive le modifiche importanti nella versione API GA:

    Campo Cambia
    type Limitato a Normal e Warning.
    involvedObject Rinominato in regarding.
    action, reason, reportingController e reportingInstance Questi campi sono ora obbligatori durante la creazione degli eventi.
    firstTimestamp Rinominato in deprecatedFirstTimestamp e non è più consentito nei nuovi eventi. Utilizza invece eventTime.
    lastTimestamp Rinominato in deprecatedLastTimestamp e non è più consentito nei nuovi eventi. Utilizza invece series.lastObservedTime.
    count Rinominato in deprecatedCount e non è più consentito nei nuovi eventi. Utilizza invece series.count.
    source.component Rinominato in deprecatedSource.component e non è più consentito nei nuovi eventi. Utilizza invece reportingController.
    source.host Rinominato in deprecatedSource.host e non è più consentito in nuovi eventi. Utilizza invece reportingInstance.

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:

  1. Rivolgiti al fornitore di software di terze parti per una versione aggiornata.
  2. 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:

  1. Controlla quali user agent utilizzano le API deprecate nei log.
  2. Aggiorna gli user agent che utilizzano le API deprecate in modo che utilizzino le versioni API supportate.
  3. Aggiorna all'ultima versione qualsiasi software di terze parti che chiama le API deprecate.
  4. 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.
  5. 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.
  6. 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: