Nota
- Questa esercitazione è disponibile in un ambiente di esercitazione pratica gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Usa ock-forge con Oracle Cloud Native Environment
Introduzione
Lo strumento Host Oracle Container per Kubernetes Image Builder (OCK Image Builder) crea le immagini Oracle Container Host for Kubernetes (OCK) utilizzate nelle distribuzioni di Oracle Cloud Native Environment (Oracle CNE). OCK Image Builder aiuta se l'immagine OCK predefinita utilizzata da Oracle CNE non soddisfa i requisiti richiesti:
- Layout di partizione diverso dall'immagine OCK standard.
- Pacchetti aggiuntivi o driver dispositivo mancanti.
OCK Image Builder è una raccolta di script shell, il principale è ock-forge
per generare un'immagine di formato qcow2 avviabile per creare i nodi cluster o un'immagine contenitore OSTree che Oracle CNE può utilizzare per aggiornare i nodi in un contenitore in esecuzione.
Obiettivi
In questo tutorial imparerai a:
- Installare, configurare e utilizzare
ock-forge
per creare un'immagine OCK personalizzata - Creare un cluster Oracle CNE utilizzando l'immagine OCK personalizzata
- Includere le modifiche
extraIgnitionInline:
nell'immagine OCK come valore predefinito per tutti i cluster creati o se utilizzati con un singolo cluster
Prerequisiti
-
Almeno un'istanza di Oracle Linux 9
-
Ogni sistema deve avere Oracle Linux installato e configurato con:
- Un account utente Oracle (utilizzato durante l'installazione) con accesso sudo
- SSH basato su chiave, noto anche come SSH senza password, tra gli host
- Un ambiente libvirt KVM funzionante.
Distribuire Oracle Cloud Native Environment
Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs
GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di esercitazione pratica.
-
Aprire un terminale sul Luna Desktop.
-
Duplica il progetto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Passare alla directory di lavoro.
cd linux-virt-labs/ocne2
-
Installare le raccolte richieste.
ansible-galaxy collection install -r requirements.yml
-
Aumenta le dimensioni del volume di avvio, installa libvirt e usa Oracle Linux 9.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ocne" type: "server" instance_ocpus: 8 instance_memory: 128 boot_volume_size_in_gbs: 256 ocne_type: "libvirt" install_ocne_rpm: true update_all: true os_version: "9" EOF
Nota: OCK Image Builder funziona meglio su Oracle Linux 9.
-
Implementa l'ambiente di laboratorio.
Eseguire l'installazione utilizzando la configurazione personalizzata.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
L'ambiente di laboratorio gratuito richiede la variabile aggiuntiva
local_python_interpreter
, che impostaansible_python_interpreter
per le riproduzioni in esecuzione su localhost. Questa variabile è necessaria perché l'ambiente installa il pacchetto RPM per l'SDK Oracle Cloud Infrastructure per Python, situato sotto i moduli python3.6.La forma di distribuzione predefinita utilizza la CPU AMD e Oracle Linux 8. Per utilizzare una CPU Intel o Oracle Linux 9, aggiungere
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando di distribuzione.Importante: attendere la corretta esecuzione della guida e raggiungere il task di sospensione. In questa fase della guida, l'installazione di Oracle Cloud Native Environment è stata completata e le istanze sono pronte. Prendi nota della riproduzione precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce e qualsiasi altra informazione di distribuzione necessaria durante l'esecuzione del laboratorio.
Installa host Oracle Container per Kubernetes Builder
Oracle Container Host for Kubernetes Builder (ock-forge
) è uno strumento della riga di comando per la creazione di immagini basate su OSTree Oracle Container Host for Kubernetes (OCK). ock-forge
può generare immagini di macchine virtuali in formato qcow2, immagini di dischi raw o scrivendo direttamente su un dispositivo a blocchi esistente. Questa esercitazione descrive come creare e utilizzare un'immagine .qcow2 personalizzata.
-
Aprire un terminale e connettersi tramite SSH all'istanza ocne.
ssh oracle@<ip_address_of_node>
-
Installare Git e Podman.
sudo dnf install -y git container-tools
Il programma
ock-forge
richiede Podman e utilizza Git per duplicare i repositoryock-forge
e Oracle Container Host for Kubernetes Configuration(OCK Configuration) da GitHub. -
Clonare il repository
ock-forge
.git clone https://github.com/oracle-cne/ock-forge
-
Clonare il repository ConfigurazioneOCK.
ock-forge
utilizza la specifica del file della struttura di configurazione OCK per OCK per creare un'immagine.cd ock-forge/ git clone https://github.com/oracle-cne/ock
Creare un'immagine OCK
Successivamente, creerai un dispositivo a blocchi di rete, aggiungi alcuni pacchetti Linux aggiuntivi all'immagine OCK che creerai e quindi utilizzerai ock-forge
per eseguire tutto il lavoro necessario per generare un'immagine OCK avviabile.
Attivazione di un dispositivo a blocchi di rete
Il dispositivo NBD (Network Block Device) viene utilizzato da ock-forge
per eseguire il MOUNT dell'immagine .qcow2 generata in modo che Oracle CNE possa creare un cluster Kubernetes.
-
Caricare il modulo kernel NBD e assegnarvi otto partizioni.
sudo modprobe nbd max_part=8
-
Confermare la presenza di dispositivi NBD.
ls -l /dev/nbd*
Output di esempio:
[oracle@ocne ~]$ ls -l /dev/nbd* brw-rw----. 1 root disk 43, 0 Jan 15 13:55 /dev/nbd0 brw-rw----. 1 root disk 43, 16 Jan 15 13:55 /dev/nbd1 brw-rw----. 1 root disk 43, 160 Jan 15 13:55 /dev/nbd10 brw-rw----. 1 root disk 43, 176 Jan 15 13:55 /dev/nbd11 brw-rw----. 1 root disk 43, 192 Jan 15 13:55 /dev/nbd12 brw-rw----. 1 root disk 43, 208 Jan 15 13:55 /dev/nbd13 brw-rw----. 1 root disk 43, 224 Jan 15 13:55 /dev/nbd14 brw-rw----. 1 root disk 43, 240 Jan 15 13:55 /dev/nbd15 brw-rw----. 1 root disk 43, 32 Jan 15 13:55 /dev/nbd2 brw-rw----. 1 root disk 43, 48 Jan 15 13:55 /dev/nbd3 brw-rw----. 1 root disk 43, 64 Jan 15 13:55 /dev/nbd4 brw-rw----. 1 root disk 43, 80 Jan 15 13:55 /dev/nbd5 brw-rw----. 1 root disk 43, 96 Jan 15 13:55 /dev/nbd6 brw-rw----. 1 root disk 43, 112 Jan 15 13:55 /dev/nbd7 brw-rw----. 1 root disk 43, 128 Jan 15 13:55 /dev/nbd8 brw-rw----. 1 root disk 43, 144 Jan 15 13:55 /dev/nbd9
Personalizzare la build dell'immagine OCK
È possibile definire pacchetti Linux aggiuntivi da aggiungere all'immagine OCK creata da ock-forge
. La specifica del file della struttura utilizzata da OCK-forge si trova nel repository GitHub Configurazione BLOC.
-
Creare una directory per il file di personalizzazione.
mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
-
Creare un file di personalizzazione per installare i pacchetti Vim ed Emacs.
cat << EOF | tee /home/oracle/ock-forge/ock/configs/config-1.31/custom/myconfig.yaml > /dev/null packages: - vim - emacs EOF
-
Includere il file di personalizzazione nel file
manifest.yaml
.Nota: è possibile aggiungere eventuali personalizzazioni aggiuntive al file di configurazione Kubernetes per la build Kubernetes di destinazione.
sed -i '23i - custom/myconfig.yaml' /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
-
Verificare che il nuovo file di personalizzazione venga visualizzato nella sequenza di generazione dell'immagine OCK definita nel file
manifest.yaml
.cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
Output di esempio:
[oracle@ocne ock-forge]$ cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml ref: ock automatic-version-prefix: "1.31" documentation: false boot-location: modules machineid-compat: false ... ... include: - base.yaml - ux.yaml - ocne.yaml - removals.yaml - config.yaml - custom/myconfig.yaml ... ... modules: enable: - container-tools:ol8 - virt:kvm_utils3
Creare l'immagine OCK
-
Usare
ock-forge
per creare l'immagine qcow2.sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P
dove:
-d
: il percorso di un dispositivo a blocchi esistente.-D
: il percorso del file immagine del disco.-i
: un nome di immagine contenitore completamente qualificato, inclusa una tag.-C
: una directory contenente un set di configurazioni rpm-ostree.-c
: una directory contenente la configurazione rpm-ostree da creare.-P
: se utilizzato, questo flag fa sì che il dispositivo a blocchi specificato da -d cancelli la tabella delle partizioni e la ripopoli con la geometria predefinita.
-
Premere Invio per accettare il registro contenitore predefinito (
container-registry.oracle.com/ock-builder:latest
).Nota: il completamento del processo di creazione richiede circa 30 minuti.
Output di esempio:
[oracle@ocne ock-forge]$ sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P + [[ -z '' ]] + [[ -z '' ]] + IGNITION_PROVIDER=qemu + [[ -n out/1.31/boot.qcow2 ]] ++ realpath -m out/1.31/boot.qcow2 + DISK=/home/oracle/ock-forge/out/1.31/boot.qcow2 ... ... + podman image exists ock-builder:latest + podman pull ock-builder:latest ? Please select an image: ▸ container-registry.oracle.com/ock-builder:latest docker.io/library/ock-builder:latest
Modificare l'immagine OCK
Al termine del processo di creazione dell'immagine OCK, è possibile creare utenti, creare file, configurare la rete, definire unità systemd e molto altro ancora nel file qcow2 utilizzando i file YAML di configurazione Butane conformi allo schema di Butane. Per ulteriori informazioni, fare riferimento alla documentazione Butane a monte.
Successivamente, creerai un file YAML conforme al butano per creare un file di testo e impostare un nuovo utente.
Uso di una configurazione predefinita
È possibile applicare le personalizzazioni in uno dei due modi indicati di seguito.
- Utilizzarla come impostazione predefinita per tutti i cluster Oracle CNE creati.
- Per applicare una configurazione personalizzata a un singolo cluster Oracle CNE.
I passaggi seguenti illustrano come rendere la personalizzazione predefinita per tutti i cluster Oracle CNE creati.
-
Creare la directory
.ocne
.mkdir /home/oracle/.ocne
-
Aggiungere il file
defaults.yaml
.cat << EOF | tee /home/oracle/.ocne/defaults.yaml > /dev/null extraIgnitionInline: | variant: fcos version: 1.5.0 storage: files: - path: /etc/myfile.txt contents: inline: Hello, world! mode: 0644 user: id: 1000 group: id: 1001 EOF
Dove (per ulteriori dettagli, vedere la documentazione a monte):
variant:
: deve essere impostato sufcos
per essere utilizzato con Oracle CNE.version:
: deve essere impostato su1.5.0
per essere utilizzato con Oracle CNE.path:
:/etcmyfile.txt
(il percorso e il nome file per il file creato)mode:
: impostare su:644
(è possibile leggere e scrivere solo gli altri utenti possono leggerlo)user:
&group:
: assegnare la proprietà del file all'UID e al GID specificati. In questo esempio viene impostato su UID e GIDocne
-
Confermare il file creato.
cat /home/oracle/.ocne/defaults.yaml
Eseguire il test della nuova immagine OCK creata da OCK-forge.
-
Copiare l'immagine .qcow2 nell'installazione di Oracle CNE.
sudo cp /home/oracle/ock-forge/out/1.31/boot.qcow2 /var/lib/libvirt/images/boot.qcow2-1.31
-
Confermare la copia dell'immagine .qcow2.
sudo ls /var/lib/libvirt/images
-
Avviare Oracle CNE utilizzando l'immagine .qcow2.
ocne cluster start --version 1.31 -n 1 -w 1 -u false
Output di esempio:
[oracle@ocne ock-forge]$ ocne cluster start --version 1.31 -n 1 -w 1 -u false INFO[2025-04-14T13:47:36Z] Creating new Kubernetes cluster with version 1.31 named ocne INFO[2025-04-14T13:48:34Z] Waiting for the Kubernetes cluster to be ready: ok INFO[2025-04-14T13:48:35Z] Installing core-dns into kube-system: ok INFO[2025-04-14T13:48:36Z] Installing kube-proxy into kube-system: ok INFO[2025-04-14T13:48:39Z] Installing kubernetes-gateway-api-crds into kube-system: ok INFO[2025-04-14T13:48:39Z] Installing flannel into kube-flannel: ok INFO[2025-04-14T13:48:40Z] Installing ui into ocne-system: ok INFO[2025-04-14T13:48:41Z] Installing ocne-catalog into ocne-system: ok INFO[2025-04-14T13:48:41Z] Kubernetes cluster was created successfully INFO[2025-04-14T13:48:41Z] Post install information: To access the cluster from the VM host: copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there To access the cluster from this system: use /home/oracle/.kube/kubeconfig.ocne.local To access the UI, first do kubectl port-forward to allow the browser to access the UI. Run the following command, then access the UI from the browser using via https://localhost:8443 kubectl port-forward -n ocne-system service/ui 8443:443 Run the following command to create an authentication token to access the UI: kubectl create token ui -n ocne-system
-
Confermare l'esistenza del cluster.
ocne cluster list
-
Impostare la variabile di ambiente
kubeconfig
per il nuovo cluster.export KUBECONFIG=$(ocne cluster show -C ocne)
-
Ottenere una lista dei nodi del cluster.
kubectl get nodes
-
Connettersi al nodo Lavoratore.
ocne cluster console --direct --node ocne-worker-1
-
Verificare che il file
myfile.txt
esista.ls -lsa /etc/myfile.txt
Output di esempio:
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:51 /etc/myfile.txt
-
Confermare l'installazione del pacchetto
emacs
.ls /bin/emacs
Output di esempio:
sh-4.4# ls /bin/emacs /bin/emacs
-
Digitare
exit
per uscire dal nodoocne-worker-1
. -
Connettersi al nodo Piano di controllo.
ocne cluster console --direct --node ocne-control-plane-1
-
Verificare che il file
myfile.txt
esista.ls /etc/myfile.txt
Output di esempio:
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:50 /etc/myfile.txt
-
Confermare l'installazione del pacchetto
emacs
.ls /bin/emacs
Output di esempio:
sh-4.4# ls /bin/emacs /bin/emacs
Confermare di aver personalizzato i nodi cluster Oracle CNE predefiniti aggiungendo un file di testo (
/etc/myfile.txt
) e un pacchetto (emacs
) non presenti per impostazione predefinita. -
Digitare
exit
per uscire dal nodoocne-control-plane-1
.
Rimuovi cluster
-
Elimina il cluster.
ocne cluster delete
-
Eliminare il file
defaults.yaml
.rm /home/oracle/.ocne/defaults.yaml
Aggiornare la configurazione di un singolo cluster
Successivamente, verrà creato e applicato un file di personalizzazione a un singolo cluster Oracle CNE.
-
Creare un file di configurazione.
cat << EOF | tee /home/oracle/myconfig.yaml > /dev/null provider: libvirt headless: true name: ocne kubernetesVersion: 1.31 controlPlaneNodes: 1 workerNodes: 1 extraIgnitionInline: | variant: fcos version: 1.5.0 storage: files: - path: /etc/myfile.txt contents: inline: Hello, world! mode: 0644 user: id: 1000 group: id: 1001 EOF
-
Confermare il file creato.
cat /home/oracle/myconfig.yaml
-
Avviare Oracle CNE utilizzando l'immagine .qcow2.
ocne cluster start -u false -c /home/oracle/myconfig.yaml
Output di esempio:
[oracle@ocne ~]$ ocne cluster start -u false -c /home/oracle/myconfig.yaml INFO[2025-04-15T18:07:00Z] Creating new Kubernetes cluster with version 1.31 named ocne INFO[2025-04-15T18:08:14Z] Waiting for the Kubernetes cluster to be ready: ok INFO[2025-04-15T18:08:16Z] Installing core-dns into kube-system: ok INFO[2025-04-15T18:08:16Z] Installing kube-proxy into kube-system: ok INFO[2025-04-15T18:08:19Z] Installing kubernetes-gateway-api-crds into kube-system: ok INFO[2025-04-15T18:08:20Z] Installing flannel into kube-flannel: ok INFO[2025-04-15T18:08:20Z] Installing ocne-catalog into ocne-system: ok INFO[2025-04-15T18:08:20Z] Kubernetes cluster was created successfully INFO[2025-04-15T18:08:20Z] Post install information: To access the cluster from the VM host: copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there To access the cluster from this system: use /home/oracle/.kube/kubeconfig.ocne.local
-
Impostare la variabile di ambiente
kubeconfig
per il nuovo cluster.export KUBECONFIG=$(ocne cluster show -C ocne)
-
Ottenere una lista dei nodi del cluster.
kubectl get nodes
-
Connettersi al nodo Lavoratore.
ocne cluster console --direct --node ocne-worker-1
-
Verificare che il file
myfile.txt
esista.ls -lsa /etc/myfile.txt
-
Confermare l'installazione del pacchetto
emacs
.ls /bin/emacs
-
Digitare
exit
per uscire dal nodoocne-worker-1
. -
Connettersi al nodo Piano di controllo.
ocne cluster console --direct --node ocne-control-plane-1
-
Verificare che il file
myfile.txt
esista.ls -lsa /etc/myfile.txt
-
Confermare l'installazione del pacchetto
emacs
.ls /bin/emacs
Confermare di aver personalizzato i nodi cluster Oracle CNE predefiniti aggiungendo un file di testo (
/etc/myfile.txt
) e un pacchetto (emacs
) non presenti per impostazione predefinita. -
Digitare
exit
per uscire dal nodoocne-control-plane-1
.
Rimuovi cluster
-
Elimina il cluster.
ocne cluster delete
Passi successivi
La personalizzazione dei file immagine OCK Oracle CNE consente di modificare l'ambiente utilizzato sui nodi cluster Kubernetes Oracle CNE. Continua a espandere le tue conoscenze in Kubernetes e Oracle Cloud Native Environment guardando gli altri tutorial pubblicati su Oracle Linux Training Station.
Collegamenti correlati
- Documentazione di Oracle Cloud Native Environment
- Oracle Cloud Native Environment Track
- Stazione di formazione su Oracle Linux
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Use ock-forge with Oracle Cloud Native Environment
G33067-01
Copyright ©2025, Oracle and/or its affiliates.