API Kubernetes 1.22 deprecate

Questa pagina fornisce informazioni sulle API obsolete nella release 1.22 di Kubernetes. Per informazioni più dettagliate, consulta la Guida alla migrazione delle API deprecate di Kubernetes.

API rimosse nella versione 1.22

La maggior parte delle API deprecate in Kubernetes versione 1.22 sono vecchie API beta che sono state trasferite dalla versione beta (v1beta1) a GA (v1). Le API GA offrono garanzie di compatibilità a lungo termine e dovrebbero essere utilizzate al posto delle API beta deprecate.

Tutti gli oggetti esistenti possono essere coinvolti utilizzando le API GA.

Risorse webhook

La versione API beta di MutatingWebhookConfiguration e ValidatingWebhookConfiguration non è più pubblicata alla versione 1.22.

  • Esegui la migrazione dei file manifest e dei client API per utilizzare la versione API admissionregistration.k8s.io/v1.
  • Nella tabella seguente sono descritte le importanti modifiche della versione dell'API GA:

    Campo Cambia
    webhooks[*].failurePolicy Il valore predefinito è cambiato da Ignore a Fail.
    webhooks[*].matchPolicy Il valore predefinito è cambiato da Exact a Equivalent.
    webhooks[*].timeoutSeconds Il valore predefinito è cambiato da 30s a 10s.
    webhooks[*].sideEffects Il valore predefinito è stato rimosso e il campo è ora obbligatorio. Sono consentiti solo None e NoneOnDryRun.
    webhooks[*].admissionReviewVersions Il valore predefinito è stato rimosso e ora il campo è obbligatorio (le versioni supportate per AdmissionReview sono v1 e v1beta1).
    webhooks[*].name Deve essere univoco nell'elenco per gli oggetti creati tramite admissionregistration.k8s.io/v1.

Definizione di risorsa personalizzata

La versione dell'API beta di CustomResourceDefinition non è più pubblicata alla versione 1.22.

  • Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API apiextensions.k8s.io/v1.
  • Nella tabella seguente sono descritte le importanti modifiche della versione dell'API GA:

    Campo Cambia
    spec.scope Nessun valore predefinito per Namespaced. Il valore deve essere specificato in modo esplicito.
    spec.version Voce rimossa. Usa il criterio spec.versions.
    spec.validation Voce rimossa. Usa il criterio spec.versions[*].schema.
    spec.subresources Voce rimossa. Usa il criterio spec.versions[*].subresources.
    spec.additionalPrinterColumns Voce rimossa. Usa il criterio spec.versions[*].additionalPrinterColumns.
    spec.conversion.webhookClientConfig Spostato in spec.conversion.webhook.clientConfig.
    spec.conversion.conversionReviewVersions Spostato in spec.conversion.webhook.conversionReviewVersions.
    spec.versions[*].schema.openAPIV3Schema Ora obbligatorio per la creazione di oggetti CustomResourceDefinition v1 e deve essere uno schema strutturale.
    spec.preserveUnknownFields Il valore true non è consentito durante la creazione di oggetti CustomResourceDefinition v1. Il valore deve essere specificato all'interno delle definizioni dello schema come x-kubernetes-preserve-unknown-fields: true.
    additionalPrinterColumns In additionalPrinterColumns elementi, il campo JSONPath è stato rinominato in jsonPath.

ServizioAPI

La versione dell'API beta di APIService non è più pubblicata alla versione 1.22. Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API apiregistration.k8s.io/v1.

Revisione token

La versione dell'API beta di TokenReview non è più pubblicata alla versione 1.22. Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API authentication.k8s.io/v1.

Risorse SubjectAccessReview

La versione API beta di LocalSubjectAccessReview, SelfSubjectAccessReview e SubjectAccessReview non è più pubblicata alla versione 1.22.

  • Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API permission.k8s.io/v1.
  • Nella tabella seguente sono descritte le importanti modifiche della versione dell'API GA:

    Campo Cambia
    spec.group Rinominato in spec.groups.

Richiesta di firma del certificato

La versione dell'API beta di CertificateSigningRequest non è più pubblicata alla versione 1.22.

  • Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API certificates.k8s.io/v1.
  • Nella tabella seguente sono descritte le importanti modifiche della versione dell'API GA:

    Campo Cambia
    spec.signerName Per i client API che richiedono certificati, questo campo è obbligatorio (vedi i firmati Kubernetes noti) e non è possibile creare richieste per kubernetes.io/legacy-unknown tramite l'API certificates.k8s.io/v1.
    spec.usages Per i client API che richiedono certificati, questo campo è obbligatorio. Questo campo non può contenere valori duplicati e deve contenere solo utilizzi noti.
    status.conditions Per i client API che approvano o firmano i certificati, questo campo non può contenere tipi duplicati.
    status.conditions[*].status Per i client API che approvano o firmano i certificati, questo campo è ora obbligatorio.
    status.certificate Per i client API che approvano o firmano i certificati, questo campo deve essere codificato in PEM e contenere solo blocchi CERTIFICATE.

Affitto

La versione dell'API beta di Lease non è più pubblicata alla versione 1.22. Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API coordination.k8s.io/v1.

In entrata

Le versioni dell'API beta (extensions/v1beta1 e networking.k8s.io/v1beta1) di Ingress non sono più pubblicate per i cluster GKE creati nelle versioni 1.22 e successive.

I cluster GKE che eseguono l'upgrade da GKE 1.21 e versioni precedenti a 1.22.7-gke.300 e successive possono comunque utilizzare le versioni dell'API beta fino alla versione 1.23.

  • Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API networking.k8s.io/v1.
  • Nella tabella seguente sono descritte le importanti modifiche della versione dell'API GA:

    Campo Cambia
    spec.backend Rinominato in spec.defaultBackend.
    backend serviceName Rinominato in service.name.
    servicePort I campi numerici del backend servicePort vengono rinominati in service.port.number. I campi servicePort di backend delle stringhe vengono rinominati in service.port.name.
    pathType Ora obbligatorio per ciascun percorso specificato. Il valore può essere: Prefix, Exact o ImplementationSpecific. Per corrispondere al comportamento v1beta1 non definito, utilizza ImplementationSpecific.

I file manifest seguenti descrivono lo stesso Ingress in v1 e v1beta1:

Manifest v1beta1

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example
spec:
  backend:
    serviceName: default-backend
    servicePort: 80
  rules:
  - http:
      paths:
      - path: /testpath
        backend:
          serviceName: test
          servicePort: 80

Manifest v1

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example
spec:
  defaultBackend:
    service:
      name: default-backend
      port:
        number: 80
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: ImplementationSpecific
        backend:
          service:
            name: test
            port:
              number: 80

Puoi utilizzare la seguente query per i cluster con la suite operativa di Google Cloud abilitata per identificare i client che accedono alle API Ingress v1beta1:

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

IngressClass

La versione dell'API beta di IngressClass non è più pubblicata alla versione 1.22. Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API networking.k8s.io/v1.

Risorse RBAC

La versione API beta di ClusterRole, ClusterRoleBinding, Role e RoleBinding non è più pubblicata alla versione 1.22. Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API rbac.autorizzazione.k8s.io/v1.

ClassePriorità

La versione dell'API beta di PriorityClass non è più pubblicata alla versione 1.22. Esegui la migrazione dei file manifest e dei client API per utilizzare la versione dell'API scheduling.k8s.io/v1.

Risorse di archiviazione

La versione API beta di CSIDriver, CSINode, StorageClass e VolumeAttachment non è più pubblicata alla versione 1.22. Esegui la migrazione dei file manifest e dei client API per utilizzare la versione API storage.k8s.io/v1.

Individuazione dei client API che scrivono nelle API deprecate

I cluster con la suite operativa di Google Cloud abilitata possono utilizzare la seguente query del log delle attività di amministrazione per mostrare l'utilizzo delle API obsolete 1.22 da parte di utenti non gestiti da Google:

resource.type="k8s_cluster"
labels."k8s.io/removed-release"="1.22"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")

Preparazione all'upgrade a 1.22

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 file manifest prima di eseguire l'upgrade a Kubernetes 1.22. Per ulteriori informazioni, consulta la sezione "Cosa fare" della Guida alla migrazione delle API Kubernetes deprecate.

Risorse

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