Provisionamento di Fedora CoreOS su KubeVirt
Questa guida mostra come fornire nuovi nodi Fedora CoreOS (FCOS) su qualsiasi cluster Kubernetes abilitato per KubeVirt.
Prerequisiti
Prima di configurare una macchina FCOS, è necessario avere un file di configurazione Ignition con le proprie personalizzazioni. Se non ne hai uno, consulta Produzione di un File Ignition.
È inoltre necessario avere accesso a un ambiente Kubernetes con [KubeVirt](https://kubevirt.io/user-guide/operations/installation/) installato.
Riferimento all’immagine KubeVirt
Fedora CoreOS è progettato per essere aggiornato automaticamente, con pianificazioni diverse per ciascun flusso.
L’immagine di ogni stream può essere riferita direttamente dal registro ufficiale:
-
quay.io/fedora/fedora-coreos-kubevirt:stable -
quay.io/fedora/fedora-coreos-kubevirt:testing -
quay.io/fedora/fedora-coreos-kubevirt:next
Creazione di un segreto di configurazione Ignition
Ci sono diversi modi per esporre i dati utente (userdata) alle VM KubeVirt, i quali sono trattati nella guida utente di KubeVirt alla sezione KubeVirt user guide. In questo esempio useremo la configurazione Ignition memorizzata nel file locale example.ign per creare un secret chiamato`ignition-payload`. Utilizzeremo poi questo secret durante la definizione della nostra macchina virtuale negli esempi seguenti.
kubectl create secret generic ignition-payload --from-file=userdata=example.ign
Se l’utente preferisce, può utilizzare oc al posto di kubectl nei comandi presenti in tutta questa guida.
|
Avvio di una macchina virtuale
Date le immagini quay.io/fedora/fedora-coreos-kubevirt, è possibile creare una definizione di VM e combinarla con il riferimento al secret di Ignition per avviare una macchina virtuale.
STREAM="stable" # or "testing" or "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
Ora dovresti essere in grado di accedere all’istanza tramite SSH. Se non hai modificato le impostazioni predefinite, il nome utente è core.
virtctlvirtctl ssh core@my-fcos
Avvio di una macchina virtuale con archiviazione persistente
L’esempio sopra descritto fornirà una VM che perderà qualsiasi modifica apportata se viene arrestata e riavviata. È possibile istruire il cluster affinché importi un containerdisk in un Volume Fisico (Physical Volume) durante il provisioning, in modo che la macchina virtuale mantenga la persistenza del disco del sistema operativo tra le operazioni di arresto e avvio.
Il vantaggio di questo approccio è che la macchina si comporta in modo molto più simile a una macchina virtuale tradizionale. Lo svantaggio è che il cluster deve offrire uno storage di tipo Block PV (Persistent Volume in modalità Blocco), cosa che potrebbe non essere disponibile in tutti i cluster.
Potrebbe essere necessario specificare il parametro storageClassName nella sezione spec.dataVolumeTemplates.spec.storage della configurazione, qualora il cluster non ne offra uno predefinito. Per maggiori dettagli, consulta la documentazione delle API.
|
STREAM="stable" # or "testing" or "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
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
L’importazione del volume dati nella PVC dal registro dei container potrebbe richiedere del tempo. È possibile monitorare il processo osservando i log del pod importer-fcos-os-disk-volume.
|
Una volta che la macchina è attiva, puoi connetterti ad essa utilizzando virtctl come mostrato nell’esempio precedente.
Duplicazione dell’immagine (mirroring) per l’uso in registri privati
Se in un’installazione air-gapped (isolata dalla rete) viene utilizzato un registro privato, è possibile duplicare (mirroring) l’immagine in tale registro utilizzando 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 ›