API Kubernetes 1.16 deprecate

La release 1.16 di Kubernetes non pubblica più versioni deprecate di API specifiche. Le versioni attuali delle API sono disponibili dalla v1.10 e sono disponibili su tutte le versioni supportate di Google Kubernetes Engine (GKE).

Cosa è cambiato nella versione 1.16

La maggior parte delle API ritirate è stata un'API beta obsoleta che è passata da beta a stabile. Le API stabili offrono garanzie di maggiore compatibilità a lungo termine e dovrebbero essere utilizzate al posto delle API beta deprecate.

Impostazioni predefinite modificate

La tabella seguente descrive le modifiche relative ai valori predefiniti dei parametri che non definisci se esegui il passaggio da apps/v1beta1.

Oggetto Cambia Nuovo comportamento
DaemonSet spec.updateStrategy.type: OnDelete cambiato in RollingUpdate Con RollingUpdate, la modifica delle definizioni di DaemonSet ricrea automaticamente i pod.
Deployment spec.progressDeadlineSeconds: 2147483647 ridotto a 600 Riduce il tempo per cui i deployment rimangono in corso prima di essere dichiarati come non riusciti.
spec.revisionHistoryLimit: 2147483647 è diminuito a 10 Limita il numero di oggetti ReplicaSet che rimangono prima di essere eliminati dal controller di deployment.
spec.strategy.rollingUpdate.maxSurge: aumentato al 25% Definisce il numero massimo di pod che un aggiornamento in sequenza può creare rispetto al numero desiderato di pod specificati in specifiche.replicas.
spec.strategy.rollingUpdate.maxUnavailable: aumentato al 25% L'aggiornamento in sequenza continua solo quando il numero di pod non disponibili è inferiore a questo numero. Se si tratta di una percentuale, si specifica nelle specifiche.
StatefulSet spec.updateStrategy.type: OnDelete cambiato in RollingUpdate Con RollingUpdate, la modifica delle definizioni StatefulSet ricrea automaticamente i pod.

Preparazione all'upgrade alla versione 1.16

Non è necessario eliminare e ricreare nessuno degli oggetti API. Tutti gli oggetti API esistenti possono essere già 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.16. Tutte le versioni di GKE hanno a disposizione le nuove versioni delle API.

Risolvere i problemi

Individuazione dei client API che scrivono nelle API deprecate

I cluster con la suite operativa di Google Cloud abilitata possono utilizzare la seguente query per identificare i client che scrivono nelle API deprecate:

resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "apps/v1beta1" OR "apps/v1beta2")
protoPayload.request.kind!="Ingress"
NOT ("kube-system")

Le versioni deprecate vengono visualizzate dopo l'esecuzione di kubectl get ... -o yaml

kubectl get ... preferisce la versione estensioni/v1beta1 se è disponibile nel cluster in uso. Ad esempio, il seguente comando ottiene estensioni/v1beta1 deployment su un cluster 1.15:

kubectl get deployments -o yaml

Dopo aver eseguito l'upgrade dei cluster a Kubernetes 1.16, lo stesso comando utilizzerà automaticamente la nuova API.

Puoi specificare esplicitamente un gruppo o una versione API. Ad esempio, per recuperare deployment e app/v1, esegui:

kubectl get deployments.v1.apps -o yaml

Risorse

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