Aprovisionando Fedora CoreOS sobre KubeVirt
Esta guía muestra como aprovisionar nodos nuevos de Fedora CoreOS (FCOS) en cualquier clúster de Kubernetes habilitado para KubeVirt.
Prerrequisitos
Antes de aprovisionar una máquina FCOS, debes tener un archivo de configuración Ignition que contenga sus personalizaciones. Si no tienes uno consulta Producción de un Archivo Ignition.
También necesita tener acceso a un entorno de Kubernetes con KubeVirt instalado.
Referencia a la imagen de KubeVirt
Fedora CoreOS está diseñado para ser subido automáticamente, con diferentes planificaciones por flujo.
La imagen para cada flujo puede ser referenciada directamente desde el registro oficial:
-
quay.io/fedora/fedora-coreos-kubevirt:stable -
quay.io/fedora/fedora-coreos-kubevirt:testing -
quay.io/fedora/fedora-coreos-kubevirt:next
Crear una configuración Ignition secreta
Existen varias maneras de exponer datos de usuario a las máquinas virtuales de Kubevirt, que se describen en guía del usuario de KubeVirt. En este ejemplo, usaremos la configuración de Ignition almacenada en el archivo local example.ign para crear un secreto llamado ignition-payload. Posteriormente, usaremos este secreto al definir nuestra máquina virtual en los ejemplos siguientes.
kubectl create secret generic ignition-payload --from-file=userdata=example.ign
Si el usuario prefiere, pueden utilizar oc en vez de kubectl en los comandos a través de esta guía.
|
Lanzar una máquina virtual (MV)
Dadas las imágenes quay.io/fedora/fedora-coreos-kubevirt puedes crear una definición de MV y combinar eso con la referencia secreta de Ignition para lanzar una máquina virtual.
STREAM="stable" # o el "testing" o el "next"
cat <<END > vm.yaml
---
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: my-fcos
spec:
runStrategy: Always
template:
spec:
domain:
devices:
disks:
- name: containerdisk
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
rng: {}
resources:
requests:
memory: 2048M
volumes:
- name: containerdisk
containerDisk:
image: quay.io/fedora/fedora-coreos-kubevirt:${STREAM}
imagePullPolicy: Always
- name: cloudinitdisk
cloudInitConfigDrive:
secretRef:
name: ignition-payload
END
kubectl create -f vm.yaml
Ahora serías capaz de entrar por SSH la instancia. Si no cambiaste lo predeterminado, el nombre de usuario es core.
virtctl por medio de sshvirtctl ssh core@mi-fcos
Lanzar una máquina virtual con almacén persistente
El ejemplo anterior le proporcionará una máquina virtual que perderá los cambios realizados si se detiene y se reinicia. Puede indicar al clúster que importe un disco contenedor a un volumen físico durante el aprovisionamiento para que la máquina virtual conserve el disco del sistema operativo durante las operaciones de detención e inicio.
Lo positivo para esta aproximación es que la máquina se comporta mucho mejor que una máquina virtual tradicional. El inconveniente es que el clúster debe ofrecer almacenamiento fotovoltaico en bloque y no todos los clústeres pueden hacerlo.
Es posible que deba especificar un parámetro storageClassName en la sección spec.dataVolumeTemplates.spec.storage de la configuración si su clúster no ofrece un valor predeterminado. Consulte la documentación de la API.
|
STREAM="stable" # o "testing" o "next"
DISK=10
cat <<END > vm.yaml
---
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: my-fcos
spec:
runStrategy: Always
dataVolumeTemplates:
- metadata:
name: fcos-os-disk-volume
spec:
source:
registry:
url:
docker://quay.io/fedora/fedora-coreos-kubevirt:${STREAM}
storage:
volumeMode: Block
resources:
requests:
storage: ${DISK}Gi
accessModes:
- ReadWriteOnce
template:
spec:
domain:
devices:
disks:
- name: fcos-os-disk
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
name: cloudinitdisk
rng: {}
resources:
requests:
memory: 2048M
volumes:
- name: fcos-os-disk
dataVolume:
name: fcos-os-disk-volume
- name: cloudinitdisk
cloudInitConfigDrive:
secretRef:
name: ignition-payload
END
kubectl create -f vm.yaml
La importación del volumen de datos al PVC desde el registro del contenedor puede tardar un tiempo. Puede supervisar la importación consultando los registros del pod importer-fcos-os-disk-volume.
|
Una vez que la máquina esté en funcionamiento, puede conectarse a ella usando virtctl como se muestra en el ejemplo anterior.
Duplicación de la imagen para su uso en registros privados
Si se utiliza un registro privado en instalaciones con espacio de aire, la imagen se puede reflejar en ese registro usando skopeo.
skopeo copy docker://quay.io/fedora/fedora-coreos-kubevirt:stable docker://myregistry.io/myorg/fedora-coreos-kubevirt:stable
Want to help? Learn how to contribute to Fedora Docs ›