API deprecate per Kubernetes 1.25


Questa pagina spiega come preparare i cluster per gli upgrade a GKE versione 1.25. Puoi trovare i client API che effettuano chiamate ad API deprecate rimosse in 1.25 e aggiornarli in modo che utilizzino le API GA. Per informazioni più dettagliate, consulta la Guida alla migrazione delle API deprecate per Kubernetes.

API rimosse nella versione 1.25

La maggior parte delle API deprecate in Kubernetes versione 1.25 sono API precedenti beta che sono passate da beta (ad esempio, v1beta1) a 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 a GA utilizzando le API GA.

EndpointSlice

La versione beta (discovery.k8s.io/v1beta1) dell'API EndpointSlice non è più supportata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21.

  • Esegui la migrazione di manifest e client API per utilizzare la versione dell'API discovery.k8s.io/v1.
  • Fai riferimento alla seguente tabella che descrive le modifiche significative nella versione dell'API GA:

    Campo Cambia
    endpoints[*].topology["kubernetes.io/hostname"] Usa endpoints[*].nodeName.
    endpoints[*].topology["topology.kubernetes.io/zone"] Usa endpoints[*].zone.
    endpoints[*].topology Sostituito con endpoints[*].deprecatedTopology, che non è scrivibile nella v1.

PodDisruptionBudget

La versione beta dell'API (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 di manifest e client API per utilizzare la versione API policy/v1.
  • Fai riferimento alla seguente tabella che descrive le modifiche significative nella versione dell'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 comunque nessun 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 di manifest e client API per utilizzare la versione dell'API batch/v1.

PodSecurityPolicy

La versione beta dell'API (policy/v1beta1) di PodSecurityPolicy non viene più pubblicata a partire dalla versione 1.25. Questa API è stata ritirata nella versione 1.21.

Per maggiori informazioni, consulta Ritiro di PodSecurityPolicy.

RuntimeClass

La versione beta dell'API (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 di manifest e client API per utilizzare la versione dell'API node.k8s.io/v1.

Eventi

La versione beta dell'API (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 di manifest e client API per utilizzare la versione API v1 o la versione API events.k8s.io/v1.
  • Fai riferimento alla seguente tabella che descrive le modifiche significative nella versione dell'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 nella nuova sezione Eventi. Usa invece il criterio eventTime.
    lastTimestamp Rinominato in deprecatedLastTimestamp e non più consentito nella nuova sezione Eventi. Usa invece il criterio series.lastObservedTime.
    count Rinominato in deprecatedCount e non più consentito nella nuova versione di Eventi. Usa invece il criterio series.count.
    source.component Rinominato in deprecatedSource.component e non più consentito nella nuova sezione Eventi. Usa invece il criterio reportingController.
    source.host Rinominato in deprecatedSource.host e non più consentito nella nuova sezione Eventi. Usa invece il criterio reportingInstance.

HorizontalPodAutoscaler

La versione beta dell'API (autoscaling/v2beta1) di HorizontalPodAutoscaler non è più disponibile a partire dalla versione 1.25. Questa API è stata deprecata nella versione 1.23. Esegui la migrazione di manifest e client API per utilizzare la versione API autoscaling/v2 HorizontalPodAutoscaler.

Preparazione dell'upgrade alla versione 1.25

Non è necessario eliminare e ricreare gli oggetti API. Tutti gli oggetti API permanenti esistenti per le API passate a GA possono già essere letti e aggiornati utilizzando le nuove versioni API.

Tuttavia, ti consigliamo di eseguire la migrazione di client e manifest prima di eseguire l'upgrade a Kubernetes 1.25. Per saperne di più, consulta la guida alla migrazione delle API deprecate da Kubernetes.

Puoi visualizzare insight e suggerimenti sul ritiro per determinare se il tuo cluster utilizza API deprecate per Kubernetes 1.25. GKE genera insight sul ritiro quando gli user agent chiamano le API ritirate, non dalla configurazione degli oggetti Kubernetes.

Trova i cluster utilizzando API deprecate

Puoi trovare i cluster che utilizzano API deprecate negli approfondimenti sul ritiro. Gli approfondimenti sul ritiro forniscono anche informazioni quali i client API che chiamano le API deprecate nel tuo cluster.

Puoi utilizzare gli audit log per individuare i client che effettuano chiamate alle API deprecate.

Individua i client API che effettuano chiamate di scrittura alle API deprecate

Per i cluster in cui è abilitata l'Observabilità di Google Cloud, puoi utilizzare la seguente query del log di controllo dell'attività di amministrazione per mostrare l'utilizzo di API deprecate da user agent non gestite 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 l'API deprecata viene rimossa, ad esempio 1.22.

Gli audit log delle attività di amministrazione sono abilitati automaticamente per i cluster GKE. Con questa query, i log mostrano gli user agent che effettuano chiamate di scrittura alle API ritirate.

Individua i client API che effettuano chiamate di lettura ad API deprecate

Per impostazione predefinita, i log di controllo 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 console Google Cloud. Nella console Google Cloud, seleziona l'API Kubernetes Engine. Nella scheda Tipi di log nel riquadro 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 deprecate.

Upgrade dei componenti di terze parti

Gli approfondimenti sul ritiro potrebbero mostrare risultati per gli agenti di terze parti che effettuano chiamate alle API deprecate nel tuo cluster.

Per risolvere il problema che gli agenti di terze parti chiamano le API deprecate, ti consigliamo di attenerti alle seguenti best practice:

  1. Rivolgiti al tuo fornitore di software di terze parti per una versione aggiornata.
  2. Esegui l'upgrade del software di terze parti alla versione più recente. Se non riesci a eseguire l'upgrade del software, devi verificare se l'upgrade di GKE alla versione con le API deprecate rimosse interromperà il servizio.

Ti consigliamo di eseguire questo upgrade e la versione di GKE su un cluster di gestione temporanea per monitorare eventuali interruzioni prima di eseguire l'upgrade dei cluster di produzione.

Aggiorna i cluster interessati da deprecazioni

Per eseguire l'upgrade dei cluster interessati da deprecazioni, segui questi passaggi:

  1. Verifica 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 delle API supportate.
  3. Aggiorna qualsiasi software di terze parti che chiama le API deprecate alle versioni più recenti.
  4. Esegui l'upgrade di un cluster di test e testa la tua 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 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 manuale del cluster.
  6. Dopo aver aggiornato tutti gli user agent, GKE attende finché non ha più osservato l'utilizzo di API deprecate per 30 giorni, quindi sblocca gli upgrade automatici. Gli upgrade automatici procedino in base alla pianificazione delle release.

Risorse

Ulteriori informazioni sono disponibili nella documentazione del software open source Kubernetes: