kubebirt 中使用 cloud-init

发布 fedora 测试 cloud-init

fedora-virt.yaml

apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
  name: fedora-v0270-virt
spec:
  running: true
  template:
    metadata:
      creationTimestamp: null
      labels:
        vm.kubevirt.io/name: fedora-v0270-virt
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: vm
                operator: In
                values:
                - 'true'
      domain:
        cpu:
          cores: 1
        devices:
          disks:
            - bootOrder: 1
              disk:
                bus: virtio
              name: containerdisk
            - bootOrder: 3
              disk:
                bus: virtio
              name: cloudinitdisk
          interfaces:
            - bootOrder: 2
              masquerade: {}
              name: nic0
          rng: {}
        machine:
          type: ''
        resources:
          requests:
            memory: 512M
      hostname: fedora-v0270-virt
      networks:
        - name: nic0
          pod: {}
      terminationGracePeriodSeconds: 0
      volumes:
        - name: containerdisk
          containerDisk:
            image: kubevirt/fedora-cloud-container-disk-demo:latest
        - name: cloudinitdisk
          cloudInitNoCloud:  
            userData: |
              #cloud-config
              ssh_pwauth: yes
              chpasswd:
                list: |
                    root:123456
              users:
                - name: root
                  ssh-authorized-keys: >-
                    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOV3wVuXAIqkgrzUtWeQEjXLbXSHyJP+8ZewUFnyDrTkiW06haU/GcN0+E2UqRHxalaYQile7lBu2SpW2QryjYntGlvefjPSnmE206yI7N07nCPrFWmu4UUAEAEy+LFAjJ+NUmiqBJYsE1aR1rgWskRljzmmYAkB3L672bIsID05rmckJs1+oIvbxxXS86WVjGERTDHH6pCHDHYeb/yyPbM8LiqLBUNSJDNOuAtIRynNarkgZhj+evIbrbpnxhPzD+ZoYoSsweXr8vn7g8vrosiDrI6BPJIvULYp821Zthb5CDR6DYsTDzaTQgBenmUm9eUp0nZ+WSwJW4QvMB9FJr

发 alpine 测试 cloud-init

注:fedora服务中是包含了cloud-init服务的,alpine 默认是不支持cloud-init的,所以我们需要自己加载cloud-init中的user-data 数据,为了/dev/编号的名称操作简便,clountinitdisk 我们的挂载为cdrom模式,默认在vm 中是 /dev/sr0, 使用mount -t iso9660 /dev/sr0 /mnt 就可以看到从/mnt 看到 cloud-init 数据了。可以写一些自定义的脚本加载指定内容。

alpine-virt.yaml

apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
  name: alpine3115-v0270-virt
spec:
  dataVolumeTemplates:
    - metadata:
        name: alpine3115-v0270-virt-rootdisk
      spec:
        pvc:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 1Gi
          storageClassName: custom-nas-storage
        source:
          http: 
            url: http://172.26.163.182:8081/packages/kubevirt-image/alpine3115-virt-base-20200403121456.qcow2.gz
      status: {}
  running: true
  template:
    metadata:
      creationTimestamp: null
      labels:
        vm.kubevirt.io/name: alpine3115-v0270-virt
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: vm
                operator: In
                values:
                - 'true'
      domain:
        cpu:
          cores: 1
        devices:
          disks:
            - bootOrder: 1
              disk:
                bus: virtio
              name: rootdisk
            - bootOrder: 3
              cdrom:
                bus: sata
              name: cloudinitdisk
          interfaces:
            - bootOrder: 2
              masquerade: {}
              name: nic0
          rng: {}
        machine:
          type: ''
        resources:
          requests:
            memory: 128M
      hostname: alpine310-v0270-virt
      networks:
        - name: nic0
          pod: {}
      terminationGracePeriodSeconds: 0
      volumes:
        - dataVolume:
            name: alpine3115-v0270-virt-rootdisk
          name: rootdisk 
        - name: cloudinitdisk
          cloudInitNoCloud:  
            userData: |
              # env
              export SERVER_PORT=5140
              export SERVER_TRACKROOTS=http://x.x.x.x:5145/
              export LEVELDB_OPENPATH=/data/dbfile
              export SECRETKEY_DIR=/data/secretkey
              export SERVER_VERSION=v0.5.3.3
              export PN_DATADIR=/data/pndata

Last updated