Ottimizzare le prestazioni del nodo

Un modo per migliorare le prestazioni delle applicazioni basate su container è aumentare le risorse del cluster aggiungendo nodi o risorse, come CPU o memoria, ai nodi. Tuttavia, questo approccio può diventare costoso. Il tuning dei Nodes del cluster per migliorare le prestazioni ti consente di ottimizzare l'utilizzo delle risorse per i carichi di lavoro in modo economicamente conveniente. Questo documento descrive come utilizzare l'operatore di ottimizzazione del rendimento per ottimizzare i nodi worker in modo da ottimizzare il rendimento del carico di lavoro per Google Distributed Cloud.

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

  • CPU dedicate per carichi di lavoro sensibili alle prestazioni
  • CPU riservate per i daemon e i servizi Kubernetes standard
  • Dimensioni delle pagine di memoria aumentate con pagine enormi di 1 GiB (gibibyte) o 2 MiB (mebibyte)
  • Distribuzione del carico di lavoro in base all'architettura del sistema, ad esempio processori multi-core e NUMA

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

  • Interfaccia di configurazione singola e unificata: con l'operatore di ottimizzazione del rendimento, puoi aggiornare uno o più manifest PerformanceTuningProfile che possono essere applicati ai nodi worker con i selettori di nodi. Non è necessario configurare ogni nodo singolarmente con più impostazioni di configurazione e criteri. Questo approccio ti consente di gestire le configurazioni a livello di nodo e di contenitore in un unico modo unificato.

  • Persistenza e affidabilità: puoi anche usufruire di tutta l'affidabilità offerta da Kubernetes con la sua architettura ad alta disponibilità. Le risorse personalizzate PerformanceTuningProfile possono essere aggiornate in qualsiasi momento e le relative impostazioni rimangono invariate nelle principali operazioni del cluster, come gli upgrade.

L'operatore di ottimizzazione del rendimento funziona orchestrando le seguenti funzionalità e strumenti di Kubernetes e del sistema operativo (OS) correlati al rendimento:

Per evitare conflitti, quando utilizzi Performance Tuning Operator, ti consigliamo di non utilizzare in modo indipendente le funzionalità e gli strumenti Kubernetes e OS sopra menzionati.

Prerequisiti e limitazioni

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

  • Solo Red Hat Enterprise Linux (RHEL):l'operatore di ottimizzazione del rendimento è supportato solo per i nodi su cui vengono eseguite le versioni supportate di RHEL.

  • Cluster utente o ibrido con nodi worker: l'operatore di ottimizzazione delle prestazioni è supportato solo per l'utilizzo con i nodi worker nei cluster utente o ibridi. L'utilizzo dell'operatore di ottimizzazione del rendimento per ottimizzare i nodi del control plane non è supportato. L'operatore di ottimizzazione delle prestazioni utilizza un selettore di nodi per determinare come applicare i profili di ottimizzazione. Per assicurarti che i profili di ottimizzazione vengano applicati solo ai nodi worker, nodeSelector in ogni risorsa personalizzata del profilo deve includere l'etichetta del nodo worker standardnode-role.kubernetes.io/worker: "". Se nodeSelector in un profilo di ottimizzazione corrisponde alle etichette su un nodo del piano di controllo, il nodo non è 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 di applicare i profili di ottimizzazione.

  • TuneD 2.22.0: l'operatore di ottimizzazione delle prestazioni richiede che TuneD 2.22.0 sia preinstallato nei nodi worker che intendi ottimizzare. Per ulteriori informazioni su TuneD, incluse le istruzioni di installazione, consulta la sezione 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 dei carichi di lavoro: per ottenere il massimo dalla regolazione delle prestazioni, devi avere una buona conoscenza dei requisiti di memoria e CPU (richieste e limiti delle risorse) per i tuoi carichi di lavoro.

  • Risorse del nodo disponibili:trova le risorse di CPU e memoria per i tuoi nodi. Puoi ottenere informazioni dettagliate sulla CPU e sulla memoria del 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 del rendimento svuota prima 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 graduale (spec.updateStrategy.type: rolling) anziché un aggiornamento collettivo per ridurre al minimo la mancata disponibilità del carico di lavoro.

  • Richiede il riavvio: affinché le modifiche all'ottimizzazione del nodo vengano applicate, 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. Per impostazione predefinita, Performance Tuning Operator non è installato con Google Distributed Cloud. Scarichi i manifest di Performance Tuning Operator da Cloud Storage e utilizzi kubectl apply per creare risorse Performance Tuning Operator nel tuo cluster.

Per attivare l'ottimizzazione del rendimento con i valori predefiniti per il cluster:

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

  2. Dalla directory performance-tuning, scarica l'ultimo pacchetto dell'operatore di ottimizzazione delle prestazioni dal bucket di release di Cloud Storage:

    gcloud storage cp gs://anthos-baremetal-release/node-performance-tuning/0.1.0-gke.47 . --recursive
    

    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 dell'accesso dinamico.

  3. Come utente root, applica tutti i manifest dell'operatore di ottimizzazione del rendimento in modo ricorsivo al tuo cluster utente (o ibrido):

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

    Una volta creati e in esecuzione il deployment e il DaemonSet, l'unica interazione richiesta è 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 di risorse di calcolo e memoria dei tuoi carichi di lavoro. Se i nodi worker dispongono di risorse sufficienti, possono essere ottimizzati per fornire memoria garantita (standard e hugepages) per i carichi di lavoro nel livello di qualità del servizio (QoS) garantito.

Kubernetes assegna le classi QoS a ciascun 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 contenitori e allocare le risorse ai carichi di lavoro. Per sfruttare appieno la ottimizzazione dei nodi per i tuoi carichi di lavoro, questi devono avere impostazioni di richieste o limiti delle risorse CPU o memoria.

Per poter essere assegnati a una classe QoS garantita, i pod devono soddisfare i seguenti requisiti:

  • Per ogni contenitore 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 della specifica del pod mostra le impostazioni delle risorse della CPU che soddisfano i requisiti della classe QoS garantita:

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 del pod nella documentazione di Kubernetes. Per istruzioni su come configurare i pod e i contenitori in modo che venga assegnato loro un'opzione di QoS, consulta Configurare la qualità del servizio per i pod.

Requisiti della CPU

Quando esegui la messa a punto di un nodo, puoi specificare un insieme di core della CPU riservati (spec.cpu.reservedCPUs) per l'esecuzione di demoni di sistema Kubernetes come kubelet e il runtime del contenitore. Lo stesso insieme di CPU riservate esegue anche i daemon del sistema operativo, come sshd e udev. Il resto dei core della CPU viene allocato come isolato. Le CPU isolate sono destinate alle applicazioni dipendenti dalla CPU, che richiedono tempo CPU dedicato senza interferenze da altre applicazioni o interruzioni dalla rete o da 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 della CPU devono essere specificati in numeri interi. Se specifichi risorse della CPU parziali nella specifica del pod, ad esempio cpu: 0.5 o cpu: 250m (250 millicore), la pianificazione non può essere garantita.

Requisiti di memoria

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

Creare un profilo di ottimizzazione del rendimento

Dopo aver installato Performance Tuning Operator, interagisci solo con il cluster che esegue i tuoi carichi di lavoro. Puoi creare risorse personalizzate PerformanceTuningProfile direttamente sul tuo cluster utente o cluster ibrido, non sul cluster di amministrazione. Ogni risorsa PerformanceTuningProfile contiene un insieme di parametri che specifica la configurazione delle prestazioni applicata a un nodo.

nodeSelector nella risorsa determina i nodi a cui viene applicato il profilo di ottimizzazione. Per applicare un profilo a un nodo, inserisci 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 nel status della risorsa personalizzata PerformanceTuningProfile. Per ulteriori informazioni sulla sezione status, vedi Controllare lo 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 PerformanceTuningProfile.

    Per informazioni su ciascun campo del manifest e su un manifest di esempio, consulta il riferimento alla risorsa PerformanceTuningProfile.

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

    Se nella risorsa personalizzata PerformanceTuningProfile non è specificata alcuna coppia chiave-valore spec.nodeSelector, 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 reimpostare un nodo allo stato originale non sintonizzato:

  1. Elimina la risorsa personalizzata PerformanceTuningProfile dal cluster.

  2. Aggiorna o rimuovi le etichette sul nodo in modo che non venga nuovamente 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 la regolazione modificando la risorsa personalizzata PerformanceTuningProfile. Ti consigliamo di mettere in pausa l'ottimizzazione prima di eseguire operazioni critiche del cluster, come un upgrade del cluster.

Un altro caso in cui potresti mettere in pausa la regolazione è l'applicazione non riuscita del profilo. Se la procedura di ottimizzazione non va a buon fine, il controller potrebbe continuare a tentare di ottimizzare il nodo, il che potrebbe comportare il riavvio ripetuto del nodo. Se lo stato del nodo passa dallo stato di pronto a quello di non pronto, metti in pausa la regolazione per poter recuperare dallo stato non funzionante.

Per mettere in pausa la sintonizzazione:

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

  2. Utilizza kubectl apply per aggiornare la risorsa.

Quando l'ottimizzazione del rendimento è in pausa, il controller dell'operatore di ottimizzazione del rendimento interrompe tutte le sue operazioni. La messa in pausa evita il rischio che le operazioni dell'operatore di ottimizzazione delle prestazioni confligano con le operazioni dell'operatore di Google Distributed Cloud.

Riferimento alla 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 CPU specifica le seguenti allocazioni di risorse:

  • 4 core della CPU (0-3) sono riservati per il sovraccarico del sistema Kubernetes.

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

  • Per impostazione predefinita, la memoria del nodo è suddivisa in pagine da 2 MiB anziché nelle pagine standard da 4 Ki.

  • 10 pagine di memoria di dimensioni pari a 1 GiB sono riservate all'utilizzo dal nodo NUMA 0.

  • Vengono riservate 5 pagine di memoria di 2 MiB per l'utilizzo da parte del nodo NUMA 1.

  • Topology Manager utilizza il criterio del massimo impegno 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 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 insieme di core della CPU da riservare per i demoni di sistema Kubernetes, come kubelet, il runtime del contenitore e il rilevatore di problemi del nodo. Questi core della CPU vengono utilizzati anche per i daemon di sistema del sistema operativo (OS), come sshd e udev.

Il campo cpu.reservedCPUs accetta un elenco di numeri di CPU o intervalli di numeri di CPU. Assicurati che l'elenco delle 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 applicazioni sensibili alle prestazioni. CPU Manager pianifica i container solo sulle CPU non riservate, in base alle classi di qualità del servizio (QoS) di Kubernetes. Per assicurarti 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 contenitore. Per la pianificazione dei pod garantita, devi specificare unità di CPU intere, non risorse CPU parziali (cpu: "0.5").
apiVersion: v1
kind: Pod
...
spec:
  containers:
  ...
    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "1"
  ...

Massimizzare le CPU isolate per i carichi di lavoro offre il miglior vantaggio in termini di prestazioni. Questo campo accetta un elenco di numeri di CPU o intervalli di numeri di CPU. Assicurati che l'elenco di CPU non si sovrapponga a quello 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 l'insieme di CPU isolate è idoneo o meno per il bilanciamento automatico del carico dei carichi di lavoro sulle CPU. Quando imposti questo campo su false, i carichi di lavoro devono assegnare esplicitamente ogni thread a una CPU specifica per distribuire il carico sulle CPU. Con le assegnazioni esplicite della CPU, ottieni il rendimento più prevedibile per i carichi di lavoro garantiti, ma aggiungi maggiore complessità ai carichi di lavoro.
cpu.globallyEnableIRQLoadBalancing Obbligatorio. Modificabile. Valore booleano. Valore predefinito: true. Questo campo specifica se attivare o meno il bilanciamento del carico delle richieste di interruzione (IRQ) per l'insieme di CPU isolate.

Configurazione della memoria

Proprietà Descrizione
defaultHugePageSize Facoltativo. Modificabile. Enumerazione: 1G o 2M. Questo campo definisce la dimensione predefinita delle pagine enormi nei parametri di avvio del kernel. Le pagine enormi vengono allocate all'avvio, prima che la memoria venga frammentata. È importante notare che l'impostazione della dimensione predefinita delle pagine enormi su 1 G rimuove dal nodo tutte le cartelle correlate di 2 M. Una dimensione predefinita delle pagine enormi di 1 G impedisce di configurare pagine enormi di 2 M 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 tuoi nodi prima di specificare hugepages. Non richiedere più pagine enormi del necessario e non riservare tutta la memoria per le pagine enormi. Anche i carichi di lavoro richiedono 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:"", 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 a quelle su un nodo di lavoro, il profilo di rendimento viene applicato a quel nodo. Se non specifichi un'etichetta chiave-valore nel tuo profilo, questa viene applicata a tutti i nodi worker del cluster.

Ad esempio, il seguente 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 del kubelet

Proprietà Descrizione
topologyManagerPolicy Facoltativo. Modificabile. Enumerazione: none, best-effort, restricted o single-numa-node. Valore predefinito: best-effort. Questo campo specifica il regolamento 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 ulteriori informazioni su come vengono assegnate le classi QoS, consulta Configurare la qualità del servizio per i pod.

Operazioni sul 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 del 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 (in formato data/ora). Ultima volta che la condizione è passata da uno stato all'altro. In genere, questa data indica quando è cambiata la condizione di base. Se l'ora non è nota, 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 in base al quale è stata impostata la condizione. Ad esempio, se metadata.generation è 12, ma status.condition[x].observedGeneration è 9, la condizione non è aggiornata rispetto allo stato corrente dell'istanza.
conditions.reason Obbligatorio. Stringa. Il motivo dell'ultima transizione di 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 è stato applicato correttamente il profilo di ottimizzazione.
reconcilingNodes Il numero di nodi selezionati (o selezionati in precedenza) in fase di riconciliazione con l'ultimo profilo di ottimizzazione da parte del nodeconfig-controller-manager DaemonSet.
selectedNodes Il numero di note selezionate. ovvero il numero di nodi che corrispondono al selettore di nodi per questa risorsa personalizzata PerformanceTuningProfile.

Passaggi successivi