Penyediaan Fedora CoreOS di KubeVirt
Panduan ini menunjukkan cara menyediakan node Fedora CoreOS (FCOS) baru pada klaster Kubernetes apa pun yang mendukung KubeVirt.
Persyaratan
Sebelum menyediakan mesin FCOS, Anda harus memiliki file konfigurasi Ignition yang berisi kustomisasi Anda. Jika belum memilikinya, lihat [Producing an Ignition File](xref:producing-ign.adoc).
Anda juga harus memiliki akses ke lingkungan Kubernetes dengan KubeVirt yang telah terpasang.
Mereferensikan Citra (Image) KubeVirt
Fedora CoreOS dirancang untuk diperbarui secara otomatis, dengan jadwal pembaruan yang berbeda untuk setiap stream.
Citra untuk setiap stream dapat langsung direferensikan dari registri resmi:
-
quay.io/fedora/fedora-coreos-kubevirt:stable -
quay.io/fedora/fedora-coreos-kubevirt:testing -
quay.io/fedora/fedora-coreos-kubevirt:next
Membuat rahasia konfigurasi Ignition
Ada berbagai cara untuk mengekspos userdata ke VM KubeVirt, yang dibahas dalam Panduan pengguna KubeVirt. Dalam contoh ini, kita akan menggunakan konfigurasi Ignition yang disimpan dalam berkas lokal example.ign untuk membuat rahasia bernama ignition-payload. Rahasia ini kemudian akan digunakan saat mendefinisikan mesin virtual dalam contoh di bawah ini.
kubectl create secret generic ignition-payload --from-file=userdata=example.ign
Jika pengguna menginginkan, mereka dapat menggunakan oc sebagai pengganti kubectl dalam perintah di seluruh panduan ini.
|
Menjalankan mesin virtual
Dengan citra quay.io/fedora/fedora-coreos-kubevirt, Anda dapat membuat definisi VM dan menggabungkannya dengan referensi rahasia Ignition untuk menjalankan mesin virtual.
STREAM="stable" # atau "testing" atau "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
Sekarang Anda seharusnya dapat melakukan SSH ke instance. Jika Anda tidak mengubah pengaturan default, nama pengguna adalah core.
virtctl melalui SSHvirtctl ssh core@my-fcos
Menjalankan mesin virtual dengan penyimpanan persisten
The above example will give you a VM that will lose any changes made to it if it is stopped and started again. You can instruct the cluster to import a containerdisk into a Physical Volume when provisioning in order for the virtual machine to have persistence of the OS disk across stop/start operations.
Keuntungan dari pendekatan ini adalah mesin akan berperilaku lebih seperti mesin virtual tradisional. Kekurangannya adalah klaster perlu menyediakan penyimpanan Block PV, dan tidak semua klaster mendukung hal itu.
Anda mungkin harus menetapkan parameter storageClassName di bagian spec.dataVolumeTemplates.spec.storage pada konfigurasi jika klaster Anda tidak menyediakan nilai default. Lihat dokumentasi API.
|
STREAM="stable" # atau "testing" atau "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
Proses impor data volume ke PVC dari registri kontainer mungkin memerlukan waktu. Anda dapat memantau proses impor tersebut dengan melihat log dari pod importer-fcos-os-disk-volume.
|
Setelah mesin aktif, Anda dapat terhubung ke mesin tersebut menggunakan virtctl seperti yang ditunjukkan pada contoh sebelumnya.
Mencerminkan citra (image) untuk digunakan di registri pribadi
Jika registri pribadi digunakan dalam instalasi air-gapped, citra dapat dicerminkan ke registri tersebut menggunakan 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 ›