加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_盐城站长网 (https://www.0515zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

OpenStack虚拟机如何获取metadata

发布时间:2018-09-29 12:46:09 所属栏目:站长百科 来源:佚名
导读:副标题#e# 技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 1. 关于OpenStack metadata服务 我们知道OpenStack虚拟机是通过cloud-init完成初始化配置,比如网卡配置、hostname、初始化密码以及密钥配置等。cloud-init是运行在虚拟

我们可以看到169.254.169.254的下一跳为10.0.0.66。10.0.0.66这个IP是什么呢?我们通过Neutron的port信息查看下:

  1. # neutron port-list -c network_id -c device_owner -c mac_address -c fixed_ips -f csv | grep 10.0.0.66 
  2. "2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a","network:dhcp","fa:16:3e:b3:e8:38","[{u'subnet_id': u'6f046aae-2158-4882-a818-c56d81bc8074', u'ip_address': u'10.0.0.66'}]" 

可看到10.0.0.66正好是网络2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a的dhcp地址,可以进一步验证:

  1. # ip netns exec qdhcp-2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a ifconfig 
  2. tap1332271e-0d: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450 
  3.         inet 10.0.0.66  netmask 255.255.255.192  broadcast 10.0.0.127 
  4.         inet6 fe80::f816:3eff:feb3:e838  prefixlen 64  scopeid 0x20<link> 
  5.         ether fa:16:3e:b3:e8:38  txqueuelen 1000  (Ethernet) 
  6.         RX packets 662  bytes 58001 (56.6 KiB) 
  7.         RX errors 0  dropped 0  overruns 0  frame 0 
  8.         TX packets 410  bytes 55652 (54.3 KiB) 
  9.         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 

由此,我们可以得出结论,OpenStack虚拟机访问169.254.169.254会路由到虚拟机所在网络的DHCP地址,DHCP地址与虚拟机IP肯定是可以互通的,从而解决了虚拟机内部到宿主机外部的通信问题。那DHCP又如何转发到Nova Metadata服务呢,下一节将介绍如何解决这个问题。

3.2 Metadata请求第一次转发

前面介绍了虚拟机访问Metadata服务地址169.254.169.254,然后转发到DHCP地址。我们知道Neutron的DHCP port被放到了namespace中,我们不妨进入到虚拟机所在网络的namespace:

  1. ip netns exec qdhcp-2c4b658c-f2a0-4a17-9ad2-c07e45e13a8a bash 

(编辑:网站开发网_盐城站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!