构建高可用系统设计OpenStack、Docker、Mesos和Kubernetes(简称K8s)

news2025/1/14 4:46:38

如果构建高可用、高并发、高效运维的大型系统

大型系统架构设计包括业务层设计、服务层设计、基础架层设计、存储层设计、网络层协同设计来完成。

一、业务层

根据主要业务范畴的分类和特征提取,抽象出独立的业务系统,分别统计系统的用户角色群体、访问量、计算量。

二、服务层

细化和落地业务层的划分、拆分、服务治理

三、架构技术层

构建技术包括:
OpenStack、Docker、Mesos和Kubernetes(简称K8s)都是在云计算和容器化技术领域中常用的工具和平台,它们之间存在着不同的关系和应用场景。

OpenStack:

OpenStack是一个开源的云计算基础设施即服务(IaaS)平台,主要用于构建和管理云计算基础设施,比如虚拟机、存储和网络资源。虽然OpenStack可以与容器技术如Docker配合使用,管理容器化的应用,但OpenStack并不是专门为容器设计的。它主要关注虚拟机和相关的资源管理。

Docker

: Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖环境打包成一个独立的容器,这个容器可以在任何支持Docker的平台上运行,保证了应用在不同环境间的一致性。Docker引擎(也被称为Moby)是容器运行时的实现,是管理容器的核心技术,而Docker公司一直在推动Docker引擎的功能扩展,比如支持多节点集群、容器编排和服务发现等。

Mesos:

Mesos是一个开源的资源管理系统,它可以运行在传统的虚拟机或者容器上,管理跨多个主机的计算资源。Mesos的核心抽象概念是资源(resource),它允许用户运行各种分布式应用程序,包括传统的虚拟机和容器。Mesos可以和Docker一起工作,但它更专注于资源管理和任务调度,而不是容器编排。

Kubernetes(K8s)

: Kubernetes是由Google开源的容器编排平台,它用于自动化应用容器的部署、扩展和管理。Kubernetes管理的是容器集群,它的目标是使容器化的应用在各种环境中都能快速部署、运行和扩展。Kubernetes使用Docker或其他容器运行时来实际运行容器,可以看作是一个更高级别的管理系统,它提供了一系列工具和服务来管理容器的生命周期。
总的来说,OpenStack和Mesos更偏向于传统的IaaS资源管理,而Docker是容器技术的实现,Kubernetes则是为了在容器化环境中提供集群管理和编排的功能。在现代的云计算架构中,这些工具经常会被组合使用,以提供全面的基础设施和应用管理能力。

技术组件间区别和关系

1,关于容器技术与虚拟机:

虚拟机:在容器技术之前,业界的网红是虚拟机,虚拟机技术的代表,是vmware 和openstack
所谓虚拟机就是在你的操作系统里面。装一个软件,然后通过这个软件,再模拟一台甚至多台字电脑出来。字电脑里面可以和正常电脑一样运行程序。并且子电脑与子电脑之间是相互隔离的,互不影响。

容器技术:而容器技术恰好没有这些缺点,他不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”),它启动时间很快,几秒钟就能完成,并且,它对资源的利用率很高(一台主机可以同时运行几千个docker容器),此外,他占用的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB甚至KB级

两者联系:虚拟机属于虚拟技术,而docker这样的容器技术,也是虚拟技术,属于轻量级的虚拟机

虚拟机的缺点:虚拟机虽然可以隔离出很多子电脑,但是占用空间大,启动更慢,虚拟软件可能还要花钱(如vmware)

2,关于docker

docker是创建容器的工具,是应用容器引擎
负责 搭建,发送,运行 流程、 创建一次,随处随地可用部署。

docker技术的三大核心概念:镜像,容器,仓库
docker仓库, 是一个特殊的文件系统,他除了提供容器运行时候所需要的程序,库,资源,配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量),镜像不包含任何动态数据,其内容在构建之后也不会被改变。

于是,这也就变成了一个公共大仓库,负责对docker镜像管理的是docker registry服务(类似于仓库管理员)所以 dockerRegistry服务对镜像的管理是非常严格的。最常使用的registry公开服务,是官方的docker hub,这也是默认的registry,并拥有大量的高质量的官方镜像。

3,关于k8s:

首先,k8s是一个全新的基于容器技术的分布式架构领先方案,k8s是goole开源的容器集群管理系统(谷歌内部:borg)。在docker技术基础上,为容器化的应用提供部署。
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。
Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。K8S是它的缩写,用“8”字替代了“ubernete”这8个字符。
虽然docker很火,但是想应用于具体的业务实现,是存在困难的----编排,管理和调度等各个方面,都不容易,于是人们迫切需要一套管理系统,对docker及容器进行更高级更灵活的管理
就在这个时候,k8s出现了
和Docker不同,K8S的创造者,是众人皆知的行业巨头——Google。
然而,K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。
K8S是2014年6月由Google公司正式公布出来并宣布开源的。
同年7月,微软、Red Hat、IBM、Docker、CoreOS、 Mesosphere和Saltstack 等公司,相继加入K8S。
之后的一年内,VMware、HP、Intel等公司,也陆续加入。
2015年7月,Google正式加入OpenStack基金会。与此同时,Kuberentes v1.0正式发布。

k8s的架构
一个K8S系统,通常称为一个K8S集群(Cluster)。
这个集群主要包括两个部分:
一个Master节点(主节点)
一群Node节点(计算节点)
在这里插入图片描述

一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。
首先是master节点:
在这里插入图片描述

Master节点包括API Server、Scheduler、Controller manager、etcd。
API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。
Scheduler负责对集群内部的资源进行调度,相当于“调度室”。
Controller manager负责管理控制器,相当于“大总管”。

Node节点

在这里插入图片描述

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。
Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。

Docker,不用说了,创建容器的。
Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
Kube-proxy,主要负责为Pod对象提供代理。
Fluentd,主要负责日志收集、存储与查询。

前几年,大家以为虚拟机是核心网的终极形态。目前看来,更有可能是容器化。这几年经常说的NFV(网元功能虚拟化),也有可能改口为NFC(网元功能容器化)。
而采用容器之后,很可能只需要一台服务器,创建十几个容器,用不同的容器,来分别运行不同网元的服务程序。

这些容器,随时可以创建,也可以随时销毁。还能够在不停机的情况下,随意变大,随意变小,随意变强,随意变弱,在性能和功耗之间动态平衡。
5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。

5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。

按照这样的发展趋势,在移动通信系统中,除了天线,剩下的部分都有可能虚拟化。核心网是第一个,但不是最后一个。虚拟化之后的核心网,与其说属于通信,实际上更应该归为IT。核心网的功能,只是容器中普通一个软件功能而已。

4,关于openstack
OpenStack是个虚拟化的云操作系统。它把一大块资源打碎了,每小块资源上部署操作系统甚至一些应用。拿出其中一小块,租给你用,你不用关心,也无从知道,你系统的CPU、RAM、DISK在哪台共享的服务器上。常用于IaaS云部署。
公认的云计算IaaS平台,其管理的核心目标对象是机器(虚拟机或物理机),当然也可以管理存储和网络,但那些也大都是围绕着机器所提供的配套资源。近年来容器技术火了之后,OpenStack也开始通过各种方式增加对容器的支持,但目前OpenStack还不被视为管理容器的主流平台。。
OpenStack 社区和 Docker 的结合越来越紧密。然而正如其他回答所示,OpenStack 主要还是用来管理 VM(虚拟机)。
OpenStack 很庞大,底层资源管理能力很强。
Kubernetes 的强项在于容器编排,可以很好解决应用上云的问题。Kubernetes 可以运行在 OpenStack 上。Kubernetes 的好处,推荐来自浙大的这篇文章:请注意,容器技术圈已迈入后Kubernetes时代!
以下是5个OpenStack的重要构成部分:
Nova – 计算服务
Swift – 存储服务
Glance – 镜像服务
Keystone – 认证服务
Horizon – UI服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础Python学习

1.环境搭建 1.1 安装运行环境python3.13 Welcome to Python.org 1.2 安装集成开发环境PyCharm PyCharm: the Python IDE for data science and web development 1.3 创建项目 && 设置字体 2.基础语法 2.1 常量与表达式 在python中整数除整数不会优化,所…

Java Map

Map——广义集合的子集 HashTable是早期Java类库提供的一个哈希表实现,扩展了Dictionary类,类结构上与HashMap明显不同,本身是同步的,不支持null键和值,由于同步导致的性能开销,已经很少被推荐使用。 Hash…

【MySQL — 数据库基础】MySQL的安装与配置 & 数据库简单介绍

数据库基础 本节目标 掌握关系型数据库,数据库的作用掌握在Windows和Linux系统下安装MySQL数据库了解客户端工具的基本使用和SQL分类了解MySQL架构和存储引擎 1. 数据库的安装与配置 1.1 确认MYSQL版本 处理无法在 cmd 中使用 mysql 命令的情况&a…

实测数据处理(BP算法处理)——SAR成像算法系列(九)

系列文章目录 《SAR学习笔记-SAR成像算法系列(一)》 《后向投影算法(BPA)-SAR成像算法系列(二)》 《后向投影算法(续)-SAR成像算法系列(八)》 文章目录 一…

(数据结构与算法)如何提高学习算法的效率?面试算法重点有哪些?面试需要哪些能力?

面试官眼中的求职者 通过对你算法的考察!!!! 缩进太多!!一般不要超过三层!!!缩进越少,bug越少;逻辑比较复杂,把这些包装成为函数&…

Day05:缓存双写一致性

redis做为缓存,mysql的数据如何与redis进行同步呢?(双写一致性–强一致) 一种是一致性要求比较高的同步方案,另一种是允许延迟一致的异步通知。 什么是双写一致性? 双写一致性:当修改了数据库…

vue3+typescript自定义input组件

官方文档:https://cn.vuejs.org/guide/components/events#%E5%AE%9A%E4%B9%89%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6 触发与监听事件​ 在组件的模板表达式中,可以直接使用 $emit 方法触发自定义事件 (例如:在 v-on 的处理函数中)…

代码之丑第一期-缩进

各位小伙伴们,大家好!咱今天就算是正式开张了。实不相瞒,第一期的内容早已写好,但唯独这开篇方式,笔者想了好些时间,包括但不限于如下风格: 斗破苍穹式(已经三刷):代码优雅之力,三段!级别:低级!百年孤独式(困扰于错综复杂的人物关系,放弃):多年以后,面对吐槽…

idea2024加载flowable6.8.1.36遇到的问题-idea启动flowable问题flowable源码启动问题

代码下载地址: https://gitee.com/hanpenghu_admin_admin/flowable6.8.1.git 1.首先是通过顶层目录maven clean install 发现很多子模块并不会install本地mavenStore库,这导致了,一堆相互依赖的模块报错找不到,所以需要根据报错…

Vue.js 中 v-for 指令的三种常见用法详解及key、value、id的作用

作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:WebStorm 目录 遍历数组 介绍 代码 遍历对象数组 介绍 代码 遍历对象本身 介绍 代码 效果呈现 key、value、id的作用 1. value 2. key 3. id 在 Vue.js 中&#xff0c…

【论文投稿】国产游戏技术:迈向全球引领者的征途

【IEEE出版南方科技大学】第十一届电气工程与自动化国际会议(IFEEA 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看:https://ais.cn/u/nuyAF3 目录 国产游戏技术能否引领全球? 一、国产游戏技术的崛起之路 1.1 初期探索与积…

React的ts文件中通过createElement拼接一段内容出来

比如接口返回一个值 const values [23.00, 40.00/kg];想做到如下效果, 如果单纯的用render渲染会很简单, 但是在ts文件中处理,所以采用了createElement拼接 代码如下: format: (values: string[]) > {if (!values || !val…

江协科技最新OLED保姆级移植hal库

江协科技最新OLED移植到hal库保姆级步骤 源码工程存档 工程和源码下载(密码 1i8y) 原因 江协科技的开源OLED封装的非常完美, 可以满足我们日常的大部分开发, 如果可以用在hal库 ,将是如虎添翼, 为我们开发调试又增加一个新的瑞士军刀, 所以我们接下来手把手的去官网移植源码…

HarmonyOS:使用Emitter进行线程间通信

Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。 一、Emitter的开发步骤如下: 订阅事件 import { emitter } from kit.BasicServicesKit; import { promptAction } from kit.…

Wi-Fi 进化论:从过去到未来(6/10)

Wi-Fi(发音: /ˈwaɪfaɪ/),在中文里又称作“移动热点”,是Wi-Fi联盟制造商的商标作为产品的品牌认证,是基于IEEE 802.11标准的无线局域网通信技术 [6]。基于两套系统的密切相关,也常有人把Wi-F…

【C++初阶】第5课—动态内存管理

文章目录 1. 内存分布2. C语言动态内存管理3. C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. operator new和operator delete函数5. new和delete的实现原理6. malloc/free和new/delete的区别7. 定位new表达式(了解即可) 1. 内存分布 先来做一个关于…

学习threejs,设置envMap环境贴图创建反光效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.CubeTextureLoader 立…

Matlab Simulink HDL Coder FPGA开发初体验—计数器

目录 一、Simulink设计及仿真二、Verilog HDL代码转换1、参数配置2、HDL代码生成 三、ModelSim仿真分析1、使用自己编写的Testbench文件进行仿真2、使用HDL Coder生成的Testbench文件进行仿真 前言 Simulink HDL Coder‌是一款将Simulink和Stateflow模型转化为可综合的Verilog和…

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1,可以用数组存放,如果有雷就用1表示,没雷就用0表示。 2,排查(2,5)这个坐标时,我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…

实现点名神器的pyqt6实现

利用python gui创建点名神器,包含加分、导出加分记录、清除加分记录。 点名页面 首先导入学生信息 导入成功 开始点名 点击停止 点过之后,点击加分 加完分 查看加分记录 可以直接进入导出记录和清除历史。 此文到此结束,想要源码的请私聊我&a…