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.

Membuat rahasia
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.

Menjalankan instance VM dengan referensi ke rahasia
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.

Mengakses instance VM menggunakan virtctl melalui SSH
virtctl 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.
Menjalankan VM dengan penyimpanan persisten
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.

Mencerminkan citra FCOS stable stream
skopeo copy docker://quay.io/fedora/fedora-coreos-kubevirt:stable docker://myregistry.io/myorg/fedora-coreos-kubevirt:stable