Loading
close

创建云主机

time 更新时间:2022-11-08 11:04:14

本操作用于创建包含CPU、内存、操作系统、网络配置、云硬盘等基础资源的云原生云主机,为客户提供可靠、安全、灵活、高效的计算环境。

  1. 根据客户实际业务需求,规划云主机配置项。各配置项的具体说明及格式如下:

    • CPU:

        spec:
          template:
            spec:
            domain:
                cpu:
                cores: <CPU核数>
      
    • 内存:

        spec:
          template:
            spec:
            domain:
                resources:
                    requests:
                        memory: <内存大小>G
      
    • 存储:

      • 持久卷声明(PVC):

        spec:
          template:
            spec:
              volumes:
                - name: <数据卷名称>
                    persistentVolumeClaim:
                        claimName: <PVC名称>
        
      • 云硬盘( DV,DataVolume):在云主机创建时,指定的DV会同步创建一个PVC供云主机使用。在云主机删除时,该PVC也会同步销毁:

        spec:
          template:
            spec:
              volumes:
                - name: <数据卷名称>
                    dataVolume:
                        name: <DV名称>
        
      • 云硬盘模板( DV,DataVolume):在云主机创建时,DV模板会同步创建一个DV供云主机使用。在云主机删除时,该DV连同PVC也会同步销毁。在下述示例中,该DV模板定义的数据来源为另一个PVC,但是也支持http等多种来源:

        spec:
          dataVolumeTemplates:
          - metadata:
                name: <DV模板名称>
            spec:
                pvc:
                    accessModes:
                    - ReadWriteOnce
                    resources:
                        requests:
                            storage: <PVC容量>Gi
                    storageClassName: <存储类名称>
                source:
                    pvc:
                        namespace: default
                        name: <PVC名称>
        

        警告:

        在同一命名空间下,请确保各DV和DV模板的名称均不重复,

      • 系统盘:

        spec:
          template:
            spec:
                domain:
                    devices:
                        disks:
                        - disk:
                            bus: virtio
                        name: <系统盘名称>
        
    • 启动顺序:

        spec:
          template:
            spec:
                domain:
                    devices:              
                        disks:
                        - bootOrder: 1
                            cdrom:            
                            bus: <第一启动盘类型>
                            name: <第一启动盘名称>
                        - bootOrder: 2
                            disk:
                            bus: <第二启动盘类型>
                            name: <第二启动盘名称>
      
    • 网络:

      • 使用Pod默认网络:

        spec:
          template:
            spec:
                networks:
                - name: default
                  pod: {}
        
      • 使用集群第二网络kube-ovn:

        当承载云原生云主机运行的是安全容器集群(即已安装安全容器服务云产品)时,可在创建云主机时,使用安全容器服务云产品默认安装的kube-ovn。在配置下述内容前,请确保已安装Multus服务,且在安全容器服务的命名空间下已配置NetworkAttachmentDefinition资源:

        spec:
          template:
            spec:
                networks:
                - name: default
                  multus:
                    default: true
                    networkName: secure-container/kube-ovn
        

        当使用集群第二网络kube-ovn时,接口设置仅支持bridge模式。此外,集群第二网络kube-ovn需配合固定IP地址使用,否则会由于kube-ovn的内置IPAM分配问题,导致云主机在重启后会网络异常(其中,mac_address请自动生成,不可复用已使用的mac地址):

        spec:
          template:
            metadata:
                annotations:
                    ovn.kubernetes.io/ip_address: <固定IP地址>
                    ovn.kubernetes.io/mac_address: 00:00:00:63:D5:F9
        
      • 接口:

        • masquerade模式(默认):

            spec:
              template:
                spec:
                    domain:
                        devices:
                            interfaces:
                            - masquerade: {}
                            name: default
          
        • bridge模式:

            spec:
              template:
                spec:
                    domain:
                        devices:
                            interfaces:
                            - bridge: {}
                            name: default
          

        警告:

        • 当使用集群第二网络kube-ovn时,仅支持bridge模式。
        • 当使用Pod默认网络对接bridge模式时,请在KubeVirt提供的permitBridgeInterfaceOnPodNetwork配置项中禁用该关联,否则云主机将无法成功创建。
* 密钥/密码注入:

        spec:
          template:
            spec:
                domain:
                    devices:
                        disks:
                        - disk:
                        bus: virtio
                        name: cloudinitdisk
                volumes:
                    - cloudInitNoCloud:
                        userData: |
                            #cloud-config
                            disable_root: false
                            ssh_pwauth: true
                            ssh_authorized_keys:
                            - '<SSH密钥>'
                            users:
                            - name: escore
                                gecos: ES Core User
                                sudo: ALL=(ALL) NOPASSWD:ALL
                                passwd: <SSH密码>
                                shell: /bin/bash
                                home: /home/escore
                                lock_passwd: false
                                ssh_pwauth: true
                        name: cloudinitdisk
  1. 通过Yaml,创建云主机。

    下文将分别列举几个Linux和Windows操作系统云主机的Yaml文件格式供参考。

    • Linux云主机

      • 使用默认Pod网络,并通过存有镜像文件的PVC启动:

          apiVersion: kubevirt.io/v1alpha3
          kind: VirtualMachine
          metadata:
              name: <云主机名称>
          spec:
              running: true
              template:
              metadata:
                  labels:
                      kubevirt.io/domain: <云主机名称>
              spec:
                  domain:
                      cpu:
                          cores: <CPU核数>
                      devices:
                          disks:
                          - disk:
                          bus: virtio
                          name: boot-disk
                          interfaces:
                          - masquerade: {}
                          name: default
                      machine:
                          type: q35
                      resources:
                          requests:
                          memory: <内存大小>G
                  networks:
                      - name: default
                      pod: {}
                  volumes:
                      - name: <数据卷名称>
                      persistentVolumeClaim:
                          claimName: <PVC名称>
        
      • 使用集群第二网络,并设置为固定IP地址,且通过运硬盘模板定义的运硬盘启动,此外另配置 cloudInitNoCloud 卷用于注入密码与秘钥:

          apiVersion: kubevirt.io/v1alpha3
          kind: VirtualMachine
          metadata:
              name: <云主机名称>
          spec:
              running: true
              template:
              metadata:
                  annotations:
                      ovn.kubernetes.io/ip_address: 10.16.1.110
                      ovn.kubernetes.io/mac_address: 00:00:00:63:D5:F9
                  labels:
                      kubevirt.io/domain: <云主机名称>
              spec:
                  domain:
                      cpu:
                          cores: <CPU核数>
                      devices:
                          disks:
                          - disk:
                          bus: virtio
                          name: boot-disk
                          - disk:
                          bus: virtio
                          name: cloudinitdisk
                          interfaces:
                          - bridge: {}
                          name: default
                      machine:
                          type: q35
                      resources:
                          requests:
                          memory: <内存大小>G
                  networks:
                      - name: default
                      multus:
                          default: true
                          networkName: secure-container/kube-ovn
                  volumes:
                      - name: <数据卷名称>
                          dataVolume:
                              name: <DV名称>
                      - cloudInitNoCloud:
                          userData: |
                              #cloud-config
                              disable_root: false
                              ssh_pwauth: true
                              ssh_authorized_keys:
                              - '<SSH密钥>'
                              users:
                              - name: escore
                                  gecos: ES Core User
                                  sudo: ALL=(ALL) NOPASSWD:ALL
                                  passwd: <SSH密码>
                                  shell: /bin/bash
                                  home: /home/escore
                                  lock_passwd: false
                                  ssh_pwauth: true
                          name: cloudinitdisk
              dataVolumeTemplates:
              - metadata:
              name: centos-dv
              spec:
              pvc:
                  accessModes:
                  - ReadWriteOnce
                  resources:
                      requests:
                          storage: <PVC容量>Gi
                  storageClassName: <存储类名称>
              source:
                  pvc:
                      namespace: default
                      name: <PVC名称>
        
    • Windows云主机

      • iso启动:

        1. 通过Yaml,创建持久卷声明(PVC)。Yaml文件格式如下:

           apiVersion: v1
           kind: PersistentVolumeClaim
           metadata:
               name: <PVC名称>
           spec:
               accessModes:
                   - ReadWriteOnce
               resources:
                   requests:
                       storage: <PVC容量>Gi
               storageClassName: <存储类名称>
          
        2. 通过Yaml,创建云主机。Yaml文件格式如下(其中, hub.example.io/production/virtio-container-disk 为包含Windows云主机所需驱动的一个容器盘。):

           apiVersion: kubevirt.io/v1alpha3
           kind: VirtualMachine
           metadata:
           name: <云主机名称>
           spec:
           running: true
           template:
               metadata:
                   labels:
                       kubevirt.io/domain: <云主机名称>
               spec:
                   domain:
                       cpu:
                       cores: <CPU核数>
                       devices:
                       disks:
                       - bootOrder: 1
                           cdrom:
                           bus: sata
                           name: cdromiso
                       - disk:
                           bus: virtio
                           name: harddrive
                       - cdrom:
                           bus: sata
                           name: virtiocontainerdisk
                       interfaces:
                       - masquerade: {}
                           name: default
                       machine:
                       type: q35
                       resources:
                       requests:
                           memory: <内存大小>G
                   networks:
                       - name: default
                       pod: {}
                   volumes:
                       - name: <数据卷名称>
                       persistentVolumeClaim:
                           claimName: <PVC名称>
                       - name: <数据卷名称>
                       persistentVolumeClaim:
                           claimName: <PVC名称>
                       - containerDisk:
                           image: hub.example.io/production/virtio-container-disk
                       name: virtiocontainerdisk
          
      • raw启动:

          apiVersion: kubevirt.io/v1alpha3
          kind: VirtualMachine
          metadata:
              name: win2k19-boot-dv
          spec:
              running: true
              template:
              metadata:
                  labels:
                      kubevirt.io/domain: win2k19-boot-dv
              spec:
                  domain:
                      cpu:
                          cores: <CPU核数>
                      devices:
                          disks:
                          - disk:
                          bus: virtio
                          name: boot-disk
                          interfaces:
                          - masquerade: {}
                          name: default
                      machine:
                          type: q35
                      resources:
                          requests:
                              memory: <内存大小>G
                  networks:
                      - name: default
                          pod: {}
                  volumes:
                      - name: <数据卷名称>
                          dataVolume:
                              name: <DV名称>
              dataVolumeTemplates:
              - metadata:
              name: win2k19-dv
              spec:
              pvc:
                  accessModes:
                  - ReadWriteOnce
                  resources:
                      requests:
                          storage: <PVC容量>Gi
                  storageClassName: <存储类名称>
              source:
                  pvc:
                      namespace: default
                      name: <PVC名称>
        
此篇文章对你是否有帮助?
没帮助
locked-file

您暂无权限访问该产品