Note:
- Este tutorial está disponible en un entorno de prácticas gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Uso de ock-forge con Oracle Cloud Native Environment
Introducción
La herramienta Creador de imágenes de Oracle Container Host for Kubernetes (OCK Image Builder) crea las imágenes de Oracle Container Host for Kubernetes (OCK) utilizadas en los despliegues de Oracle Cloud Native Environment (CNE de Oracle). El creador de imágenes de OCK ayuda si la imagen de OCK por defecto utilizada por Oracle CNE no cumple sus requisitos como la necesidad:
- Diseño de partición diferente de la imagen OCK estándar.
- Paquetes adicionales o controladores de dispositivos faltantes.
El creador de imágenes de OCK es una recopilación de scripts de shell, el principal es ock-forge
para generar una imagen de formato qcow2 de inicio para crear los nodos de cluster o una imagen de contenedor OSTree que Oracle CNE puede utilizar para actualizar nodos en un contenedor en ejecución.
Objetivos
En este tutorial aprenderá a:
- Instalar, configurar y utilizar
ock-forge
para crear una imagen de OCK personalizada - Crear un cluster de CNE de Oracle mediante la imagen de OCK personalizada
- Incluir cambios de
extraIgnitionInline:
en la imagen de OCK como valor por defecto para todos los clusters creados o cuando se utilizan con un cluster individual
Requisitos
-
Mínimo de una instancia de Oracle Linux 9
-
Cada sistema debe tener Oracle Linux instalado y configurado con:
- Cuenta de usuario de Oracle (utilizada durante la instalación) con acceso sudo
- SSH basado en claves, también conocido como SSH sin contraseña, entre los hosts
- Un entorno libvirt de KVM en funcionamiento.
Despliegue de Oracle Cloud Native Environment
Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs
GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.
-
Abra un terminal en el escritorio Luna.
-
Clone el proyecto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Cambie al directorio de trabajo.
cd linux-virt-labs/ocne2
-
Instale las recopilaciones necesarias.
ansible-galaxy collection install -r requirements.yml
-
Aumente el tamaño del volumen de inicio, instale libvirt y utilice 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: El creador de imágenes de OCK funciona mejor en Oracle Linux 9.
-
Despliegue el entorno de prácticas.
Instalar con la configuración personalizada.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
El entorno de prácticas gratuito necesita la variable adicional
local_python_interpreter
, que defineansible_python_interpreter
para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete de RPM para el SDK para Python de Oracle Cloud Infrastructure, ubicado en los módulos python3.6.La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU de Intel u Oracle Linux 9, agregue
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando de despliegue.Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, se ha completado la instalación de Oracle Cloud Native Environment y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria durante la ejecución del laboratorio.
Instalar el host de contenedor de Oracle para el creador de Kubernetes
Oracle Container Host for Kubernetes Builder (ock-forge
) is a command-line tool for building bootable media Oracle Container Host for Kubernetes (OCK) OSTree-based images. ock-forge
can generate virtual machine images in qcow2 format, raw disk images, or by writing directly to an existing block device. En este tutorial se muestra cómo crear y utilizar una imagen .qcow2 personalizada.
-
Abra un terminal y conéctese mediante SSH a la instancia de ocne.
ssh oracle@<ip_address_of_node>
-
Instale Git y Podman.
sudo dnf install -y git container-tools
El programa
ock-forge
requiere Podman y utiliza Git para clonar los repositoriosock-forge
y Configuración de host de contenedor de Oracle para Kubernetes (configuración de OCK) de GitHub. -
Clone el repositorio
ock-forge
.git clone https://github.com/oracle-cne/ock-forge
-
Clone el repositorio de OCK Configuration.
ock-forge
utiliza la especificación de archivo de árbol de configuración de OCK para OCK para crear una imagen.cd ock-forge/ git clone https://github.com/oracle-cne/ock
Creación de una Imagen OCK
A continuación, creará un dispositivo de bloques de red, agregará algunos paquetes de Linux adicionales a la imagen de OCK que creará y, a continuación, utilizará ock-forge
para realizar todo el trabajo necesario para generar una imagen de OCK de inicio.
Activación de un dispositivo de bloque de red
ock-forge
utiliza el dispositivo de bloque de red (NBD) para montar la imagen .qcow2 generada para que Oracle CNE pueda crear un cluster de Kubernetes.
-
Cargue el módulo de núcleo NBD y asígnele ocho particiones.
sudo modprobe nbd max_part=8
-
Confirme que los dispositivos NBD estén presentes.
ls -l /dev/nbd*
Salida de ejemplo:
[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
Personalización de la Creación de Imágenes de OCK
Puede definir paquetes de Linux adicionales para agregarlos a la imagen de OCK creada por ock-forge
. La especificación de archivo de árbol que utiliza OCK-forge está en el repositorio GitHub OCK Configuration.
-
Cree un directorio para el archivo de personalización.
mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
-
Cree un archivo de personalización para instalar los paquetes Vim y Emacs.
cat << EOF | tee /home/oracle/ock-forge/ock/configs/config-1.31/custom/myconfig.yaml > /dev/null packages: - vim - emacs EOF
-
Incluya el archivo de personalización en el archivo
manifest.yaml
.Nota: Puede agregar personalizaciones adicionales al archivo de configuración de Kubernetes para la creación de Kubernetes de destino.
sed -i '23i - custom/myconfig.yaml' /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
-
Confirme que el nuevo archivo de personalización aparece en la secuencia de creación de imagen de OCK definida en el archivo
manifest.yaml
.cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
Salida de ejemplo:
[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
Creación de la Imagen OCK
-
Utilice
ock-forge
para crear la imagen 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
Dónde:
-d
: ruta de acceso a un dispositivo de bloques existente.-D
: ruta al archivo de imagen de disco.-i
: nombre de imagen de contenedor totalmente cualificado, incluida una etiqueta.-C
: directorio que contiene un juego de configuraciones rpm-ostree.-c
: directorio que contiene la configuración rpm-ostree que se va a crear.-P
: si se utiliza, este indicador hace que el dispositivo de bloques especificado por -d borre su tabla de particiones y la vuelva a rellenar con la geometría por defecto.
-
Pulse Intro para aceptar el registro de contenedor por defecto (
container-registry.oracle.com/ock-builder:latest
).Nota: El proceso de creación tarda aproximadamente 30 minutos en completarse.
Salida de ejemplo:
[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
Modificar la imagen de OCK
Una vez finalizado el proceso de creación de la imagen de OCK, es posible crear usuarios, crear archivos, configurar la red, definir unidades systemd y mucho más en el archivo qcow2 mediante los archivos YAML de configuración de Butane que cumplen con el esquema de Butane. Para obtener más información, consulte la documentación de Butane ascendente.
A continuación, creará un archivo YAML compatible con Butane para crear un archivo de texto y configurar un nuevo usuario.
Uso de una configuración predeterminada
Puede aplicar personalizaciones de una de las dos formas siguientes:
- Utilícelo como valor por defecto para todos los clusters de CNE de Oracle que cree.
- Para aplicar una configuración personalizada a un único cluster de CNE de Oracle.
En los siguientes pasos se muestra cómo convertir la personalización en el valor por defecto para todos los clusters de CNE de Oracle que cree.
-
Convierta el directorio
.ocne
.mkdir /home/oracle/.ocne
-
Agregue el archivo
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
Dónde (consulte la documentación upstream para obtener más información):
variant:
: se debe definir enfcos
para su uso con Oracle CNEversion:
: se debe definir en1.5.0
para su uso con Oracle CNEpath:
:/etcmyfile.txt
(la ruta de acceso y el nombre de archivo para el archivo creado)mode:
: se define en644
(ya ha leído y escrito que todos los demás solo pueden leerlo)user:
ygroup:
: asigne la propiedad del archivo al UID y el GID especificados. En este ejemplo se define en el UID y el GIDocne
-
Confirme el archivo creado.
cat /home/oracle/.ocne/defaults.yaml
Pruebe la nueva imagen de OCK creada por OCK-forge.
-
Copie la imagen .qcow2 en la instalación de CNE de Oracle.
sudo cp /home/oracle/ock-forge/out/1.31/boot.qcow2 /var/lib/libvirt/images/boot.qcow2-1.31
-
Confirme la imagen .qcow2 copiada.
sudo ls /var/lib/libvirt/images
-
Inicie Oracle CNE mediante la imagen .qcow2.
ocne cluster start --version 1.31 -n 1 -w 1 -u false
Salida de ejemplo:
[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
-
Confirme que el cluster existe.
ocne cluster list
-
Defina la variable de entorno
kubeconfig
para el nuevo cluster.export KUBECONFIG=$(ocne cluster show -C ocne)
-
Obtenga una lista de sus nodos de cluster.
kubectl get nodes
-
Conéctese al nodo Worker.
ocne cluster console --direct --node ocne-worker-1
-
Confirme que existe el archivo
myfile.txt
.ls -lsa /etc/myfile.txt
Salida de ejemplo:
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:51 /etc/myfile.txt
-
Confirme el paquete
emacs
instalado.ls /bin/emacs
Salida de ejemplo:
sh-4.4# ls /bin/emacs /bin/emacs
-
Escriba
exit
para salir del nodoocne-worker-1
. -
Conéctese al nodo Plano de control.
ocne cluster console --direct --node ocne-control-plane-1
-
Confirme que existe el archivo
myfile.txt
.ls /etc/myfile.txt
Salida de ejemplo:
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:50 /etc/myfile.txt
-
Confirme el paquete
emacs
instalado.ls /bin/emacs
Salida de ejemplo:
sh-4.4# ls /bin/emacs /bin/emacs
Confirmar que ha personalizado los nodos de cluster de Oracle CNE por defecto agregando un archivo de texto (
/etc/myfile.txt
) y un paquete (emacs
) que no están presentes por defecto. -
Escriba
exit
para salir del nodoocne-control-plane-1
.
Eliminación del cluster
-
Suprimir el cluster.
ocne cluster delete
-
Suprima el archivo
defaults.yaml
.rm /home/oracle/.ocne/defaults.yaml
Actualización de la configuración de un único cluster
A continuación, creará y aplicará un archivo de personalización a un único cluster de CNE de Oracle.
-
Cree un archivo de configuración.
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
-
Confirme el archivo creado.
cat /home/oracle/myconfig.yaml
-
Inicie Oracle CNE mediante la imagen .qcow2.
ocne cluster start -u false -c /home/oracle/myconfig.yaml
Salida de ejemplo:
[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
-
Defina la variable de entorno
kubeconfig
para el nuevo cluster.export KUBECONFIG=$(ocne cluster show -C ocne)
-
Obtenga una lista de sus nodos de cluster.
kubectl get nodes
-
Conéctese al nodo Worker.
ocne cluster console --direct --node ocne-worker-1
-
Confirme que existe el archivo
myfile.txt
.ls -lsa /etc/myfile.txt
-
Confirme el paquete
emacs
instalado.ls /bin/emacs
-
Escriba
exit
para salir del nodoocne-worker-1
. -
Conéctese al nodo Plano de control.
ocne cluster console --direct --node ocne-control-plane-1
-
Confirme que existe el archivo
myfile.txt
.ls -lsa /etc/myfile.txt
-
Confirme el paquete
emacs
instalado.ls /bin/emacs
Confirmar que ha personalizado los nodos de cluster de Oracle CNE por defecto agregando un archivo de texto (
/etc/myfile.txt
) y un paquete (emacs
) que no están presentes por defecto. -
Escriba
exit
para salir del nodoocne-control-plane-1
.
Eliminación del cluster
-
Suprimir el cluster.
ocne cluster delete
Pasos Siguientes
La personalización de los archivos de imagen OCK de CNE de Oracle permite modificar el entorno utilizado en los nodos de cluster de Kubernetes de CNE de Oracle. Continúe ampliando sus conocimientos sobre Kubernetes y Oracle Cloud Native Environment consultando nuestros otros tutoriales publicados en Oracle Linux Training Station.
Enlaces relacionados
- Documentación de Oracle Cloud Native Environment
- Circuito de Oracle Cloud Native Environment
- Oracle Linux Training Station
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Use ock-forge with Oracle Cloud Native Environment
G33064-01
Copyright ©2025, Oracle and/or its affiliates.