在实施过程中,我们如何能方便debug user/deploy image?如何在单region下,同时支持vm及baremetal?如何以最低的运维管理成本支持baremetal调度?如何支持部署时按需RAID?如何实现baremetal与vm网络互通?
本期活动中,主要围绕实施过程中的如上核心问题,展开详细讨论以及相关的经验分享。同时也拓展到了其它方面,比如raid多机型支持/windows console支持问题。非常感谢爱好者的参与,本文将对如上问题进行归类整理。
问:如何支持部署时按需RAID?
答:使用element proliant-tools制作deploy image。element proliant-tools会在ipa ramdisk中安装一个rpm包hpssacli(HP的RAID管理工具),和一个python module proliantutils(里面ProliantHardwareManager继承了ironic_python_agent.hardware:GenericHardwareManager,实现了get_clean_steps/create_configuration/delete_configuration)。
DIB_DEV_USER_USERNAME=devuser DIB_DEV_USER_PASSWORD=devuser DIB_DEV_USER_PWDLESS_SUDO=true disk-image-create centos7 ironic-agent devuser proliant-tools -o ironic-deploy
配置RAID。
ironic --ironic-api-version 1.15 node-set-target-raid-config $ironic_node_uuid '{\\"logical_disks\\": [{\\"size_gb\\": \\"MAX\\", \\"disk_type\\": \\"hdd\\", \\"raid_level\\": \\"1\\", \\"is_root_volume\\": true, \\"volume_name\\": \\"root_volume\\"}, {\\"size_gb\\": \\"MAX\\", \\"disk_type\\": \\"hdd\\", \\"number_of_physical_disks\\": 4, \\"raid_level\\": \\"5\\", \\"volume_name\\": \\"data_volume\\"}]}'
做RAID。raid config schema。
ironic --ironic-api-version 1.15 node-set-provision-state $ironic_node_uuid clean --clean-steps '[{\\"interface\\": \\"raid\\", \\"step\\": \\"delete_configuration\\"}, {\\"interface\\": \\"raid\\", \\"step\\": \\"create_configuration\\"}]' # 注意steps之间的先后顺序
ironic --ironic-api-version 1.15 node-show $ironic_node_uuid
问:社区代码支持HP机器的raid,怎么开发其他加的raid?
答:如需支持其他机型做raid,需要做的是实现所需机型的HardwareManager,继承自ironic_python_agent.hardware:GenericHardwareManager,实现get_clean_steps/create_configuration/delete_configuration。
这种需求,建议为不同机型提供相应的deploy image,里面封装相应的HardwareManager及底层Raid管理工具即可。
对于你的需求,可以提供两个deploy image。
一个封装HP的HardwareManager适配,用于HP机型做RAID;
另一个则封装DELL的HardwareManager适配,用于DELL机型做RAID;
问:如何实现baremetal与vm网络互通?
答:
问:如何以最低的运维管理成本支持baremetal调度?
答:官方推荐的方法需要使用新tag,且nova和ironic都需要操作且保证一致,太繁琐。
compute node入库时,都会记录自己的hypervisor_type。因此flavor上直接打hypervisor_type tag即可。
# add spec for all nova flavor
vm_flavor_ids=`nova flavor-list|grep True|awk '{print $2}'`
for vm_flavor_id in $vm_flavor_ids; do nova flavor-key ${vm_flavor_id} set capabilities:hypervisor_type=QEMU; nova flavor-show ${vm_flavor_id}; done
# add spec for all baremetal flavor
nova flavor-create ${baremetal_flavor} auto $RAM_MB $DISK_GB $CPU
nova flavor-key ${baremetal_flavor} set capabilities:hypervisor_type=ironic
nova flavor-show ${baremetal_flavor}
注意:
1) libvirt driver based compute入库时会记录自己的hypervisor_type为QEMU,注意是QEMU,不是qemu。
2)任何新增的flavor都需要指定自己的capabilities:hypervisor_type,否则可能会调度到错误的hypervisor type node上。nova flavors不指定capabilities:hypervisor_type,则创建vm可能会被调度到任意node上,包括ironic node上。
3)ComputeCapabilitiesFilter要求key必须使用前缀“capabilities:”,否则不认。
问:如何在单region下,同时支持vm及baremetal?
答:如下是官方给出的用于scheduler的配置,不适用于我们nova compute和ironic共存的环境。
# scheduler_host_manager=ironic_host_manager #继承自host_manager,为ironic compute维护了更简单的NodeState和instance_info。用host_manager也行,默认为host_manager。
# scheduler_use_baremetal_filters=True # 默认exact_*_filter不适用于nova compute。为了scheduler同时支持nova compute和ironic compute,需要nova scheduler禁用此配置,且ironic compute设置*_ratio=1.0。默认为False,已禁用。
# scheduler_host_subset_size=9999999 #用于scheduler更均匀调度出host,默认为1,已经可以满足需求
# scheduler_tracks_instance_changes=False #用于跟踪维护instance info。为了scheduler同时支持nova compute,需要开启此配置。默认为True,已开启。
问:在实施过程中,我们如何能方便debug user/deploy image?
答:
镜像制作阶段,注入专用于debug的metadata,且要支持sudo。
DIB_DEV_USER_USERNAME=devuser DIB_DEV_USER_PASSWORD=devuser DIB_DEV_USER_PWDLESS_SUDO=true disk-image-create centos7 ironic-agent devuser -o ironic-deploy
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞8
添加新评论3 条评论
2019-03-04 22:08
2017-09-21 19:11
2017-09-21 09:45
haichuan0227: @sosogengdongni 那就是没有回offer,neutron dhcp 没有为deploying network正常提供dhcp服务。check neutron dhcp配置/状态是否正确,及deploying network对应的dhcp进程是否正常