smartxworks / virtink

Lightweight Virtualization Add-on for Kubernetes
Apache License 2.0
492 stars 41 forks source link

Connect VM to kube-ovn logical_switch and fix ip address #100

Closed laoyang103 closed 5 months ago

laoyang103 commented 5 months ago

Hi, I use kube-ovn cni

create a pod connect to custom logical_switch and fix ip 10.10.10.11 with follow metadata

  annotations:
    ovn.kubernetes.io/logical_switch: subnet-jx00000003
    ovn.kubernetes.io/ip_address: 10.10.10.11

the full yaml is

apiVersion: v1
kind: Pod
metadata:
  namespace: ns-jx00000003
  name: jx00000003-nginx-11
  annotations:
    ovn.kubernetes.io/logical_switch: subnet-jx00000003
    ovn.kubernetes.io/ip_address: 10.10.10.11
spec:
  containers:
    - name: jx00000003-nginx-11
      image: registry.jxit.net.cn:5000/qdcloud/jxcentos:7

write vm pod yaml with nodeSelector the follow, but it can not be scheduler with error kubelet Predicate NodeAffinity failed

spec:
  nodeSelector:
    kubernetes.io/hostname: k8s-node-03

node label the follow

root@k8s-master-01:~# kubectl get node --show-labels | grep hostname
k8s-node-02     Ready    <none>                 43h   v1.29.3+k3s1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=k3s,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node-02,kubernetes.io/os=linux,node.kubernetes.io/instance-type=k3s
k8s-node-03     Ready    <none>                 43h   v1.29.3+k3s1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=k3s,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node-03,kubernetes.io/os=linux,node.kubernetes.io/instance-type=k3s
k8s-master-01   Ready    control-plane,master   43h   v1.28.8+k3s1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=k3s,beta.kubernetes.io/os=linux,kube-ovn/role=master,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master-01,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=true,node-role.kubernetes.io/master=true,node.kubernetes.io/instance-type=k3s

full pod yaml

apiVersion: v1
kind: Pod
metadata:
  namespace: ns-jx00000003
  name: jx00000003-nginx-11
  annotations:
    ovn.kubernetes.io/logical_switch: subnet-jx00000003
    ovn.kubernetes.io/ip_address: 10.10.10.11
  labels:
    virtink.io/vm.name: jx00000003-nginx-11
spec:
  nodeSelector:
    kubernetes.io/hostname: k8s-node-03
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 10.16.255.254
      - 114.114.114.114
  initContainers:
  - args:
    - /mnt/virtink-kernel/vmlinux
    image: smartxworks/virtink-kernel-5.15.12
    imagePullPolicy: Always
    name: init-kernel
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /mnt/virtink-kernel
      name: virtink-kernel
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-hx29d
      readOnly: true
  - args:
    - /mnt/ubuntu/rootfs.raw
    - "4294967296"
    image: smartxworks/virtink-container-rootfs-ubuntu
    imagePullPolicy: Always
    name: init-volume-ubuntu
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /mnt/ubuntu
      name: ubuntu
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-hx29d
      readOnly: true
  - args:
    - cloud-init
    - aW5zdGFuY2UtaWQ6IDVkZTlkNTNlLTAyMTYtNGI1MC04NmVhLWY2M2QzZmFiNzMyYwpsb2NhbC1ob3N0bmFtZTogdWJ1bnR1LWNvbnRhaW5lci1yb290ZnM=
    - I2Nsb3VkLWNvbmZpZwpwYXNzd29yZDogcGFzc3dvcmQKY2hwYXNzd2Q6IHsgZXhwaXJlOiBGYWxzZSB9CnNzaF9wd2F1dGg6IFRydWU=
    - ""
    - /mnt/cloud-init/cloud-init.iso
    command:
    - virt-init-volume
    image: smartxworks/virt-prerunner:v0.13.0@sha256:44311e42fb3fb4823a755d487c728535ba928efa8e449a3b3b5b8617360bacf6
    imagePullPolicy: IfNotPresent
    name: init-volume-cloud-init
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /mnt/cloud-init
      name: cloud-init
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-hx29d
      readOnly: true
  containers:
  - args:
    - --vm-data
    - eyJraW5kIjoiVmlydHVhbE1hY2hpbmUiLCJhcGlWZXJzaW9uIjoidmlydC52aXJ0aW5rLnNtYXJ0eC5jb20vdjFhbHBoYTEiLCJtZXRhZGF0YSI6eyJuYW1lIjoidWJ1bnR1LWNvbnRhaW5lci1yb290ZnMiLCJuYW1lc3BhY2UiOiJkZWZhdWx0IiwidWlkIjoiNWRlOWQ1M2UtMDIxNi00YjUwLTg2ZWEtZjYzZDNmYWI3MzJjIiwicmVzb3VyY2VWZXJzaW9uIjoiMjU2MTEiLCJnZW5lcmF0aW9uIjoxLCJjcmVhdGlvblRpbWVzdGFtcCI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiYW5ub3RhdGlvbnMiOnsia3ViZWN0bC5rdWJlcm5ldGVzLmlvL2xhc3QtYXBwbGllZC1jb25maWd1cmF0aW9uIjoie1wiYXBpVmVyc2lvblwiOlwidmlydC52aXJ0aW5rLnNtYXJ0eC5jb20vdjFhbHBoYTFcIixcImtpbmRcIjpcIlZpcnR1YWxNYWNoaW5lXCIsXCJtZXRhZGF0YVwiOntcImFubm90YXRpb25zXCI6e30sXCJuYW1lXCI6XCJ1YnVudHUtY29udGFpbmVyLXJvb3Rmc1wiLFwibmFtZXNwYWNlXCI6XCJkZWZhdWx0XCJ9LFwic3BlY1wiOntcImluc3RhbmNlXCI6e1wiZGlza3NcIjpbe1wibmFtZVwiOlwidWJ1bnR1XCJ9LHtcIm5hbWVcIjpcImNsb3VkLWluaXRcIn1dLFwiaW50ZXJmYWNlc1wiOlt7XCJuYW1lXCI6XCJwb2RcIn1dLFwia2VybmVsXCI6e1wiY21kbGluZVwiOlwiY29uc29sZT10dHlTMCByb290PS9kZXYvdmRhIHJ3XCIsXCJpbWFnZVwiOlwic21hcnR4d29ya3MvdmlydGluay1rZXJuZWwtNS4xNS4xMlwifSxcIm1lbW9yeVwiOntcInNpemVcIjpcIjFHaVwifX0sXCJuZXR3b3Jrc1wiOlt7XCJuYW1lXCI6XCJwb2RcIixcInBvZFwiOnt9fV0sXCJ2b2x1bWVzXCI6W3tcImNvbnRhaW5lclJvb3Rmc1wiOntcImltYWdlXCI6XCJzbWFydHh3b3Jrcy92aXJ0aW5rLWNvbnRhaW5lci1yb290ZnMtdWJ1bnR1XCIsXCJzaXplXCI6XCI0R2lcIn0sXCJuYW1lXCI6XCJ1YnVudHVcIn0se1wiY2xvdWRJbml0XCI6e1widXNlckRhdGFcIjpcIiNjbG91ZC1jb25maWdcXG5wYXNzd29yZDogcGFzc3dvcmRcXG5jaHBhc3N3ZDogeyBleHBpcmU6IEZhbHNlIH1cXG5zc2hfcHdhdXRoOiBUcnVlXCJ9LFwibmFtZVwiOlwiY2xvdWQtaW5pdFwifV19fVxuIn0sIm1hbmFnZWRGaWVsZHMiOlt7Im1hbmFnZXIiOiJrdWJlY3RsLWNsaWVudC1zaWRlLWFwcGx5Iiwib3BlcmF0aW9uIjoiVXBkYXRlIiwiYXBpVmVyc2lvbiI6InZpcnQudmlydGluay5zbWFydHguY29tL3YxYWxwaGExIiwidGltZSI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiZmllbGRzVHlwZSI6IkZpZWxkc1YxIiwiZmllbGRzVjEiOnsiZjptZXRhZGF0YSI6eyJmOmFubm90YXRpb25zIjp7Ii4iOnt9LCJmOmt1YmVjdGwua3ViZXJuZXRlcy5pby9sYXN0LWFwcGxpZWQtY29uZmlndXJhdGlvbiI6e319fSwiZjpzcGVjIjp7Ii4iOnt9LCJmOmluc3RhbmNlIjp7Ii4iOnt9LCJmOmRpc2tzIjp7fSwiZjppbnRlcmZhY2VzIjp7fSwiZjprZXJuZWwiOnsiLiI6e30sImY6Y21kbGluZSI6e30sImY6aW1hZ2UiOnt9fSwiZjptZW1vcnkiOnsiLiI6e30sImY6c2l6ZSI6e319fSwiZjpuZXR3b3JrcyI6e30sImY6dm9sdW1lcyI6e319fX0seyJtYW5hZ2VyIjoidmlydC1jb250cm9sbGVyIiwib3BlcmF0aW9uIjoiVXBkYXRlIiwiYXBpVmVyc2lvbiI6InZpcnQudmlydGluay5zbWFydHguY29tL3YxYWxwaGExIiwidGltZSI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiZmllbGRzVHlwZSI6IkZpZWxkc1YxIiwiZmllbGRzVjEiOnsiZjpzdGF0dXMiOnsiZjpwaGFzZSI6e30sImY6dm1Qb2ROYW1lIjp7fX19LCJzdWJyZXNvdXJjZSI6InN0YXR1cyJ9LHsibWFuYWdlciI6InZpcnQtZGFlbW9uIiwib3BlcmF0aW9uIjoiVXBkYXRlIiwiYXBpVmVyc2lvbiI6InZpcnQudmlydGluay5zbWFydHguY29tL3YxYWxwaGExIiwidGltZSI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiZmllbGRzVHlwZSI6IkZpZWxkc1YxIiwiZmllbGRzVjEiOnsiZjpzdGF0dXMiOnt9fSwic3VicmVzb3VyY2UiOiJzdGF0dXMifV19LCJzcGVjIjp7InJlc291cmNlcyI6e30sInJ1blBvbGljeSI6Ik9uY2UiLCJpbnN0YW5jZSI6eyJjcHUiOnsic29ja2V0cyI6MSwiY29yZXNQZXJTb2NrZXQiOjF9LCJtZW1vcnkiOnsic2l6ZSI6IjFHaSJ9LCJrZXJuZWwiOnsiaW1hZ2UiOiJzbWFydHh3b3Jrcy92aXJ0aW5rLWtlcm5lbC01LjE1LjEyIiwiY21kbGluZSI6ImNvbnNvbGU9dHR5UzAgcm9vdD0vZGV2L3ZkYSBydyJ9LCJkaXNrcyI6W3sibmFtZSI6InVidW50dSJ9LHsibmFtZSI6ImNsb3VkLWluaXQifV0sImludGVyZmFjZXMiOlt7Im5hbWUiOiJwb2QiLCJtYWMiOiI1Mjo1NDowMDplMjoxNjplYSIsImJyaWRnZSI6e319XX0sInZvbHVtZXMiOlt7Im5hbWUiOiJ1YnVudHUiLCJjb250YWluZXJSb290ZnMiOnsiaW1hZ2UiOiJzbWFydHh3b3Jrcy92aXJ0aW5rLWNvbnRhaW5lci1yb290ZnMtdWJ1bnR1Iiwic2l6ZSI6IjRHaSJ9fSx7Im5hbWUiOiJjbG91ZC1pbml0IiwiY2xvdWRJbml0Ijp7InVzZXJEYXRhIjoiI2Nsb3VkLWNvbmZpZ1xucGFzc3dvcmQ6IHBhc3N3b3JkXG5jaHBhc3N3ZDogeyBleHBpcmU6IEZhbHNlIH1cbnNzaF9wd2F1dGg6IFRydWUifX1dLCJuZXR3b3JrcyI6W3sibmFtZSI6InBvZCIsInBvZCI6e319XX0sInN0YXR1cyI6eyJwaGFzZSI6IlNjaGVkdWxpbmciLCJ2bVBvZE5hbWUiOiJ2bS11YnVudHUtY29udGFpbmVyLXJvb3Rmcy1xZ3JkeCJ9fQ==
    image: smartxworks/virt-prerunner:v0.13.0@sha256:44311e42fb3fb4823a755d487c728535ba928efa8e449a3b3b5b8617360bacf6
    imagePullPolicy: IfNotPresent
    name: cloud-hypervisor
    resources:
      limits:
        devices.virtink.io/kvm: "1"
        devices.virtink.io/tun: "1"
      requests:
        devices.virtink.io/kvm: "1"
        devices.virtink.io/tun: "1"
    securityContext:
      capabilities:
        add:
        - SYS_ADMIN
        - NET_ADMIN
        - SYS_RESOURCE
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/virtink
      name: virtink
    - mountPath: /mnt/virtink-kernel
      name: virtink-kernel
    - mountPath: /mnt/ubuntu
      name: ubuntu
    - mountPath: /mnt/cloud-init
      name: cloud-init
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-hx29d
      readOnly: true
  enableServiceLinks: true
  nodeName: k8s-master-01
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Never
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - emptyDir: {}
    name: virtink
  - emptyDir: {}
    name: virtink-kernel
  - emptyDir: {}
    name: ubuntu
  - emptyDir: {}
    name: cloud-init
  - name: kube-api-access-hx29d
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
laoyang103 commented 5 months ago

finally I find resion is use nodeName: k8s-master-01

    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-hx29d
      readOnly: true
  enableServiceLinks: true
  **nodeName: k8s-master-01**
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Never
  schedulerName: default-scheduler

pod vm is the follow

apiVersion: v1
kind: Pod
metadata:
  namespace: ns-jx00000003
  name: jx00000003-nginx-11
  annotations:
    ovn.kubernetes.io/logical_switch: subnet-jx00000003
    ovn.kubernetes.io/ip_address: 10.10.10.11
spec:
  nodeSelector:
    kubernetes.io/hostname: k8s-node-03
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 10.16.255.254
      - 114.114.114.114
  initContainers:
  - args:
    - /mnt/virtink-kernel/vmlinux
    image: smartxworks/virtink-kernel-5.15.12
    imagePullPolicy: Always
    name: init-kernel
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /mnt/virtink-kernel
      name: virtink-kernel
  - args:
    - /mnt/ubuntu/rootfs.raw
    - "4294967296"
    image: smartxworks/virtink-container-rootfs-ubuntu
    imagePullPolicy: Always
    name: init-volume-ubuntu
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /mnt/ubuntu
      name: ubuntu
  - args:
    - cloud-init
    - aW5zdGFuY2UtaWQ6IDVkZTlkNTNlLTAyMTYtNGI1MC04NmVhLWY2M2QzZmFiNzMyYwpsb2NhbC1ob3N0bmFtZTogdWJ1bnR1LWNvbnRhaW5lci1yb290ZnM=
    - I2Nsb3VkLWNvbmZpZwpwYXNzd29yZDogcGFzc3dvcmQKY2hwYXNzd2Q6IHsgZXhwaXJlOiBGYWxzZSB9CnNzaF9wd2F1dGg6IFRydWU=
    - ""
    - /mnt/cloud-init/cloud-init.iso
    command:
    - virt-init-volume
    image: smartxworks/virt-prerunner:v0.13.0@sha256:44311e42fb3fb4823a755d487c728535ba928efa8e449a3b3b5b8617360bacf6
    imagePullPolicy: IfNotPresent
    name: init-volume-cloud-init
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /mnt/cloud-init
      name: cloud-init
  containers:
  - args:
    - --vm-data
    - eyJraW5kIjoiVmlydHVhbE1hY2hpbmUiLCJhcGlWZXJzaW9uIjoidmlydC52aXJ0aW5rLnNtYXJ0eC5jb20vdjFhbHBoYTEiLCJtZXRhZGF0YSI6eyJuYW1lIjoidWJ1bnR1LWNvbnRhaW5lci1yb290ZnMiLCJuYW1lc3BhY2UiOiJkZWZhdWx0IiwidWlkIjoiNWRlOWQ1M2UtMDIxNi00YjUwLTg2ZWEtZjYzZDNmYWI3MzJjIiwicmVzb3VyY2VWZXJzaW9uIjoiMjU2MTEiLCJnZW5lcmF0aW9uIjoxLCJjcmVhdGlvblRpbWVzdGFtcCI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiYW5ub3RhdGlvbnMiOnsia3ViZWN0bC5rdWJlcm5ldGVzLmlvL2xhc3QtYXBwbGllZC1jb25maWd1cmF0aW9uIjoie1wiYXBpVmVyc2lvblwiOlwidmlydC52aXJ0aW5rLnNtYXJ0eC5jb20vdjFhbHBoYTFcIixcImtpbmRcIjpcIlZpcnR1YWxNYWNoaW5lXCIsXCJtZXRhZGF0YVwiOntcImFubm90YXRpb25zXCI6e30sXCJuYW1lXCI6XCJ1YnVudHUtY29udGFpbmVyLXJvb3Rmc1wiLFwibmFtZXNwYWNlXCI6XCJkZWZhdWx0XCJ9LFwic3BlY1wiOntcImluc3RhbmNlXCI6e1wiZGlza3NcIjpbe1wibmFtZVwiOlwidWJ1bnR1XCJ9LHtcIm5hbWVcIjpcImNsb3VkLWluaXRcIn1dLFwiaW50ZXJmYWNlc1wiOlt7XCJuYW1lXCI6XCJwb2RcIn1dLFwia2VybmVsXCI6e1wiY21kbGluZVwiOlwiY29uc29sZT10dHlTMCByb290PS9kZXYvdmRhIHJ3XCIsXCJpbWFnZVwiOlwic21hcnR4d29ya3MvdmlydGluay1rZXJuZWwtNS4xNS4xMlwifSxcIm1lbW9yeVwiOntcInNpemVcIjpcIjFHaVwifX0sXCJuZXR3b3Jrc1wiOlt7XCJuYW1lXCI6XCJwb2RcIixcInBvZFwiOnt9fV0sXCJ2b2x1bWVzXCI6W3tcImNvbnRhaW5lclJvb3Rmc1wiOntcImltYWdlXCI6XCJzbWFydHh3b3Jrcy92aXJ0aW5rLWNvbnRhaW5lci1yb290ZnMtdWJ1bnR1XCIsXCJzaXplXCI6XCI0R2lcIn0sXCJuYW1lXCI6XCJ1YnVudHVcIn0se1wiY2xvdWRJbml0XCI6e1widXNlckRhdGFcIjpcIiNjbG91ZC1jb25maWdcXG5wYXNzd29yZDogcGFzc3dvcmRcXG5jaHBhc3N3ZDogeyBleHBpcmU6IEZhbHNlIH1cXG5zc2hfcHdhdXRoOiBUcnVlXCJ9LFwibmFtZVwiOlwiY2xvdWQtaW5pdFwifV19fVxuIn0sIm1hbmFnZWRGaWVsZHMiOlt7Im1hbmFnZXIiOiJrdWJlY3RsLWNsaWVudC1zaWRlLWFwcGx5Iiwib3BlcmF0aW9uIjoiVXBkYXRlIiwiYXBpVmVyc2lvbiI6InZpcnQudmlydGluay5zbWFydHguY29tL3YxYWxwaGExIiwidGltZSI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiZmllbGRzVHlwZSI6IkZpZWxkc1YxIiwiZmllbGRzVjEiOnsiZjptZXRhZGF0YSI6eyJmOmFubm90YXRpb25zIjp7Ii4iOnt9LCJmOmt1YmVjdGwua3ViZXJuZXRlcy5pby9sYXN0LWFwcGxpZWQtY29uZmlndXJhdGlvbiI6e319fSwiZjpzcGVjIjp7Ii4iOnt9LCJmOmluc3RhbmNlIjp7Ii4iOnt9LCJmOmRpc2tzIjp7fSwiZjppbnRlcmZhY2VzIjp7fSwiZjprZXJuZWwiOnsiLiI6e30sImY6Y21kbGluZSI6e30sImY6aW1hZ2UiOnt9fSwiZjptZW1vcnkiOnsiLiI6e30sImY6c2l6ZSI6e319fSwiZjpuZXR3b3JrcyI6e30sImY6dm9sdW1lcyI6e319fX0seyJtYW5hZ2VyIjoidmlydC1jb250cm9sbGVyIiwib3BlcmF0aW9uIjoiVXBkYXRlIiwiYXBpVmVyc2lvbiI6InZpcnQudmlydGluay5zbWFydHguY29tL3YxYWxwaGExIiwidGltZSI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiZmllbGRzVHlwZSI6IkZpZWxkc1YxIiwiZmllbGRzVjEiOnsiZjpzdGF0dXMiOnsiZjpwaGFzZSI6e30sImY6dm1Qb2ROYW1lIjp7fX19LCJzdWJyZXNvdXJjZSI6InN0YXR1cyJ9LHsibWFuYWdlciI6InZpcnQtZGFlbW9uIiwib3BlcmF0aW9uIjoiVXBkYXRlIiwiYXBpVmVyc2lvbiI6InZpcnQudmlydGluay5zbWFydHguY29tL3YxYWxwaGExIiwidGltZSI6IjIwMjQtMDQtMjBUMDY6MDQ6NDFaIiwiZmllbGRzVHlwZSI6IkZpZWxkc1YxIiwiZmllbGRzVjEiOnsiZjpzdGF0dXMiOnt9fSwic3VicmVzb3VyY2UiOiJzdGF0dXMifV19LCJzcGVjIjp7InJlc291cmNlcyI6e30sInJ1blBvbGljeSI6Ik9uY2UiLCJpbnN0YW5jZSI6eyJjcHUiOnsic29ja2V0cyI6MSwiY29yZXNQZXJTb2NrZXQiOjF9LCJtZW1vcnkiOnsic2l6ZSI6IjFHaSJ9LCJrZXJuZWwiOnsiaW1hZ2UiOiJzbWFydHh3b3Jrcy92aXJ0aW5rLWtlcm5lbC01LjE1LjEyIiwiY21kbGluZSI6ImNvbnNvbGU9dHR5UzAgcm9vdD0vZGV2L3ZkYSBydyJ9LCJkaXNrcyI6W3sibmFtZSI6InVidW50dSJ9LHsibmFtZSI6ImNsb3VkLWluaXQifV0sImludGVyZmFjZXMiOlt7Im5hbWUiOiJwb2QiLCJtYWMiOiI1Mjo1NDowMDplMjoxNjplYSIsImJyaWRnZSI6e319XX0sInZvbHVtZXMiOlt7Im5hbWUiOiJ1YnVudHUiLCJjb250YWluZXJSb290ZnMiOnsiaW1hZ2UiOiJzbWFydHh3b3Jrcy92aXJ0aW5rLWNvbnRhaW5lci1yb290ZnMtdWJ1bnR1Iiwic2l6ZSI6IjRHaSJ9fSx7Im5hbWUiOiJjbG91ZC1pbml0IiwiY2xvdWRJbml0Ijp7InVzZXJEYXRhIjoiI2Nsb3VkLWNvbmZpZ1xucGFzc3dvcmQ6IHBhc3N3b3JkXG5jaHBhc3N3ZDogeyBleHBpcmU6IEZhbHNlIH1cbnNzaF9wd2F1dGg6IFRydWUifX1dLCJuZXR3b3JrcyI6W3sibmFtZSI6InBvZCIsInBvZCI6e319XX0sInN0YXR1cyI6eyJwaGFzZSI6IlNjaGVkdWxpbmciLCJ2bVBvZE5hbWUiOiJ2bS11YnVudHUtY29udGFpbmVyLXJvb3Rmcy1xZ3JkeCJ9fQ==
    image: smartxworks/virt-prerunner:v0.13.0@sha256:44311e42fb3fb4823a755d487c728535ba928efa8e449a3b3b5b8617360bacf6
    imagePullPolicy: IfNotPresent
    name: cloud-hypervisor
    securityContext:
      capabilities:
        add:
        - SYS_ADMIN
        - NET_ADMIN
        - SYS_RESOURCE
      privileged: true
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /dev/kvm
      name: devkvm
    - mountPath: /dev/net/tun
      name: devtun
    - mountPath: /var/run/virtink
      name: virtink
    - mountPath: /mnt/virtink-kernel
      name: virtink-kernel
    - mountPath: /mnt/ubuntu
      name: ubuntu
    - mountPath: /mnt/cloud-init
      name: cloud-init
  volumes:
  - name: devkvm
    hostPath:
      path: /dev/kvm
  - name: devtun
    hostPath:
      path: /dev/net/tun
  - emptyDir: {}
    name: virtink
  - emptyDir: {}
    name: virtink-kernel
  - emptyDir: {}
    name: ubuntu
  - emptyDir: {}
    name: cloud-init