Ottimizza le prestazioni dei nodi

Un modo per migliorare le prestazioni delle applicazioni basate su container è aumentare le risorse cluster aggiungendo nodi o aggiungendo 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 Google Distributed Cloud.

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

  • CPU dedicate per carichi di lavoro sensibili alle prestazioni
  • CPU riservate per i daemon e i servizi Kubernetes standard
  • Aumento delle dimensioni delle pagine in memoria con 1 GiB (gibibyte) o 2 MiB (mebibyte) largepages
  • Distribuzione del carico di lavoro basata sull'architettura del sistema, come 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 di Kubernetes che applicano le configurazioni delle prestazioni. Ecco i vantaggi:

  • Singola 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 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 di container in un unico modo unificato.

  • Persistenza e affidabilità: ottieni anche tutta l'affidabilità fornita da Kubernetes con la sua architettura ad alta disponibilità. Le risorse personalizzate di PerformanceTuningProfile possono essere aggiornate in qualsiasi momento e le relative impostazioni vengono mantenute nelle principali operazioni del cluster, ad esempio gli upgrade.

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

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

Prerequisiti e limitazioni

Ecco 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 utente o ibrido con nodi worker:l'operatore di ottimizzazione delle prestazioni è supportato per l'uso 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, il nodo non viene ottimizzato e viene impostata una condizione di errore. Per ulteriori informazioni sulle condizioni di errore, consulta la pagina Verifica dello stato. Assicurati che il cluster funzioni correttamente prima di installare l'operatore di ottimizzazione delle prestazioni e di applicare i profili di ottimizzazione.

  • TuneD 2.22.0: l'operatore di ottimizzazione delle prestazioni richiede che la versione 2.22.0 di TuneD sia preinstallata 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 TuneD 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 sfruttare al meglio l'ottimizzazione delle prestazioni, devi avere una buona conoscenza dei requisiti di memoria e CPU (richieste e limiti delle risorse) per i carichi di lavoro.

  • Risorse nodo 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 di memoria (status.allocatable) di un nodo worker disponibili per i pod.

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

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

Installa l'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 Google Distributed Cloud per impostazione predefinita. Devi scaricare i manifest degli operatori di ottimizzazione delle prestazioni da Cloud Storage e utilizzare kubectl apply per creare risorse degli operatori di ottimizzazione delle prestazioni nel cluster.

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

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

  2. Dalla directory performance-tuning, scarica il pacchetto più recente dell'operatore di ottimizzazione delle prestazioni dal bucket di rilascio di Cloud Storage:

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

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

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

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

    Dopo aver creato ed eseguito il deployment e il DaemonSet, la tua unica interazione è modificare e applicare i manifest PerformanceTuningProfile.

Rivedi i requisiti delle risorse per i carichi di lavoro

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

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

Per ricevere una classe QoS di garanzia, 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) sia per i limiti (spec.containers[].resources.limits.memory).
    • Il valore dei limiti di memoria deve essere uguale al valore delle richieste di memoria.
    • Specifica i valori sia per le richieste di risorse CPU (spec.containers[].resources.requests.cpu) sia per i limiti (spec.containers[].resources.limits.cpu).
    • Il valore dei limiti della CPU deve essere uguale al valore delle richieste di CPU.

Il seguente estratto delle specifiche dei pod mostra le impostazioni delle risorse CPU che soddisfano i requisiti delle classi QoS garantite:

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 Classi di qualità del servizio dei pod nella documentazione Kubernetes. Per istruzioni su come configurare pod e container in modo che venga assegnata una classe QoS, consulta Configurare la qualità del servizio per i pod

Requisiti CPU

Durante l'ottimizzazione di un nodo, puoi specificare un insieme di core CPU prenotati (spec.cpu.reservedCPUs) per l'esecuzione di daemon di sistema Kubernetes come kubelet e runtime del container. Lo stesso set di CPU riservate esegue anche daemon del sistema operativo, come sshd e udev. I restanti core della CPU vengono allocati come isolati. Le CPU isolate sono destinate ad applicazioni legate alla CPU, che richiedono tempo di CPU dedicato senza interferenze 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 una qualità del servizio (QoS) garantita.

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

Requisiti di memoria

Quando ottimizzi 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 di pod e nodi, i pod possono essere pianificati con l'affinità dei 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 set di parametri che specifica la configurazione delle prestazioni applicata a un nodo.

Il nodeSelector nella risorsa determina i nodi a cui viene applicato il profilo di ottimizzazione. Per applicare un profilo a un nodo, devi applicare 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 Verifica dello stato.

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

Per ottimizzare uno o più nodi worker:

  1. Modifica il file manifest di PerformanceTuningProfile.

    Per informazioni su ciascun campo del manifest e su un manifest di esempio, consulta la documentazione di riferimento delle risorse di 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 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.

Rimuovere 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 di nuovo le etichette sul nodo in modo che non venga selezionato dal profilo di ottimizzazione.

Se al nodo sono associati più profili di ottimizzazione, ripeti i passaggi precedenti, se necessario.

Mettere in pausa un profilo di ottimizzazione

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

Un'applicazione del profilo non riuscita è 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, causando il riavvio continuo del nodo. Se noti che lo stato del nodo passa da Pronto a Non pronto e viceversa, metti in pausa l'ottimizzazione in modo da poter 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 operatore di ottimizzazione delle prestazioni arresta tutte le sue operazioni. La messa in pausa evita il rischio che le operazioni del controller dell'operatore di ottimizzazione delle prestazioni entrino in conflitto con qualsiasi operazione del controller Google Distributed Cloud.

Riferimento risorsa PerformanceTuningProfile

Questa sezione descrive tutti i 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 della CPU (0-3) sono riservati per l'overhead del sistema Kubernetes.

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

  • La memoria dei nodi è suddivisa in pagine da 2 MiB per impostazione predefinita, anziché in pagine standard da 4 Ki.

  • 10 pagine di memoria con dimensioni di 1 GiB vengono riservate per essere utilizzate da NUMA node 0.

  • 5 pagine di memoria di 2 MiB sono riservate all'utilizzo da parte del nodo NUMA 1.

  • 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 di risorsa personalizzata PerformanceTuningProfile correlata dal gruppo anthos.gke.io nel tuo cluster. La definizione personalizzata della risorsa viene installata dopo l'aggiunta dell'annotazione della funzionalità di anteprima alla risorsa del cluster autogestito.

Configurazione della CPU

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

Il campo cpu.reservedCPUs richiede 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 per il nodo.

cpu.isolatedCPUs Facoltativo. Modificabile. Stringa. Il campo cpu.isolatedCPUs definisce un insieme di CPU utilizzate esclusivamente per applicazioni sensibili alle prestazioni. CPU Manager pianifica i container solo sulle CPU non prenotate, in base alle classi Quality of Service (QoS) di Kubernetes. Per assicurarti che i carichi di lavoro vengano eseguiti su 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à CPU intere, 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 il miglior vantaggio in termini di prestazioni. Questo campo richiede 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 del carico automatico dei carichi di lavoro tra le CPU. Se imposti questo campo su false, i carichi di lavoro devono assegnare ogni thread in modo esplicito a una CPU specifica per distribuire il carico tra le CPU. Con assegnazioni di CPU esplicite, ottieni le prestazioni più prevedibili per i carichi di lavoro garantiti, ma aggiunge più complessità ai tuoi carichi di lavoro.
cpu.globallyEnableIRQLoadBalancing Obbligatorio. Modificabile. Valore booleano. Valore predefinito: true. Questo campo specifica se abilitare o meno il bilanciamento del carico di richiesta di interruzione (IRQ) per il set di CPU isolata.

Configurazione memoria

Proprietà Descrizione
defaultHugePageSize Facoltativo. Modificabile. Enumerazione: 1G o 2M. Questo campo definisce la dimensione predefinita della pagina enorme nei parametri di avvio del kernel. Le grandi pagine vengono allocate al momento dell'avvio, prima che la memoria diventi frammentata. È importante notare che l'impostazione della dimensione predefinita di largepages su 1G rimuove tutte le 2 milioni di cartelle correlate dal nodo. Una dimensione enorme 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 enormi pagine. Non richiedere più pagine di grandi dimensioni del necessario e non riservare tutta la memoria per pagine di dimensioni enormi. Anche i carichi di lavoro hanno bisogno di memoria standard.

Selezione dei nodi

Proprietà Descrizione
nodeSelector Obbligatorio. Modificabile. Questo campo richiede sempre l'etichetta del nodo worker di Kubernetes, node-role.kubernetes.io/worker:"", che garantisce che l'ottimizzazione delle prestazioni venga eseguita solo sui nodi worker. Questo campo accetta un'etichetta del 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 quel nodo. Se non specifichi un'etichetta coppia chiave-valore nel tuo profilo, questa viene applicata a tutti i nodi worker nel cluster.

Ad esempio, il valore nodeSelector seguente 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 gestione della topologia Kubernetes utilizzato per allocare le risorse per i carichi di lavoro, in base alla classe di qualità del servizio (QoS) assegnata. Per ulteriori informazioni su come vengono assegnate le classi QoS, consulta Configurare la qualità del servizio per i pod.

Operazioni del 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 di 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 l'aggiornamento a tutti i nodi selezionati contemporaneamente, imposta type su batch. Per impostazione predefinita, gli aggiornamenti vengono implementati in sequenza nei singoli nodi, uno dopo l'altro.

Verifica lo stato

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

Proprietà Descrizione
conditions La condizione rappresenta le ultime osservazioni disponibili dello stato attuale della risorsa del profilo.
conditions.lastTransitionTime Sempre restituito. Stringa (nel formato data-ora). L'ultima volta che la condizione è passata da uno stato a un altro. Questo timestamp di solito indica quando è cambiata la condizione sottostante. Se quell'ora non è nota, l'ora indica quando è stato modificato il campo 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 valore metadata.generation su cui è stata impostata la condizione. Ad esempio, se metadata.generation è 12, ma status.condition[x].observedGeneration è 9, la condizione è obsoleta per quanto riguarda lo stato attuale dell'istanza.
conditions.reason Obbligatorio. Stringa. Il motivo dell'ultima transizione della condizione.
conditions.status Obbligatorio. Stato della condizione: True, False o Unknown.
conditions.type Obbligatorio. "Tipo" indica il tipo di condizione: Stalled o Reconciling.
readyNodes Il numero di nodi a cui è stato applicato correttamente il profilo di ottimizzazione.
reconcilingNodes Il numero di nodi selezionati (o selezionati in precedenza) in fase di riconciliazione con il profilo di ottimizzazione più recente da parte dell'oggetto DaemonSet nodeconfig-controller-manager.
selectedNodes Il numero di note selezionate. ovvero il numero di nodi che corrispondono al selettore di nodi per questa risorsa personalizzata PerformanceTuningProfile.

Passaggi successivi