Abilitazione dei gruppi di lavoro v2 nei nodi di lavoro OL8 mediante immagini personalizzate
Scopri come abilitare i cgroup v2 sui nodi di lavoro che eseguono Oracle Linux 8 (OL8) nei cluster creati con Kubernetes Engine (OKE), utilizzando immagini personalizzate.
Nelle immagini OKE OL8 con numero di build uguale o superiore a 1367, cgroups v2 è abilitato per impostazione predefinita. Tuttavia, nelle immagini OKE OL8 con un numero di build inferiore a 1367 (e nelle immagini della piattaforma OL8), cgroups v1 è abilitato per impostazione predefinita. Questo argomento descrive come abilitare i cgroup v2 nel kernel Linux delle istanze che ospitano nodi di lavoro che utilizzano immagini OKE OL8 con un numero di build inferiore a 1367 o che utilizzano immagini della piattaforma OL8.
Control Groups (cgroup) è una funzione del kernel Linux che fornisce un meccanismo per la gestione e il controllo dell'allocazione delle risorse per processi o gruppi di processi. La funzione cgroups consente agli amministratori di sistema e agli sviluppatori di allocare e limitare varie risorse di sistema (come CPU, memoria, I/O, larghezza di banda di rete) a processi o set di processi specifici. Cgroups offre un modo potente e flessibile per gestire l'utilizzo delle risorse, garantendo che i processi ricevano le risorse necessarie, impedendo loro di consumare quantità eccessive e influenzando le prestazioni di altri processi o del sistema nel suo complesso. Creando e organizzando i processi in gruppi di controllo, gli amministratori possono applicare i vincoli delle risorse, assegnare priorità ai task e mantenere la stabilità del sistema.
Oracle Linux fornisce due tipi di gruppi di controllo:
- Gruppi di controlli versione 1 (cgroups v1): questi gruppi forniscono una gerarchia di controller per risorsa. Ogni risorsa, ad esempio CPU, memoria, I/O e così via, ha la propria gerarchia di gruppi di controllo. Uno svantaggio dei cgroups v1 è la difficoltà di coordinare l'uso delle risorse tra gruppi che potrebbero appartenere a gerarchie di processi diverse.
- Gruppi di controllo versione 2 (cgroups v2): questi gruppi forniscono un'unica gerarchia di gruppi di controllo su cui vengono attivati tutti i controller delle risorse. In questa gerarchia è possibile coordinare l'uso delle risorse tra controller di risorse diversi
Per ulteriori informazioni sui gruppi di controllo e su Oracle Linux, vedere Managing Resources Using Control Groups nella documentazione Oracle Linux.
Entrambi i cgroups v1 e cgroups v2 sono presenti in Oracle Linux 8 (e versioni successive).
Nelle immagini OKE OL8 con numero di build uguale o superiore a 1367, cgroups v2 è abilitato per impostazione predefinita. Nelle immagini OKE OL8 con un numero di build inferiore a 1367 (e nelle immagini della piattaforma OL8), cgroups v1 è abilitato per impostazione predefinita. Pertanto, quando si specifica un'immagine OL8 OKE con un numero di build inferiore a 1367 (o un'immagine della piattaforma OL8) per un pool di nodi, i cgroup v1 vengono abilitati per impostazione predefinita nei kernel Linux delle istanze di computazione che ospitano i nodi nel pool di nodi.
Tuttavia, è possibile abilitare i cgroup v2 quando si utilizzano immagini OKE OL8 con un numero di build inferiore a 1367 (e immagini della piattaforma OL8).
Ad un livello elevato, il processo per abilitare cgroups v2 è il seguente:
- Passo 1: creare un'istanza di computazione che esegua l'immagine OL8 richiesta e abilitare i cgroup v2.
- Passo 2: abilitare cgroups v2 nell'istanza di computazione.
- Passo 3: creare un'immagine personalizzata in base all'istanza di computazione in cui cgroups v2 è abilitato.
- Passo 4: aggiungere nodi di lavoro in cui è in esecuzione OL8 con cgroups v2 abilitati a un cluster. Il modo in cui si aggiungono i nodi abilitati per v2 di cgroup a un cluster dipende dal fatto che si desideri aggiungere i nodi come nodi gestiti o come nodi autogestiti. Per i nodi gestiti, si definisce un pool di nodi gestiti. Per i nodi autogestiti, aggiungi le istanze di computazione come nodi di lavoro.
Passo 1: creare un'istanza di computazione in cui è in esecuzione l'immagine OL8 richiesta e abilitare i cgroup v2
In questo passo, utilizzi il servizio di computazione per creare un'istanza di computazione in cui è in esecuzione la release OL8 che desideri sui nodi di lavoro nel cluster Kubernetes.
- Decidere quale release OL8 (e se si desidera selezionare un'immagine OKE, quale versione Kubernetes) si desidera sui nodi di lavoro.
Oracle fornisce una serie di immagini OKE e di piattaforme OL8 diverse.
-
Seguire le istruzioni riportate in Creazione di un'istanza nella documentazione del servizio di computazione per creare una nuova istanza di computazione e selezionare un'immagine di piattaforma appropriata (selezionando un'immagine di piattaforma o specificando l'OCID di un'immagine OKE).
Questa è l'istanza di computazione che verrà utilizzata come base di una nuova immagine personalizzata.
Passo 2: abilitare i cgroup v2 nell'istanza di computazione
In questo passo, abiliti i cgroup v2 nell'istanza di computazione creata nel passo precedente. Le istruzioni qui costituiscono un comodo riepilogo di Enabling cgroups v2 nella documentazione di OL8.
- In una finestra di terminale, connettersi all'istanza di computazione e configurare tutte le voci di boot del kernel per eseguire il MOUNT dei cgroup v2 per impostazione predefinita, immettendo:
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1" - Riavviare l'istanza immettendo:
sudo reboot - Confermare che cgroups v2 sia ora attivato immettendo:
sudo mount -l | grep cgroup - Se si desidera, controllare il contenuto della directory
/sys/fs/cgroup(il gruppo di controllo root), immettendo:ls -l /sys/fs/cgroup/Per cgroups v2, i file nella directory devono avere prefissi all'inizio dei loro nomi di file (ad esempio
cgroup.*,cpu.*,memory.*).
Passo 3: creare un'immagine personalizzata in base all'istanza di computazione in cui cgroups v2 è abilitato
In questo passo, puoi utilizzare il servizio di computazione per creare un'immagine personalizzata dall'istanza di computazione abilitata per cgroups v2 nel passo precedente.
- Arrestare l'istanza abilitata per cgroups v2 immettendo:
sudo shutdown -h now - Seguire le istruzioni riportate in Gestione di immagini personalizzate nella documentazione del servizio di computazione per creare un'immagine personalizzata basata sull'istanza di computazione.
- Prendere nota dell'OCID dell'immagine personalizzata creata.
Passo 4: aggiungere nodi di lavoro in cui è in esecuzione OL8 con cgroups v2 abilitati a un cluster
In questo passo, è possibile utilizzare l'immagine personalizzata creata nel passo precedente per aggiungere nodi di lavoro in cui è in esecuzione OL8 con cgroups v2 abilitati a un cluster Kubernetes.
Tenere presente che esistono istruzioni diverse da seguire, a seconda che si desideri abilitare i cgroup v2 sui nodi gestiti o sui nodi autogestiti. Per i nodi gestiti, si definisce un pool di nodi gestiti. Per i nodi autogestiti, aggiungi le istanze di computazione come nodi di lavoro.
Tenere presente che è necessario utilizzare l'interfaccia CLI per creare nodi gestiti in base a immagini personalizzate.
Aggiunta di nodi gestiti in cui è in esecuzione OL8 con cgroups v2 abilitato
Per aggiungere nodi gestiti in cui è in esecuzione OL8 con cgroups v2 abilitati a un cluster esistente, effettuare le operazioni riportate di seguito.
- Aprire un prompt dei comandi e utilizzare il comando oci ce node-pool create per creare un nuovo pool di nodi.
- Oltre ai parametri obbligatori richiesti dal comando, includere il parametro
--node-image-ide specificare l'OCID dell'immagine personalizzata creata al Passo 3: creare un'immagine personalizzata in base all'istanza di computazione in cui è abilitato cgroups v2.Ad esempio, è possibile immettere il comando seguente:
oci ce node-pool create \ --cluster-id ocid1.cluster.oc1.iad.aaaa______m4w \ --name my-nodepool \ --node-image-id ocid1.image.oc1.iad.aaaa______zpq \ --compartment-id ocid1.tenancy.oc1..aaa______q4a \ --kubernetes-version v1.29.1 \ --node-shape VM.Standard2.1 \ --placement-configs "[{\"availabilityDomain\":\"PKGK:US-ASHBURN-AD-1\", \"subnetId\":\"ocid1.subnet.oc1.iad.aaaa______kfa\"}]" \ --size 3 \ --region us-ashburn-1
Aggiunta di nodi autogestiti in cui è in esecuzione OL8 con cgroups v2 abilitato
Prima di creare un nodo autogestito:
- Verificare che il cluster a cui si desidera aggiungere il nodo autogestito sia configurato in modo appropriato per i nodi autogestiti. Vedere Requisiti del cluster.
- Confermare che un gruppo dinamico e un criterio IAM esistono già per consentire all'istanza di computazione che ospita il nodo autogestito di unirsi a un cluster avanzato creato con Kubernetes Engine. Vedere Creazione di un gruppo dinamico e di un criterio per i nodi autogestiti.
- Creare uno script di inizializzazione cloud contenente l'endpoint privato dell'API Kubernetes e il certificato CA con codifica base64 del cluster avanzato a cui si desidera aggiungere il nodo autogestito. Vedere Creazione di script di inizializzazione cloud per nodi autogestiti.
Uso della console
- Creare una nuova istanza di computazione per ospitare il nodo autogestito:
- Apri il menu di navigazione e seleziona Computazione. In Computazione, selezionare Istanze.
- Seguire le istruzioni riportate nella documentazione del servizio di computazione per creare una nuova istanza di computazione. Tenere presente che devono esistere criteri appropriati per consentire alla nuova istanza di computazione di aderire al cluster avanzato. Vedere Creazione di un gruppo dinamico e di un criterio per i nodi autogestiti.
- Nella sezione Immagine e forma, selezionare Modifica immagine.
- Selezionare Immagini personali, selezionare l'opzione OCID immagine, quindi immettere l'OCID dell'immagine personalizzata creata al Passo 3: creare un'immagine personalizzata in base all'istanza di computazione in cui cgroups v2 è abilitato.
- Selezionare Opzioni avanzate e, nella sezione Gestione, selezionare l'opzione Incolla script di inizializzazione cloud.
- Copiare e incollare lo script di inizializzazione cloud per i nodi autogestiti creati in precedenza nel campo Script di inizializzazione cloud.
- Selezionare Crea per creare l'istanza di computazione in cui ospitare il nodo autogestito.
Quando viene creata, l'istanza di computazione viene aggiunta come nodo autogestito al cluster con l'endpoint API Kubernetes specificato nello script di inizializzazione cloud.
- (Facoltativo) Verificare che il nodo autogestito sia stato aggiunto al cluster Kubernetes e che le etichette siano state aggiunte al nodo e impostate come previsto, seguendo le istruzioni riportate in Creazione di nodi autogestiti.
Uso dell'interfaccia CLI
- Aprire un prompt dei comandi e immettere il comando
oci Compute instance launche i parametri necessari per creare un nodo autogestito. - Oltre ai parametri obbligatori richiesti dal comando:
- Includere il parametro
--image-ide specificare l'OCID dell'immagine personalizzata creata al Passo 3: creare un'immagine personalizzata in base all'istanza di computazione in cui è abilitato cgroups v2. - Includere il parametro
--user-data-filee specificare lo script di inizializzazione cloud per i nodi autogestiti creati in precedenza.
Ad esempio, è possibile immettere il comando seguente:
oci compute instance launch \ --availability-domain zkJl:PHX-AD-1 \ --compartment-id ocid1.compartment.oc1..aaaaaaa______neoq \ --shape VM.Standard2.2 \ --subnet-id ocid1.subnet.oc1.phx.aaaaaaa______hzia \ --user-data-file my-selfmgd-cgroupsv2-cloud-init.yaml \ --image-id ocid1.image.oc1.phx.aaaaaaa______slcrQuando viene creata, l'istanza di computazione viene aggiunta come nodo autogestito al cluster con l'endpoint API Kubernetes specificato nello script di inizializzazione cloud.
- Includere il parametro