范桂飓
AWS Global Community Hero,EdgeGallery 开源社区架构组副主席及秘书处成员,跑步与自行车运动爱好者。
- 2016 年度十大博客之星得主
- 2021 年度十大博客之星得主
- 2022 年度博客新星评委
- 2023 年度博客之星评委
- 2024 年度博客之星评委
展开
-
云计算与云原生技术系列文章
目录文章目录目录OpenStack IaaSKubernetes CaaSOpenShift PaaS云计算行业剖析云计算发展预测OpenStack IaaSKubernetes CaaSOpenShift PaaS云计算行业剖析云计算发展预测原创 2021-08-04 15:14:30 · 4900 阅读 · 5 评论 -
Neutron — 安全组
Neutron Security Group 用于针对 Neutron Port 粒度进行 ACL 安全防护,支持设置多条 Security Group Rules 来定义 ACCEPT 操作集合,所以本质是一个 White List(白名单)ACL,即不支持显式的 DENY 操作(默认 DENY ALL)。在 Linux Kernel 中,网络连接状态记录功能由 CT(connection tracker)模块提供,作为 Netfilter 状态防火墙的支撑。原创 2023-10-11 14:15:08 · 1487 阅读 · 0 评论 -
OpenStack Icehouse 部署流程
【代码】OpenStack Icehouse 部署流程。原创 2023-07-10 00:10:31 · 3099 阅读 · 0 评论 -
使用 Juju/MAAS 部署 OpenStack
Juju 使用 Charms 模型来描述和部署应用程序的各个服务组件,每个 Charm 都包含了特定组件的软件包、Config(配置)、Relation(关系)和操作指令,描述了应该如何部署这个组件,以及建立与其他组件之间的关系。Juju 是一个开源的应用程序编排(建模和部署)工具,基于 Puppet 实现,常用于编排复杂的分布式应用程序,例如云计算平台,而无需手动配置和安装每个组件,例如:OpenStack 私有云或混合云。此外,将 MAAS 集成到 Juju 中可以实现裸金属集群的管理。原创 2023-07-03 23:36:47 · 1439 阅读 · 0 评论 -
Neutron — FWaaS 实现原理
Neutron FWaaS 是在 Network Node 上的 qrouter-XXX network namespace 中通过 iptables 防火墙策略/规则技术来实现的 Inter-Subnets 之间的 ACL(访问控制列表)服务。FW Instance 的创建不需要关联到具体的 Subnet,所以 FW Rule 实际上是直接作用到 L3 Router 的。而 neutron-l3-agent-fwaas-defau 则是默认规则,其定义也是 DROP。原创 2023-07-03 13:07:22 · 1087 阅读 · 0 评论 -
先进云计算网络架构基本要求
在网计算,在以往通过单纯的计算或网络都无法很好解决的计算或网络问题,在算网融合的大背景下,可以通过算网融合的方式来解决。能够遵循开放标准和协议,以保证云计算系统的互操作性和可扩展性,同时也能够支持多种不同的硬件和软件平台。能够提供易于使用和管理的接口和工具,包括自动化配置、监控和维护等,以降低管理成本和提高效率。能够支持多种不同的云计算应用场景,并能够提供定制化的服务和解决方案,以满足不同用户的需求。能够提供强大的安全保障机制,包括身份验证、访问控制、数据加密等,以保护用户的数据和隐私。原创 2023-06-27 10:37:19 · 1706 阅读 · 0 评论 -
Kubernetes — etcd 数据库应用与操作
收集器通常是按照应用或主题来分配收集任务单元,因此可以在 etcd 上创建一个以应用或主题命名的目录,并将这个应用或主题相关的所有机器 IP 地址以子目录的形式存储到目录上,然后设置一个 etcd 递归的 Watcher,递归式的监控应用或主题的目录下所有信息的变动。从而避免重复劳动,节省计算资源。:应用在启动的时候主动从 etcd 获取一次配置信息,同时,在 etcd 上注册一个 Watcher 并等待(完成订阅),以后每次配置有更新的时候,etcd 都会实时通知订阅者,以此达到获取最新配置信息的目的。原创 2023-06-27 10:28:16 · 1832 阅读 · 1 评论 -
容器技术 — Docker 容器网络与存储技术
CNM(Container Networking Model,容器网络模型)是 Docker 公司立足于开源生态之上提出的容器网络模型,其设计初衷是实现跨多种网络基础设施的应用可移植性,本质上是一个基于 Multi-Drivers Plugins 软件架构进行设计的抽象网络能力接口层。另外,在 exec ./srv1 之前,我们往往还需要进行一些一来服务的配置初始化操作,比如向 nacos 中写入预置的 srv1 服务的配置文件内容以保证 srv1 启动后能从 nacos 中读取到自己的配置文件。原创 2023-06-09 23:12:25 · 2410 阅读 · 1 评论 -
容器技术 — Docker 容器引擎运行原理解析与实践
通常的,Entrypoint 会在 Dockerfile 中指定,但如果我们出于调试的目的,不希望 Container 在启动的时候就立马执行 Dockerfile 中的 Entrypoint 的话,就可以考虑使用该选项。用户使用 Client 与 Daemon 建立通信,并发送请求给后者 Daemon 作为 Docker 的核心,首先提供 Server 来接受 Client 的请求,而后通过 Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。原创 2023-06-06 18:14:52 · 1887 阅读 · 2 评论 -
Neutron — OvS-Agent 实现原理
Neutron OvS 系统拓扑Neutron OvS 网络拓扑首先关注计算机节点上的虚拟机流量是怎么被送出计算节点的,并在过程中插入介绍相关的虚拟网络设备于工作原理。其中,“内外 VID 转换机制“ 是一种 “分层兼容“ 设计方式。从分层的角度看,计算节点的网络模型可分为:显然,本地网络层和租户网络层之间必须存在一层转换。这就是所谓的 VID 转换。VID 是一个逻辑概念,针对不同的租户网络类型具有不同的 Tenant VID。同时,Tenant VID 的范围是由管理员租户定义的,具体而言是 ml2原创 2023-05-17 16:48:47 · 1739 阅读 · 1 评论 -
虚拟化技术 — 虚拟机计算
例如:现在很多 Application,都采用多 Worker 设计,在超线程的帮助下,两个被调度到同一核心不同超线程的 Worker,通过共享 Core 的 L1/L2 Cache,能够大幅降低了任务切换的开销。如果专用 CPU/Memory 的 VM 与允许超配 CPU/Memory 的 VM 竞争 CPU/Memory 资源,由于 Cache 的影响,将会严重影响专用 CPU/Memory 的 VM 的性能,特别在同一个 NUMA Node 上时。Kernel 会主动扫描内存,合并内容相同的内存页。原创 2023-05-15 01:32:57 · 895 阅读 · 0 评论 -
虚拟化技术 — 虚拟机迁移
由源主机 Hypervisor 控制整个迁移过程,Client 向源主机 Hypervisor 发送迁移指令,源主机和目的主机的 libvirtd 不参与控制。可见,在 libvirtd Tunnel 传输模式下,同一份数据需要被拷贝多次,并且所有的流量都通过一个端口,在大内存、高业务(快速增加 RAM 脏数据)的场景下,同样的网络带宽,Tunnel 传输模式迁移速率较慢。:在源系统和目标系统都停机的情况下,将最后一个循环的 Dirty Pages 和源系统设备的工作状态复制到目标主机。原创 2023-05-13 20:01:48 · 2450 阅读 · 0 评论 -
虚拟化技术 — 虚拟机网络
libvirtd Daemon 首次启动时,默认会为 VMs 创建一个 vSwitch,表现为一个名为 virbr0 的 Linux Bridge 设备,因为 Linux Bridge 设备是连接到 Linux Kernel TCP/IP stack 中的,所以可以通过查看 Network Interface 的方式来查看到。其中,网桥模式是目前比较简单,也是用的比较多的模式,下图是网桥模式下的 VM 的收发包的流程。并且,这个 vSwitch 默认运行在 NAT 模式下,使 VMs 可以访问外部网络。原创 2023-05-13 19:58:05 · 1527 阅读 · 0 评论 -
虚拟化技术 — 虚拟机磁盘
RAW(裸数据)磁盘文件格式,可以作为一个 Block 设备(一种磁盘类型)直接给虚拟机使用。当一个 Image 是 RAW 格式并作为 Root Disk 时,直接直接从 RAW Image 中启动 GuestOS。相对的,RAW 格式最大的缺点就是不支持快照。所以才有了后来 QCOW2 格式。原创 2023-05-13 19:52:21 · 1851 阅读 · 0 评论 -
Kubernetes — KubeVirt
创建 VMI 后,等待 disk.img 转换成功,然后在对应的 Node 上启动 Launcher Pod,并将 CDI 流程生成的 PV 挂载到 Pod 内,当做虚拟机启动的系统盘。virt-controller(KubeVirt Controller)是 KubeVirt CRD 对应的一组 K8s controllers,基于 Informer 的 list-watch 机制与 K8s api-server 通讯,用于监听、处理和维护 KubeVirt CRD(VM、VMI 等)的状态事件。原创 2023-05-13 18:12:13 · 1494 阅读 · 0 评论 -
Neutron — 面向多租户的 VPC 虚拟网络模型
前面提到,Network 是一个 L2 网络的抽象,Subnet 是一个 L3 网络的抽象,所以 Network 和 Subnet 可以是一对多的关系,就像我们在同一个 VLAN 中配置多个不同 CIDR 的 IP 网络。External Network 是 Provider Network 中一种特殊的应用场景,要求能够与外部 IP 网络进行 L3 路由互通,且具备分配 Floating IP 的功能,这在底层是通过网络节点上的 NAT 功能实现的。具有简单高效的特性,适用于小型生产环境。原创 2023-05-11 17:59:59 · 1694 阅读 · 0 评论 -
SDN — OpenvSwitch 常用指令和应用示例
如果想在 ns0 ping 通 p0 Interface 的 IP 地址,那么首先需要把 lo Up 起来,这是因为所有只在本机内部流转的数据包都需要经过 lo 设备的处理,而 ping 外部 IP 地址时内核协议栈直接将数据包从 NIC 送出。数据流先从 table0 开始匹配,如 actions 有 goto_table,再进行后续 table 的匹配,实现多级流水线,如需使用 goto table,则创建流表时,指定 table id,范围为 0-255,不指定则默认为 table0。原创 2023-05-04 13:29:12 · 842 阅读 · 0 评论 -
虚拟化技术 — VirtIO 虚拟设备接口标准
这也意味着使用 VirtIO 的 GuestOS 需要经过一定的代码修改(安装非原生的 Device Driver),这也是为什么需要将 VirtIO 定位于 “虚拟化设备接口标准“ 的原因,其整体的集成架构需要由 Front-end(GuestOS Kernel Device Driver)和 Back-end(VMM Provider)共同遵守统一的传输协议。值得注意的是,在 PCI Passthrough 场景中,可以使用 virtio-pci(更多的是使用 VFIO)。这体现了数控分离带来的好处。原创 2023-04-24 18:17:57 · 1525 阅读 · 0 评论 -
虚拟化技术 — 硬件辅助的虚拟化技术
如此的,GuestOS 就能够照常执行内核态的指令了。从 CPU 的角度看,为了解决虚拟机访问物理网卡等 I/O 设备的性能问题,就是要避免 VMM 对 CPU 指令的捕获/翻译、上下文切换、内存拷贝等损耗,于是 Intel VT-d 提供了 DMA Remapping Feature(DMA(直接存储器存取)的重映射功能),即:虚拟机可以通过 DMA Remapping Feature 直接访问到宿主机的物理网卡设备的内存空间,且进行安全访问,故称这段地址空间为:虚拟机对网卡访问的 DMA 保护域。原创 2023-04-19 18:31:59 · 1102 阅读 · 0 评论 -
虚拟化技术 — Linux Kernel 虚拟化网络设备
值得注意的是,区别于物理交换机,Linux Bridge 的本质是一个 Kernel 中的虚拟网络设备,也具备虚拟网卡的特性,即:可以配置数据面的 MAC/IP 地址(区别于物理交换机的管理面 IP 地址)。虚拟网卡驱动程序的实现方式与物理网卡没有区别,依旧是常规的 “探测-注册-调用” 框架。Veth-pair 的实现原理的本质是一种 “反转数据传输方向“ 的实现,即:在 Kernel 中将需要被发送的数据包 “反转" 为新接收到的数据包,重新进入 Kernel Network Stack 处理。原创 2023-04-26 18:46:09 · 1451 阅读 · 0 评论 -
虚拟化技术 — QEMU-KVM 基于内核的虚拟机
例如:在执行 GuestOS 代码的过程中,GuestOS 发出了一个 I/O 请求,该事件会被 VMM 捕获,然后执行 VM Exit 执行,CPU 会自动将 GuestOS 的上下文加载到 VMCS Guest State Area 中,挂起 GuestOS,并从 VMCS Host State Area 中加载 VMM 的通用事件处理函数的入口地址,开始执行 VMM 的代码。自定义 VM 的 CPU 模型,-cpu 选项除了可以指定 GuestOS 的 CPU 模型,还可以指定附加的 CPU 特性。原创 2023-04-23 16:59:07 · 1441 阅读 · 1 评论 -
云计算技术 — 混合云 — 经典应用场景
弹性伸缩是 Public Cloud 的核心能力之一,它充分提高了业务系统的容错能力,在业务峰值时可以在不同的云上快速水平扩展,在业务低谷时可以自动释放回收资源。云容灾业务一般采用主从架构。对一个应用而言,其开发测试过程一般需要灵活快捷的环境搭建,而且期间经常重构,这时公有云是个不错选择,而一旦正式上线,则希望运行在安全稳定的环境中,那时就会考虑私有云。对于拥有多个分支的企业,尤其是跨国企业来说,如果业务都由总部数据中心来集中处理,随着业务量的增加,总部的处理能力和接入带宽将明显成为瓶颈。原创 2022-08-19 11:56:30 · 1249 阅读 · 0 评论 -
Kubernetes — 核心资源对象 — Controller
在正方形灰框内(从template开始)的是嵌入在Deployment里的Pod的设置,灰框上面的是部署(Deployment)的设置。一般的,当Pod因为故障需要删除并重新启动时,它的名称会发生变化。ReplicaSet控制器是不支持滚动更新的,应用的需求在不断更新迭代,版本也在不断的升级,此时就需要应用Deployment控制器来支持滚动升级。负责Pod的多副本管理,保证Pod的副本数量永远与设定的数量一致,以此达到“Pod是脆弱的,但应用是健壮的”的效果。...原创 2022-08-01 12:50:08 · 979 阅读 · 0 评论 -
Kubernetes — 核心资源对象 — 网络
ExternalNameService用于引入集群外部的Service,它通过externalName字段指定一个ExternalService的地址,然后在集群内部访问此Service就可以访问到集群外部的服务了。换句话说,Service和Pod之间的联系是通过Endpoints来实现的。每个Pod的IP地址,PodIP通常只能通过ServiceIP的转发来进行访问,Service和Pod之间可以直接进行通信,属于局域网通信。......原创 2022-08-01 12:48:24 · 952 阅读 · 0 评论 -
Kubernetes — 核心资源对象 — 存储
需要为Pod分配存储资源时,用户可以创建一个PVC,指明存储资源的容量大小和访问模式(e.g.只读、读写)等信息,Kubernetes会查找并提供满足条件的PV。KubernetesVolume支持多种存储插件,它可以支持本地的存储,可以支持分布式的存储,比如Ceph、GlusterFS;也可以支持云存储,比如阿里云的云盘等。Pod资源基于PVC的定义将选定的PV关联为PVC,而后即可被容器所使用。PV是群集中的资源,PVC是对这些资源的请求,并且还充当对资源的检查。.........原创 2022-08-01 12:47:21 · 879 阅读 · 0 评论 -
Kubernetes — 网络流量模型
Kubernetes 网络中涉及以下几种类型的 IP 地址:Node IP:宿主机 IP 地址。Pod IP:Pod 是 Kubernetes 的最小部署单元,Pod 下可以包含若干个 Containers,但是 Container 没有独立的 IP 地址,它们共享 Pod 的 IP 地址和 Ports 区间。Cluster IP:这里所述 Cluster 并非 Kubernetes Cluster,而是 Kubernetes Service 的 IP 地址。外部网络是无法访问该地址的,只有 Kubern原创 2022-08-01 11:54:25 · 998 阅读 · 0 评论 -
Kubernetes — Flannel
Flannel可为集群中所有节点重新规划IP地址使用规则,从而使得不同节点上的容器能够获得“同属一个内网”且“不重复的”的IP地址,让不同节点上的容器能够直接通过内网IP通信,网络封装部分对容器是不可见的。另外,如果两个Pods所在的不同Nodes处于在同一个LAN中,可以让VxLAN也支持host-gw的功能,即直接通过物理网卡的网关路由转发,而不再使用隧道,从而提高了VxLAN的性能,这种Flannel的功能叫directrouting。......原创 2022-07-31 14:53:18 · 853 阅读 · 0 评论 -
Kubernetes — Calico
也就是说,Callico实现了从src-container经过src-hos经过IPFabric路由,然后到达dest-host和dest-container,整个过程中始终都是根据BGP协议进行Underlay得路由转发,并没有进行封包/解包过程,这样转发效率就会快得多,是Callico容器网络的技术优势。大规模部署时使用,通过一个或者多个BGPRouteReflector来完成集中式的路由分发,可以自建RR,也可以使用物理网络中的RR。............原创 2022-07-31 14:52:00 · 1409 阅读 · 0 评论 -
Libvirt — 使用 OvS 代替 Linux Bridge
目录文章目录目录使用 OvS 代替 Linux Bridge使用 OvS 代替 Linux Bridge编辑 ovs-net XML 文件。$ vi ovs-net.xml <network> <name>ovs-net</name> <forward mode="bridge"/> <bridge name="ovs-br0"/> <virtualport type="openvswitch"/><原创 2022-05-06 00:06:04 · 2036 阅读 · 0 评论 -
QCOW2 — 使用 libguestfs 修改 QCOW2 镜像的密码
目录文章目录目录使用 libguestfs 修改 QCOW2 镜像的密码使用 libguestfs 修改 QCOW2 镜像的密码安装 guestfish tool。$ yum install libguestfs guestfish -y其中 libvirtd。$ systemctl start libvirtd获取原始 Qcow2 镜像。$ cd /tmp$ wget https://cloud.centos.org/centos/7/images/CentOS-7-x8原创 2022-05-05 22:34:21 · 1977 阅读 · 0 评论 -
Nova — GPU/vGPU 虚拟机
目录文章目录目录云主机使用显卡的实现方式虚拟显卡物理显卡直通物理显卡虚拟化云主机使用显卡的实现方式采用虚拟显卡采用物理显卡直通采用物理显卡虚拟化虚拟显卡虚拟显卡技术,主要用于虚拟机 Remote Console 领域,如:VNC(Virtual Network Computing,虚拟网络计算机),它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上。VNC 主要由 VNC server 和 VNC viewer 两部分组成。用户需先将 VNC server 安装在被远程操控的计算原创 2022-04-02 23:00:11 · 2003 阅读 · 0 评论 -
云计算技术 — 混合云 — Overview
目录文章目录目录前文列表虚拟私有云/网络(VPC)公有云基于 Overlay 技术提供的混合云网络架构 VPCVPC 的实现原理VPC 的接入前文列表《数据中心网络架构的问题与演进 — 传统路由交换技术与三层网络架构》《数据中心网络架构的问题与演进 — 网络虚拟化》《数据中心网络架构的问题与演进 — CLOS 网络与 Fat-Tree、Spine-Leaf 架构》《数据中心网络架构的问...............原创 2020-03-01 18:43:06 · 4030 阅读 · 0 评论 -
Neutron — Hierarchical Port Binding(层次化端口绑定)
目录文章目录目录Neutron OvS VxLAN 的局限性硬件 SDN 方案Hierarchical Port Binding(层次化端口绑定)Neutron OvS VxLAN 的局限性OvS 采用的是 OpenFlow/OVSDB on the Host 模式,更多的应用场景是 Flat 或 VLAN 类型网络。而面对大规模数据中心场景,OvS VxLAN Overlay 则有着不可忽视的转发性能和扩展性限制:一方面 Pre Programmed(流表预配置)模式:通常会把同属于一个 VP原创 2021-12-07 16:13:14 · 1471 阅读 · 0 评论 -
云计算技术 — 容灾备份技术
目录文章目录目录负载均衡本地多活同城双活异地双活两地三中心异地多活负载均衡本地多活同城双活架构规范:选择离 IDC 物理距离<=200km 的云上 Region,网络延迟较低(约 5~7ms)。应用、中间件云上云下冗余对称部署,同时对外提供服务(应用双活)。数据库异地主备,异步复制备份。应用读写同一数据中心的数据库,避免考虑一致性问题。应用流量双活:业务应用云上云下对称部署,并基于 MSHA 接入层集群,来承接入口 HTTP/HTTPS 流量,按照比例或精准路由规则云上云下原创 2022-02-08 11:51:45 · 2212 阅读 · 0 评论 -
云计算技术 — 分布式云
目录文章目录目录分布式云(Distributed Cloud)分布式云的种类本地公有云IoT 边缘云城域社区云5G 移动边缘云全球网络边缘云分布式云节点(Sub-Station)分布式云的两个阶段1、like-for-like 混合2、下一代云分布式云(Distributed Cloud)Gartner 预测,到 2025 年,超过 50% 的组织将在其选择的地点使用分布式云,从而实现转型业务模式。Gartner 对分布式云的定义:将公有云服务(通常包括必要的硬件和软件)分布到不同的物理位置(即转载 2022-02-07 21:19:20 · 3652 阅读 · 0 评论 -
云计算技术 — 多云
目录文章目录目录多云多云的优势多云的用例灾难恢复(Disaster recovery)故障转移(Failover)成本优化(Cost optimization)避免供应商锁定(Avoiding vendor lock-in)数据主权(Data sovereignty)特定服务访问(Access to specialized services)低延迟多云的最佳实践部署策略成本管理数据安全多云治理多云架构设计云化多云迁移多云重构多云重连使用云代理的多云重连多云狭义地说,多云指的是采用了多朵公有云来构建公司原创 2022-02-07 21:05:45 · 2031 阅读 · 0 评论 -
Docker 容器技术 — Compose 编排
目录文章目录目录docker compose网络模式端口映射服务启动顺序容器内环境变量Compose 配置文件环境变量版本映射docker composeDocker Compose 是一个用于定义和运行多容器的应用程序编排工具。使用 Compose,我们可以通过一个 YAML 文件来配置应用程序的所有容器服务组件。然后,只需一条命令,我们就可以创建并启动配置中的所有服务。网络模式docker compose 默认会为 docker-compose.yml 中的各个 Services 使用 Br原创 2022-02-07 18:44:34 · 1481 阅读 · 0 评论 -
Docker 容器技术 — Swarm 集群
目录文章目录目录Docker Swarm SDN控制面数据面SDN Overlay 模式容器集群服务Docker Swarm SDN控制面Docker Swarm 集群的内置了 SDN Controller 功能,基于 SWIM 的 Gossip 协议在 Docker 容器集群中传播网络状态信息和拓扑。其中,Gossip 协议有效地实现了 Docker 集群内的最终一致性,确保网络能够跨多个节点进行扩展,而不会引入缩放问题,例如:收敛缓慢或误报节点故障。另外,Controller 支持通过加密通原创 2022-02-07 17:41:12 · 1301 阅读 · 0 评论 -
Cloudify — OpenStack Infrastructure Plugin V3
目录文章目录目录Cloudify PluginsPlugins UsageOpenStack Infrastructure Plugin V3ImportsInputsAuthenticationCommon InterfacesNode TemplatesOperationsResource ConfigPropertiesRelationshipsCloudify Plugins在 Cloudify 中,Blueprints 被用于描述任何需要被编排部署的对象,其体现为一个 YAML 文件,其中的原创 2021-12-16 01:00:58 · 1248 阅读 · 0 评论 -
Nova — 虚拟机密码修改
目录文章目录目录方式 1:User data 密码注入方式 2:Guest-Agent 更新方式 3:重新创建镜像方式 1:User data 密码注入$ yum install libguestfs python-libguestfs libguestfs-tools-c$ vi /etc/nova/nova.conf...[libvirt]inject_password=trueinject_key=trueinject_partition=-1$ systemctl resta原创 2021-12-14 21:54:41 · 1850 阅读 · 0 评论