Openshift概念
Openshift是一个开源容器云平台,是一个基于主流的容器技术Docker和K8s构建的云平台。Openshift底层以Docker作为容器引擎驱动,以K8s作为容器编排引擎组件,并提供了开发语言,中间件,DevOps自动化流程工具和web console用户界面等元素,提供了一套完整的基于容器的应用云平台。
Red Hat是Openshift的最大贡献者。
Openshift包括社区版和企业版
社区版: Openshift Origin
企业版: Openshift Online/Openshift Enterprise
【重要概念】
system:admin为默认的集群管理员,拥有最高的权限。该用户没有密码,登陆依赖于证书密钥。
Service Account 是 Openshift 中专门供程序和组件使用的账号。不同的用户或组关联不同的角色,同时关联不同的SCC(security context constriant)安全上下文
【架构】
自底而上包括几个层次:基础架构层,容器引擎层,容器编排层,PaaS服务层,界面及工具层。
基础架构层:为Openshift平台的运行提供基础的运行环境。Openshift支持运行在物理机,虚拟机(kvm,vmware,virtual box等),公有云(阿里云,AWS等),私有云,混合云上。
容器引擎层:以当前主流的Docker作为容器引擎。
容器编排层:以Google的k8s进行容器编排。
PaaS服务层:容器云平台的最终目的是为上层应用服务提供支持,提高开发,测试,部署,运维的速度和效率。用户在Openshift云平台上可以快速的获取和部署一个数据库,缓存等。
界面及工具层:Openshift提供了多种用户的接入渠道:Web控制台,命令行,RestFul接口等
【核心组件】
1. Master节点
主控节点。集群内的管理组件都运行在Master节点上。Master节点负责集群的配置管理,维护集群的状态。Master节点运行的服务组件:
API Server:负责提供Web console和RESTful API。集群内所有节点都会访问API Server,更新节点的状态及其上的容器状态。
数据源(Data store):集群内所有状态信息都会存储在后端的一个etcd的分布式数据库中。
调度控制器(Scheduler):负责按用户输入的要求寻找合适的计算节点。
复制控制器(Replication Controller):负责监控当前容器实例的数量和用户部署指定的数量是否匹配,若有容器异常退出,复制控制器发现实际数少于部署定义数,从而触发部署新的实例。
2. Node节点
计算节点。接收Master节点的指令,运行和维护Docker容器。Master节点也可以是Node节点,只是在一般环境中,其运行容器的功能是关闭的。
3. Project:在k8s中使用命名空间来分隔资源。同一个命名空间中,某一个对象的名称在其分类中必须唯一,但在不同命名空间中的对象则可以同名。Openshift集成了k8s命名空间的概念,而且在其上定义了Project对象的概念,每一个Project会和一个namespace相关联。
4. Pod:在Openshift中的容器都会Pod包裹,即容器都运行在Pod内部,一个Pod可以运行一个或多个容器,绝大多少情况下,一个Pod内部运行一个容器。
5. Service:由于容器是一个非持久化的对象,所有对容器的修改再容器销毁后都会丢失,而且每个容器的IP地址会不断变化。k8s提供了Service组件,当部署某个应用时,会创建一个Service对象,该对象与一个或多个Pod关联,同时每个Service分配一个相对恒定的IP,通过访问该IP及相应的端口,请求就会转发到对应Pod端口。除了可通过IP,也可以通过域名访问Service,格式为:..svc.cluster.local
6. Router和Route:Service提供了一个通往后端Pod集群的稳定入口,但是Service的IP地址只是集群内部的节点和容器可见。外部需通过Router(路由器)来转发。Router组件是Openshift集群中一个重要的组件,它是外界访问集群内容器应用的入口。用户可以创建Route(路由规则)对象,一个Route会与一个Service关联,并绑定一个域名。Route规则被Router加载。当集群外部的请求通过指定域名访问应用时,域名被解析并指向Router所在的计算机节点上,Router获取该请求,然后根据Route规则定义转发给与这个域名对应的Service后端所关联的Pod容器实例。上述转发流程类似于nginx。Router负责将集群外的请求转发到集群的容器,Service则负责把来自集群内部的请求转发到指定的容器中。
7. Persistent Storage:容器默认是非持久化的,所有的修改在容器销毁时都会丢失。Docker提供了持久化卷挂载的能力,Openshift除了提供持久化卷挂载的能力,还提供了一种持久化供给模型即PV(Persistent Volume)和PVC(Persistent Volume Claim)。在PV和PVC模型中,集群管理员会创建大量不同大小和不同特性的PV。用户在部署应用时显示的声明对持久化的需求,创建PVC,在PVC中定义所需要的存储大小,访问方式。Openshift集群会自动寻找符合要求的PV与PVC自动对接。
8. Registry:Openshift内部的镜像仓库,主要用于存放内置的S2I构建流程所产生的镜像。
9. S2I:Source to Image,负责将应用源码构建成镜像。
步骤:
1)用户输入源代码仓库的地址
2)选择S2I构建的基础镜像
3)触发构建
4)S2I构建执行器从指定的源码仓库地址下载代码
5)S2I构建执行器实例化Builder镜像,并将代码注入到Builder镜像
6)S2I构建执行器按照预定义的逻辑执行源代码的编译,构建
7)生成新的镜像
8)S2I构建执行器将新镜像Push到Registry
9)更新相关的Image Stream信息
【核心流程】
1)创建应用:用户通过web控制台或oc命令创建应用,Openshift平台根据用户输入的源码地址和Builder镜像,生成构建配置Builder config和部署配置Deployment config,Service,Route等。
2)触发构建
3)实例化构建:平台根据Builder config实例化Builder对象,下载代码,并将代码注入到Builder对象,执行编译,构建
4)生成新镜像并Push到Registry
5)更新相关的Image Stream信息
6)触发部署:当Image Stream更新后,触发平台部署镜像
7)实例化镜像部署:平台根据Deployment config实例化部署,生成Deploy对象
8)生成Replication Controller
9)部署容器:通过Replication Controller,平台将pod及容器部署到各个节点上
10)用户访问:用户通过浏览器访问Route对象中定义的应用域名
11)请求处理并返回:请求到达Router组件后,通过Route转发给相关联的Service,最终到对应的容器实例。
参考:开源容器云Openshift
作者:Superwind20
链接:https://www.jianshu.com/p/a4712351142d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Openshift概念的更多相关文章
- OpenShift S2I 概念及流程
S2I 概念 S2I(Source To Image)即从源码到镜像的一个过程,OpenShift 将它作为基础功能提供给用户,包含 S2I CLI 工具 与 S2I 流程.通过这些工具和既定流程,能 ...
- 在AWS中部署OpenShift平台
OpenShift是RedHat出品的PAAS平台.OpenShift做为PAAS平台最大的特点是它是完全容器化的PAAS平台,底层封装了Docker和Kubernetes,上层暴露了对开发者友好的接 ...
- DevOps/TestOps概念
天下大势分久必合合久必分,早期的软件开发只有软件工程师一人完成,为了提高效率逐渐实行分工模式:开发.测试.运维.不同角色担任不同的任务.分工越来越细之后带来了问题也越来越突出,那就是各角色之间的沟通成 ...
- 理解OpenShift(5):从 Docker Volume 到 OpenShift Persistent Volume
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- 理解OpenShift(1):网络之 Router 和 Route
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- 理解OpenShift(4):用户及权限管理
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- [转帖]DevOps/TestOps概念
发现收藏不好用..还是转吧.. https://www.cnblogs.com/fnng/p/8232410.html DevOps/TestOps概念 2018-01-07 22:02 by 虫师, ...
- 一篇文全面了解DevOps:从概念、关键问题、兴起到实现需求
一篇文全面了解DevOps:从概念.关键问题.兴起到实现需求 转自:一篇文全面了解DevOps:从概念.关键问题.兴起到实现需求 2018-06-06 目前在国外,互联网巨头如Google.Faceb ...
- Openshift初步学习问题集
1.设置资源限额 详细参考 https://docs.openshift.com/enterprise/3.2/admin_guide/quota.html#sample-resource-quota ...
随机推荐
- Oracle 的查询组合语句
select a.core_txn_srl_no||a.c_dept||a.c_batch||lpad(a.c_opr_no,5,'0')||case a.txn_dr_cr_ind when ' ...
- 部署oVirt4.2+Gluster超融合架构
首先下载最新ovirt-node iso镜像 准备3台机器,配置为2核,16G内存,两块硬盘,1块100G装系统,1块300G做存储 node1.com(192.168.105.221) node2. ...
- Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法
1 简介 Ubuntu 16.04安装完后,还需要做一些配置才能愉快的使用,包括添加软件源.安装搜狗输入法.Chrome浏览器.网易云音乐.配置快捷键.安装git等等,下面就跟着我来配置吧,just ...
- 大龄IT程序员的救赎之道
不知道从什么时候开始,中年危机持续刷屏,遍布整个职场,横跨各个行业,对各个细分工种的中年男女或者即将步入中年的青年男女几乎形成了垂直打击,而且中年这个年龄分界线从40岁滑落到35岁,甚至到30岁.笔者 ...
- Node.js之判断字符串中是否包含某个字符串
server.txt内容如下: 阿里云服务器 关于应用场景,就不多说了,字符串是不论是后端开发还是前端开发等,都是要经常打交道了. test.js(node.js代码,只要被本地装了node.js环境 ...
- 数据库与spring事务传播特性
一.spring事务管理的实现原理,基于AOP 1) REQUIRED ,这个是默认的属性 Support a current transaction, create a new one if non ...
- Java里方法的参数传递方式
Java里方法的参数传递方式只有一种:值传递. Java中参数传递的都是参数值 下面从两个维度来看 1.传递的参数是8种基本数据类型 这个比较好理解,8种基本数据类型,作为参数时,可以理解为原来的一个 ...
- 【转】Android 将自己的应用改为系统应用
所谓系统程序就是system/app目录中的程序,普通应用转换成系统程序后有稳定.减少内存(DATA)空间占用.恢复出厂设置后不会消失.修改系统时间.调用隐藏方法.系统关机重启.静默安装升级卸载应用等 ...
- [SQL]用于提取组内最新数据,左连接,内连接,not exist三种方案中,到底谁最快?
本作代码下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 人们总是喜欢给出或是得到一个简单明 ...
- Android ConstraintLayout 小记
* 可以圆形定位view之间的位置,通过View的中心,来定位不同半径和弧度的距离. layout_constraintCircle : references another widget id la ...