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 1.25 e aggiornarli in modo che utilizzino le API GA. Per informazioni più dettagliate, consulta la guida alla migrazione delle API ritirate 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 successivamente 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 che sono state trasferite a 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 deprecata nella versione 1.21.

  • Esegui la migrazione dei manifest e dei client API in modo che utilizzino la versione dell'API discovery.k8s.io/v1.
  • Consulta la tabella seguente 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 è più supportata a partire dalla versione 1.25. Questa API è stata deprecata nella versione 1.21.

  • Esegui la migrazione dei manifest e dei client API per utilizzare la versione dell'API policy/v1.
  • Consulta la tabella seguente 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 alcun pod.

CronJob

La versione beta dell'API (batch/v1beta1) di CronJob non è più pubblicata a partire dalla versione 1.25. Questa API è stata deprecata nella versione 1.21. Esegui la migrazione dei manifest e dei client API in modo che utilizzino la versione dell'API batch/v1.

PodSecurityPolicy

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

Per ulteriori informazioni, consulta la pagina relativa al ritiro di PodSecurityPolicy.

RuntimeClass

La versione beta dell'API (node.k8s.io/v1beta1) di RuntimeClass non è più supportata 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 è più supportata 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 versione dell'API v1 o la versione dell'API events.k8s.io/v1.
  • Consulta la tabella seguente 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 quando crei gli 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 nei nuovi eventi. Utilizza invece 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 dei manifest e dei client API per utilizzare la versione dell'API autoscaling/v2 HorizontalPodAutoscaler.

Preparazione all'upgrade alla versione 1.25

Non è necessario eliminare e ricreare gli oggetti API. Tutti gli oggetti API esistenti memorizzati per le API che sono state trasferite a GA possono già essere letti e aggiornati utilizzando le nuove versioni dell'API.

Tuttavia, ti consigliamo di eseguire la migrazione dei client e dei manifest prima di eseguire l'upgrade a Kubernetes 1.25. Per scoprire 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 le API ritirate di Kubernetes 1.25. GKE genera informazioni sul ritiro quando gli agenti utente chiamano API ritirate, non dalla configurazione degli oggetti Kubernetes.

Trovare i cluster che utilizzano API obsolete

Puoi scoprire quali cluster utilizzano API ritirate dagli approfondimenti sul ritiro. Gli approfondimenti sulla ritiro forniscono anche informazioni, ad esempio su quali client API chiamano le API ritirate nel tuo cluster.

Puoi anche utilizzare gli audit log per trovare i client che effettuano chiamate alle API ritirate.

Individuare i client API che eseguono chiamate di scrittura ad API ritirate

Per i cluster in cui è attivata l'osservabilità di Google Cloud, puoi utilizzare la seguente query del log di controllo delle attività amministrative per mostrare l'utilizzo di API ritirate da agenti utente 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 minore in cui l'API obsoleta è stata rimossa, ad esempio 1.22.

Gli audit log delle attività di amministrazione vengono attivati automaticamente per i cluster GKE. Con questa query, i log mostrano gli agenti utente che eseguono chiamate di scrittura alle API ritirate.

Individuare i client API che effettuano chiamate di lettura ad API ritirate

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 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 ritirate.

Eseguire l'upgrade dei componenti di terze parti

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

Per risolvere i problemi relativi agli agenti di terze parti che richiamano API ritirate, consigliamo di seguire 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 alla versione più recente. Se non puoi eseguire l'upgrade del software, devi verificare se l'upgrade di GKE alla versione con le API ritirate potrebbe interrompere il servizio.

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

Aggiorna i cluster interessati dal ritiro

Per eseguire l'upgrade dei cluster interessati dal ritiro, svolgi i seguenti passaggi:

  1. Controlla quali agenti utente utilizzano le API obsolete nei log.
  2. Aggiorna gli user agent che utilizzano le API ritirate in modo che utilizzino le versioni supportate.
  3. Aggiorna il software di terze parti che chiama le API ritirate 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 ritirate non sono più disponibili.
  5. Se non riesci ad aggiornare uno user agent interessato, esegui l'upgrade di un cluster di test distinto per verificare se l'upgrade causa interruzioni. Se l'upgrade non causa interruzione del servizio, puoi eseguire manualmente l'upgrade del cluster.
  6. Dopo aver aggiornato tutti gli agenti utente, GKE attende 30 giorni senza rilevare l'utilizzo di API ritirate, quindi sblocca gli upgrade automatici. Gli upgrade automatici vengono eseguiti in base alla pianificazione dei rilasci.

Risorse

Puoi trovare ulteriori informazioni nella documentazione di Kubernetes OSS: