Ottimizza le prestazioni dei nodi

Un modo per migliorare le prestazioni delle applicazioni basate su container consiste nell'aumentare le risorse del cluster aggiungendo nodi o risorse, come CPU o memoria, ai nodi. Questo approccio, tuttavia, può diventare costoso. L'ottimizzazione dei nodi del cluster per migliorare le prestazioni consente di ottimizzare l'utilizzo delle risorse per i carichi di lavoro in modo conveniente. Questo documento descrive come utilizzare l'operatore di ottimizzazione delle prestazioni per ottimizzare i nodi worker al fine di ottimizzare le prestazioni dei carichi di lavoro per GKE su Bare Metal.

Per ottenere il massimo dall'hardware e dal software sottostanti, diversi tipi di applicazioni, in particolare quelle ad alte prestazioni, traggono vantaggio dall'ottimizzazione delle impostazioni dei nodi come riportato di seguito:

  • CPU dedicate per carichi di lavoro sensibili alle prestazioni
  • CPU riservate per daemon e servizi Kubernetes standard
  • Aumento delle dimensioni delle pagine della memoria con 1 GiB (gibibyte) o 2 MiB (mebibyte)
  • Distribuzione del carico di lavoro basata sull'architettura di sistema, ad esempio processori multi-core e NUMA

Con l'operatore di ottimizzazione delle prestazioni, puoi configurare le impostazioni delle prestazioni a livello di nodo creando risorse personalizzate Kubernetes che applicano configurazioni delle prestazioni. Ecco i vantaggi:

  • Un'unica interfaccia di configurazione unificata: con l'operatore di ottimizzazione delle prestazioni, aggiorni uno o più manifest PerformanceTuningProfile che possono essere applicati ai nodi worker con i selettori dei nodi. Non è necessario configurare ogni nodo singolarmente con più impostazioni di configurazione e criteri. Questo approccio consente di gestire le configurazioni a livello di nodo e container in un unico modo unificato.

  • Persistenza e affidabilità: hai inoltre tutta l'affidabilità offerta da Kubernetes con la sua architettura ad alta disponibilità. Puoi aggiornare le risorse personalizzate di PerformanceTuningProfile in qualsiasi momento e le relative impostazioni vengono mantenute nelle operazioni principali dei cluster, come gli upgrade.

L'operatore di ottimizzazione delle prestazioni lavora orchestrando i seguenti strumenti e funzionalità di Kubernetes e del sistema operativo (OS) correlate alle prestazioni:

Per evitare conflitti, quando utilizzi l'operatore di ottimizzazione delle prestazioni, ti consigliamo di non utilizzare gli strumenti e le funzionalità di Kubernetes e del sistema operativo menzionati in precedenza in modo indipendente.

Prerequisiti e limitazioni

Di seguito sono riportati i prerequisiti e le limitazioni per l'utilizzo dell'operatore di ottimizzazione delle prestazioni:

  • Solo Red Hat Enterprise Linux (RHEL): l'operatore di ottimizzazione delle prestazioni è supportato solo per i nodi che eseguono versioni supportate di RHEL.

  • Cluster ibrido o utente con nodi worker: l'operatore di ottimizzazione delle prestazioni è supportato per l'utilizzo con i nodi worker solo in cluster utente o ibridi. L'uso dell'operatore di ottimizzazione delle prestazioni per ottimizzare i nodi del piano di controllo non è supportato. L'operatore di ottimizzazione delle prestazioni usa un selettore di nodi per determinare come applicare i profili di ottimizzazione. Per garantire che i profili di ottimizzazione vengano applicati solo ai nodi worker, il nodeSelector in ogni risorsa personalizzata del profilo deve includere l'etichetta del nodo worker standard node-role.kubernetes.io/worker: "". Se nodeSelector in un profilo di ottimizzazione corrisponde alle etichette su un nodo del piano di controllo, tale nodo non viene ottimizzato e viene impostata una condizione di errore. Per ulteriori informazioni sulle condizioni di errore, consulta Verificare lo stato. Assicurati che il cluster funzioni correttamente prima di installare l'operatore di ottimizzazione delle prestazioni e applicare i profili di ottimizzazione.

  • TuneD 2.22.0: l'operatore di ottimizzazione delle prestazioni richiede l'installazione di TuneD 2.22.0 nei nodi worker che intendi ottimizzare. Per ulteriori informazioni su TuneD, incluse le istruzioni di installazione, consulta la guida introduttiva a TuneD nella documentazione di Red Hat Enterprise Linux. L'operatore di ottimizzazione delle prestazioni utilizza Ottimizzato con il profilo cpu-partitioning. Se non hai questo profilo, puoi installarlo con il seguente comando:

    dnf install -y tuned-profiles-cpu-partitioning
    
  • Requisiti delle risorse per il carico di lavoro: per ottenere il massimo dall'ottimizzazione delle prestazioni, devi conoscere i requisiti di memoria e CPU (richieste e limiti delle risorse) per i tuoi carichi di lavoro.

  • Risorse dei nodi disponibili: trova le risorse di CPU e memoria per i tuoi nodi. Puoi ottenere informazioni dettagliate su CPU e memoria per il tuo nodo rispettivamente nei file /proc/cpuinfo e /proc/meminfo. Puoi anche utilizzare kubectl get nodes per recuperare la quantità di risorse di calcolo e memoria (status.allocatable) di un nodo worker disponibili per i pod.

  • Richiede lo svuotamento: nell'ambito del processo di ottimizzazione, l'operatore di ottimizzazione delle prestazioni prima svuota i nodi, quindi applica un profilo di ottimizzazione. Di conseguenza, i nodi potrebbero segnalare uno stato NotReady durante l'ottimizzazione delle prestazioni. Ti consigliamo di utilizzare la strategia di aggiornamento in sequenza (spec.updateStrategy.type: rolling) anziché un aggiornamento in batch per ridurre al minimo la disponibilità dei carichi di lavoro.

  • Richiede il riavvio: affinché le modifiche all'ottimizzazione dei nodi abbiano effetto, l'operatore di ottimizzazione delle prestazioni riavvia il nodo dopo aver applicato il profilo di ottimizzazione.

Installa operatore di ottimizzazione delle prestazioni

L'operatore di ottimizzazione delle prestazioni è costituito principalmente da due controller (un Deployment e un DaemonSet) che interagiscono tra loro per ottimizzare i nodi in base alle impostazioni del profilo. L'operatore di ottimizzazione delle prestazioni non è installato con GKE su Bare Metal per impostazione predefinita. Scarica i manifest degli operatori di ottimizzazione delle prestazioni da Cloud Storage e utilizza kubectl apply per creare risorse dell'operatore di ottimizzazione delle prestazioni nel cluster.

Per abilitare l'ottimizzazione delle prestazioni con valori predefiniti per il cluster:

  1. Crea una directory performance-tuning sulla workstation di amministrazione.

  2. Dalla directory performance-tuning, scarica il pacchetto Operator Tuning delle prestazioni più recente dal bucket di rilascio Cloud Storage:

    gsutil cp -r gs://anthos-baremetal-release/node-performance-tuning/0.1.0-gke.47 .
    

    I file scaricati includono manifest per il deployment performance-tuning-operator e il DaemonSet nodeconfig-controller-manager. Sono inclusi anche manifest per le funzioni correlate, come controllo dell'accesso basato sui ruoli (RBAC) e il controllo dinamico di ammissione.

  3. In qualità di utente root, applica in modo ricorsivo tutti i manifest degli operatori di ottimizzazione delle prestazioni al cluster utente (o ibrido):

    kubectl apply -f performance-tuning --recursive –-kubeconfig USER_KUBECONFIG
    

    Una volta creati e eseguiti il deployment e il DaemonSet, la tua unica interazione consiste nel modificare e applicare i manifest PerformanceTuningProfile.

Esamina i requisiti delle risorse per i tuoi carichi di lavoro

Prima di poter ottimizzare i nodi, devi comprendere i requisiti delle risorse di computing e memoria dei tuoi carichi di lavoro. Se i nodi worker dispongono di risorse sufficienti, i nodi possono essere ottimizzati per fornire memoria garantita (standard e pagine giganti) per i carichi di lavoro nella classe garantita di qualità del servizio (QoS).

Kubernetes assegna classi QoS a ciascuno dei tuoi pod in base ai vincoli delle risorse che hai specificato per i container associati. Kubernetes utilizza quindi le classi QoS per determinare come pianificare pod e container e allocare le risorse ai tuoi carichi di lavoro. Per sfruttare al massimo l'ottimizzazione dei nodi per i tuoi carichi di lavoro, questi devono avere impostazioni di limiti o richieste di risorse di CPU o memoria.

Per ricevere una classe QoS garantita, i pod devono soddisfare i seguenti requisiti:

  • Per ogni container nel pod:
    • Specifica i valori sia per le richieste di risorse di memoria (spec.containers[].resources.requests.memory) che per i limiti (spec.containers[].resources.limits.memory).
    • Il valore dei limiti di memoria deve corrispondere al valore delle richieste di memoria.
    • Specifica i valori sia per le richieste di risorse della CPU (spec.containers[].resources.requests.cpu) che per i limiti (spec.containers[].resources.limits.cpu).
    • Il valore dei limiti di CPU deve corrispondere al valore delle richieste di CPU.

Il seguente estratto della specifica del pod mostra le impostazioni delle risorse della CPU che soddisfano i requisiti garantiti della classe QoS:

spec:
  containers:
  - name: sample-app
    image: images.my-company.example/app:v4
    resources:
      requests:
        memory: "128Mi"
        cpu: "2"
      limits:
        memory: "128Mi"
        cpu: "2"
  ...

Quando recuperi i dettagli del pod con kubectl get pods, la sezione status deve includere la classe QoS assegnata, come mostrato nell'esempio seguente:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2023-09-22T21:05:23Z"
  generateName: my-deployment-6fdd69987d-
  labels:
    app: metrics
    department: sales
    pod-template-hash: 6fdd69987d
  name: my-deployment-6fdd69987d-7kv42
  namespace: default
  ...
spec:
  containers:
  ...
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2023-09-22T21:05:23Z"
    status: "True"
    type: Initialized
  ...
  qosClass: BestEffort
  startTime: "2023-09-22T21:05:23Z"

Per ulteriori informazioni sulle classi QoS, consulta Qualità dei pod delle classi di servizio nella documentazione di Kubernetes. Per istruzioni su come configurare pod e container in modo che venga loro assegnata una classe QoS, consulta Configurare la qualità del servizio per i pod

Requisiti della CPU

Durante l'ottimizzazione di un nodo, puoi specificare un set di core CPU riservati (spec.cpu.reservedCPUs) per l'esecuzione dei daemon di sistema Kubernetes come kubelet e runtime del container. Questo stesso insieme di CPU riservate esegue anche daemon del sistema operativo, come sshd e udev. I restanti core della CPU sono allocati come isolati. Le CPU isolate sono destinate alle applicazioni legate alla CPU, che richiedono tempo di CPU dedicato senza interferenze da parte di altre applicazioni o interruzioni della rete o di altri dispositivi.

Per pianificare un pod sulle CPU isolate di un nodo worker:

  • Configura il pod per garantire una qualità del servizio (QoS) garantita.

  • I requisiti e i limiti di CPU devono essere specificati in numeri interi. Se specifichi risorse parziali della CPU nella specifica del pod, ad esempio cpu: 0.5 o cpu: 250m (250 millicore), la pianificazione non può essere garantita.

Requisiti di memoria

Durante l'ottimizzazione di un nodo con l'operatore di ottimizzazione delle prestazioni, puoi creare pagine enormi e associarle ai nodi di accesso alla memoria non uniforme (NUMA) sulla macchina. In base alle impostazioni dei pod e dei nodi, i pod possono essere pianificati con un'affinità di nodi NUMA.

Crea un profilo di ottimizzazione delle prestazioni

Dopo aver installato l'operatore di ottimizzazione delle prestazioni, interagisci solo con il cluster che esegue i carichi di lavoro. Puoi creare PerformanceTuningProfile risorse personalizzate direttamente nel cluster utente o nel cluster ibrido, non nel cluster di amministrazione. Ogni risorsa PerformanceTuningProfile contiene un insieme di parametri che specifica la configurazione delle prestazioni applicata a un nodo.

Il valore nodeSelector nella risorsa determina i nodi a cui viene applicato il profilo di ottimizzazione. Per applicare un profilo a un nodo, devi posizionare l'etichetta della coppia chiave-valore corrispondente sul nodo. Un profilo di ottimizzazione viene applicato ai nodi che hanno tutte le etichette specificate nel campo nodeSelector.

Puoi creare più risorse PerformanceTuningProfile in un cluster. Se più di un profilo corrisponde a un determinato nodo, viene impostata una condizione di errore in status della risorsa personalizzata PerformanceTuningProfile. Per scoprire di più sulla sezione status, consulta la sezione Verificare lo stato.

Imposta lo spazio dei nomi per la tua risorsa personalizzata PerformanceTuningProfile su kube-system.

Per ottimizzare uno o più nodi worker:

  1. Modifica il manifest PerformanceTuningProfile.

    Per informazioni su ogni campo nel manifest e su un manifest di esempio, consulta il riferimento delle risorse PerformanceTuningProfile.

  2. (Facoltativo) Per i nodi worker a cui stai applicando un profilo, aggiungi etichette che corrispondano alla coppia chiave-valore spec.nodeSelector.

    Se non viene specificata alcuna coppia chiave-valore spec.nodeSelector nella risorsa personalizzata PerformanceTuningProfile, il profilo viene applicato a tutti i nodi worker.

  3. Applica il manifest al tuo cluster.

    kubectl apply -f PROFILE_MANIFEST --kubeconfig KUBECONFIG
    

    Sostituisci quanto segue:

    • PROFILE_MANIFEST: il percorso del file manifest per la risorsa personalizzata PerformanceTuningProfile.
    • KUBECONFIG: il percorso del file kubeconfig del cluster.

Rimuovi un profilo di ottimizzazione

Per ripristinare lo stato originale non ottimizzato di un nodo:

  1. Elimina la risorsa personalizzata PerformanceTuningProfile dal cluster.

  2. Aggiorna o rimuovi le etichette sul nodo in modo che non venga selezionato nuovamente dal profilo di ottimizzazione.

Se disponi di più profili di ottimizzazione associati al nodo, ripeti i passaggi precedenti, in base alle necessità.

Mettere in pausa un profilo di ottimizzazione

Se devi eseguire la manutenzione del cluster, puoi mettere in pausa temporaneamente l'ottimizzazione modificando la risorsa personalizzata PerformanceTuningProfile. Ti consigliamo di mettere in pausa l'ottimizzazione prima di eseguire operazioni critiche del cluster, ad esempio l'upgrade di un cluster.

L'esito negativo dell'applicazione del profilo è un altro caso in cui potresti mettere in pausa l'ottimizzazione. Se il processo di ottimizzazione non va a buon fine, il controller potrebbe continuare a tentare di ottimizzare il nodo, il che potrebbe comportare il riavvio continuo del nodo. Se noti che lo stato del nodo passa dallo stato Pronto e Non pronto, metti in pausa l'ottimizzazione per ripristinare lo stato non funzionante.

Per mettere in pausa l'ottimizzazione:

  1. Modifica il manifest della risorsa personalizzata PerformanceTuningProfile per impostare spec.paused su true.

  2. Utilizza kubectl apply per aggiornare la risorsa.

Quando l'ottimizzazione delle prestazioni è in pausa, il controller dell'operatore di ottimizzazione delle prestazioni arresta tutte le operazioni. La messa in pausa impedisce il rischio che le operazioni del controller dell'operatore per l'ottimizzazione delle prestazioni siano in conflitto con le operazioni del controller GKE su Bare Metal.

Riferimento risorsa PerformanceTuningProfile

Questa sezione descrive ciascuno dei campi della risorsa personalizzata PerformanceTuningProfile. Questa risorsa viene utilizzata per creare un profilo di ottimizzazione per uno o più nodi del cluster. Tutti i campi della risorsa sono modificabili dopo la creazione del profilo. I profili devono trovarsi nello spazio dei nomi kube-system.

Il seguente manifest del profilo di esempio numa per i nodi con 8 core della CPU specifica le seguenti allocazioni delle risorse:

  • 4 core CPU (0-3) sono riservati all'overhead di sistema Kubernetes.

  • 4 core della CPU (4-7) vengono accantonati solo per i carichi di lavoro.

  • Per impostazione predefinita, la memoria dei nodi è suddivisa in pagine da 2 MiB anziché nelle pagine standard da 4 KiB.

  • 10 pagine di memoria con dimensioni di 1 GiB vengono messe da parte per essere utilizzate dal nodo NUMA 0.

  • 5 pagine di memoria di 2 MiB vengono messe da parte per essere utilizzate dal nodo 1 di NUMA.

  • Topology Manager utilizza il criterio Best effort per la pianificazione dei carichi di lavoro.

apiVersion: anthos.gke.io/v1alpha1
kind: PerformanceTuningProfile
metadata:
  name: numa
  namespace: kube-system
spec:
  cpu:
    isolatedCPUs: 4-7
    reservedCPUs: 0-3
  defaultHugepagesSize: 2M
  nodeSelector:
    app: database
    node-role.kubernetes.io/worker: ""
  pages:
  - count: 10
    numaNode: 0
    size: 1G
  - count: 5
    numaNode: 1
    size: 2M
  topologyManagerPolicy: best-effort

Puoi recuperare la definizione della risorsa personalizzata PerformanceTuningProfile correlata dal gruppo anthos.gke.io nel tuo cluster. La definizione della risorsa personalizzata viene installata dopo aver aggiunto l'annotazione della funzionalità di anteprima alla risorsa cluster autogestita.

Configurazione della CPU

Proprietà Descrizione
cpu.reservedCPUs Obbligatorio. Modificabile. Stringa. Questo campo definisce un set di core CPU da prenotare per i daemon di sistema Kubernetes, come kubelet, runtime del container e rilevatore dei problemi dei nodi. Questi core della CPU vengono utilizzati anche per i daemon del sistema operativo (OS), come sshd e udev.

Il campo cpu.reservedCPUs riporta un elenco di numeri di CPU o intervalli di numeri di CPU. Assicurati che l'elenco di CPU non si sovrapponga all'elenco specificato con cpu.isolatedCPUs. L'unione delle CPU elencate in questi due campi deve includere tutte le CPU del nodo.

cpu.isolatedCPUs Facoltativo. Modificabile. Stringa. Il campo cpu.isolatedCPUs definisce un insieme di CPU utilizzate esclusivamente per le applicazioni sensibili alle prestazioni. CPU Manager pianifica i container solo sulle CPU non prenotate, secondo le classi QoS di Kubernetes. Per garantire che i carichi di lavoro vengano eseguiti sulle CPU isolate, configura i pod con la classe QoS garantita e assegna una risorsa CPU al pod o al container. Per la pianificazione dei pod garantita, devi specificare unità di CPU interi, non risorse CPU parziali (cpu: "0.5").

apiVersion: v1
kind: Pod
...
spec:
  containers:
  ...
    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "1"
  ...

L'ottimizzazione delle CPU isolate per i carichi di lavoro offre i migliori vantaggi in termini di prestazioni. Questo campo riporta un elenco di numeri di CPU o intervalli di numeri di CPU. Assicurati che l'elenco di CPU non si sovrapponga all'elenco specificato con cpu.reservedCPUs e che l'unione degli elenchi in questi due campi includa tutte le CPU per il nodo.

cpu.balanceIsolated Facoltativo. Modificabile. Valore booleano. Valore predefinito: true. Questo campo specifica se il set di CPU isolate è idoneo o meno per il bilanciamento automatico del carico dei carichi di lavoro tra le CPU. Se imposti questo campo su false, i carichi di lavoro devono assegnare esplicitamente ogni thread a una CPU specifica per distribuire il carico tra le CPU. Con assegnazioni esplicite di CPU, ottieni le prestazioni più prevedibili per i carichi di lavoro garantiti, ma aggiunge complessità ai carichi di lavoro.
cpu.globallyEnableIRQLoadBalancing Obbligatorio. Modificabile. Valore booleano. Valore predefinito: true. Questo campo specifica se abilitare o meno il bilanciamento del carico delle richieste di interruzioni (IRQ) per il set di CPU isolato.

Configurazione della memoria

Proprietà Descrizione
defaultHugePageSize Facoltativo. Modificabile. Enumerazione: 1G o 2M. Questo campo definisce la dimensione gigante predefinita dei parametri di avvio del kernel. Le pagine enormi vengono allocate al momento dell'avvio, prima che la memoria si frammenta. È importante notare che l'impostazione della dimensione predefinita di largepages su 1G rimuove tutti i 2 milioni di cartelle correlate dal nodo. Un'enorme dimensione predefinita di 1 G impedisce di configurare 2 milioni di pagine enormi nel nodo.
pages Facoltativo. Modificabile. Numero intero. Questo campo specifica il numero di pagine enormi da creare al momento dell'avvio. Questo campo accetta un array di pagine. Controlla la memoria disponibile per i nodi prima di specificare le pagine giganti. Non richiedere un numero maggiore di pagine del necessario e non riservare tutta la memoria per pagine di grandi dimensioni. I carichi di lavoro richiedono anche memoria standard.

Selezione dei nodi

Proprietà Descrizione
nodeSelector Obbligatorio. Modificabile. Questo campo richiede sempre l'etichetta del nodo worker Kubernetes, node-role.kubernetes.io/worker:"", per garantire che l'ottimizzazione delle prestazioni venga eseguita solo sui nodi worker. Questo campo accetta un'etichetta nodo facoltativa come coppia chiave-valore. Le etichette delle coppie chiave-valore vengono utilizzate per selezionare nodi worker specifici con etichette corrispondenti. Quando le etichette nodeSelector corrispondono alle etichette su un nodo worker, il profilo delle prestazioni viene applicato a questo nodo. Se non specifichi un'etichetta chiave-valore nel tuo profilo, questa viene applicata a tutti i nodi worker nel cluster.

Ad esempio, nodeSelector specifica che il profilo di ottimizzazione viene applicato solo ai nodi worker con etichette app: database corrispondenti:


...
spec:
  nodeSelector:
    app: database
    node-role.kubernetes.io/worker: ""
  ...

Configurazione kubelet

Proprietà Descrizione
topologyManagerPolicy Facoltativo. Modificabile. Enumerazione: none, best-effort, restricted o single-numa-node. Valore predefinito: best-effort. Questo campo specifica il criterio di Topology Manager di Kubernetes utilizzato per allocare le risorse per i carichi di lavoro, in base alla classe di qualità del servizio (QoS) assegnata. Per maggiori informazioni su come vengono assegnate le classi QoS, consulta Configurare la qualità del servizio per i pod.

Operazioni profilo

Proprietà Descrizione
paused Facoltativo. Modificabile. Valore booleano. Imposta paused su true per impedire temporaneamente ai controller DaemonSet di ottimizzare i nodi selezionati.
updateStrategy Facoltativo. Modificabile. Specifica la strategia per applicare le modifiche alla configurazione dell'ottimizzazione ai nodi selezionati.
updateStrategy.rollingUpdateMaxUnavailalble Facoltativo. Modificabile. Numero intero. Valore predefinito: 1. Specifica il numero massimo di nodi che possono essere ottimizzati contemporaneamente. Questo campo si applica solo quando type è impostato su rolling.
updateStrategy.type Facoltativo. Modificabile. Enumerazione: batch o rolling. Valore predefinito: rolling. Specifica come applicare gli aggiornamenti del profilo ai nodi selezionati. Se vuoi applicare contemporaneamente l'aggiornamento a tutti i nodi selezionati, imposta type su batch. Per impostazione predefinita, gli aggiornamenti vengono implementati in sequenza, uno dopo l'altro, sui singoli nodi.

Verifica lo stato

Dopo aver creato o aggiornato la risorsa personalizzata PerformanceTuningProfile, un controller regola i nodi selezionati in base alla configurazione fornita nella risorsa. Per controllare lo stato di PerformanceTuningProfile, è disponibile il seguente campo in Status:

Proprietà Descrizione
conditions La condizione rappresenta le ultime osservazioni disponibili sullo stato attuale della risorsa del profilo.
conditions.lastTransitionTime Sempre restituito. Stringa (in formato data-ora). L'ultima volta che la condizione è passata da uno stato a un altro. Questo orario di solito indica quando è cambiata la condizione di base. Se l'ora non è nota, l'ora indica quando è stato modificato il campo dell'API.
conditions.message Facoltativo. Stringa. Un messaggio leggibile che indica i dettagli della transizione. Questo campo potrebbe essere vuoto.
conditions.observedGeneration Facoltativo. Numero intero. Se impostato, questo campo rappresenta il metadata.generation su cui è stata impostata la condizione. Ad esempio, se metadata.generation è 12, ma status.condition[x].observedGeneration è 9, la condizione relativa allo stato attuale dell'istanza non è aggiornata.
conditions.reason Obbligatorio. Stringa. Il motivo dell'ultima transizione della condizione.
conditions.status Obbligatorio. Stato della condizione: True, False o Unknown.
conditions.type Obbligatorio. Il tipo è il tipo di condizione: Stalled o Reconciling.
readyNodes Il numero di nodi a cui il profilo di ottimizzazione è stato applicato correttamente.
reconcilingNodes Il numero di nodi selezionati (o selezionati in precedenza) che sono in fase di riconciliazione con il profilo di ottimizzazione più recente da parte del DaemonSet nodeconfig-controller-manager.
selectedNodes Il numero di note selezionate. ovvero il numero di nodi che corrispondono al selettore dei nodi per questa risorsa personalizzata PerformanceTuningProfile.

Passaggi successivi