OpenStack 默认通过 l3-agent 创建和管理 neutron-ns-metadata-proxy,进而与 nova-metadata-api 通信.但不是所有环境都有 l3-agent,比如直接用物理 router 的场景.这时就需要走另一条路:让 dhcp-agent 来创建和管理 neutron-ns-metadata-proxy. 打开 /etc/neutron/dhcp_agent.ini,设置 force_metadata 重启 dhcp-agent 后,可以看到控制节点…
要想从 nova-api-metadata 获得 metadata,需要指定 instance 的 id.但 instance 刚启动时无法知道自己的 id,所以 http 请求中不会有 instance id 信息,id 是由 neutron-metadata-agent 添加进去的.针对 l3-agent 和 dhcp-agent 这两种情况在实现细节上有所不同,下面分别讨论. l3-agent 下面是 l3-agent 参与情况下 metadata http 请求的处理流程图. 大的流程为…
前面我们是直接用 curl 测试 VIP,在更为真实的场景中通常会使用 floating IP 访问 VIP. 下面我们给 VIP 关联一个 floating IP,再进行测试. 访问 Project -> Compute -> Access & Security,打开 Floating IPs 标签页,点击 "Allocate IP to Project" 按钮. 在下拉列表中选择 "ext_net",Neutron 将从该网络中分配 floa…
本节开始学习 Service.我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会通过动态创建和销毁 Pod 来保证应用整体的健壮性.换句话说,Pod 是脆弱的,但应用是健壮的. 每个 Pod 都有自己的 IP 地址.当 controller 用新 Pod 替代发生故障的 Pod 时,新 Pod 会分配到新的 IP 地址.这样就产生了一个问题: 如果一组 Pod 对外提供服务(比如…
在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部署时会默认安装 kube-dns 组件. kube-dns 是一个 DNS 服务器.每当有新的 Service 被创建,kube-dns 会添加该 Service 的 DNS 记录.Cluster 中的 Pod 可以通过 <SERVICE_NAME>.<NAMESPACE_NAME> 访问 Service. 比如可以用 htt…
最近在学习 OpenStack 的相关知识,一直苦于 OpenStack 的体系庞大以及复杂程度,学习没有进度,停滞不前.偶然机会在 51CTO 上发现了一个热点的专题关于 OpenStack 的,题目叫做<每天5分钟 玩转 OpenStack>,抱着试试的态度看了几篇,被文章的内容和书写风格吸引了,内容全面,思路清晰,简单易懂,关键是每篇博文的内容很少,绝对是一泡大便的功夫.每周一.周三.周五定时更新,微信也有同步更新.不过大神在博客园cnblogs上的博文没有目录,每次翻阅的时候甚是费劲,…
<每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重实践并兼顾理论 主要从实际操作的角度带着大家学习 OpenStack. 为啥要写这个? 简单回答是:因为OpenStack 学习难度大,但如果掌握了价值会很大 先做一个自我介绍吧. 本人网名CloudMan,在 IT 这个行当已经摸爬滚打了十多年,05年之前是搞上层应用开发的,那时候 Java 比较火,所以…
下面是 Metadata Service 的架构图,本节我们详细讨论各个组件以及它们之间的关系. nova-api-metadata nova-api-metadata 是 nova-api 的一个子服务,它是 metadata 的提供者,instance 可以通过 nova-api-metadata 的 REST API 来获取 metadata 信息. nova-api-metadata 运行在控制节点上,服务端口是 8775. 通过进程 ID 13415 查看该启动程序. 我们这个环境是…
我们将通过实验详细分析 instance 从 nova-api-metadata 获取信息的完整过程. 环境介绍 1. 一个 all-in-one 环境(多节点类似). 2. 已创建 neutron 网络 test_net,DHCP 已启动.在这个 metadata 实验中, test_net 的 type 不重要,flat.vlan.vxlan 都可以. 3. 暂无 neutron router. 准备就绪,开始实验. 启动 instance 通过 cirros 镜像部署一个 instance…
前面我们已经讨论了 DHCP agent 的配置以及 namespace 如何隔离 dnsmasq 服务,本节将以 cirros-vm1 为例分析获取 DHCP IP 的详细过程. 在创建 instance 时,Neutron 会为其分配一个 port,里面包含了 MAC 和 IP 地址信息.这些信息会同步更新到 dnsmasq 的 host 文件.如下图所示: 同时 nova-compute 会设置 cirros-vm1 VIF 的 MAC 地址. 一切准备就绪,instance 获取 IP…