OpenShift介绍及应用

一、OpenShift概念

OpenShift是红帽的云开发平台即服务(PaaS)。自由和开放源码的云计算平台使开发人员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中。Openshift广泛支持多种编程语言和框架,如Java,Ruby和PHP等。另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持。

OpenShift Online服务构建在Red Hat Enterprise Linux上。Red Hat Enterprise Linux提供集成应用程序,运行库和一个配置可伸缩的多用户单实例的操作系统,以满足企业级应用的各种需求。

二、容器

我们一般说的“容器”,都是“Linux容器”。

Linux容器是与系统其他部分隔离开的一系列进程。运行这些进程所需的所有文件都由另一个镜像提供,这意味着从开发到测试再到生产的整个过程中,Linux 容器都具有可移植性和一致性。因而,相对于依赖重复传统测试环境的开发渠道,容器的运行速度要快得多。容器比较普遍也易于使用,因此也成了 IT安全方面的重要组成部分

容器的本质,一句话解释,就是一组受到资源限制,彼此间相互隔离的进程而隔离所用到的技术都是由linux内核本身提供的(所以说目前绝大部分的容器都是必须要跑在linux里面的)。其中namespace用来做访问隔离(每个容器进程都有自己独立的进程空间,看不到其他进程),cgroups用来做资源限制(cpu、内存、存储、网络的使用限制)。

Namespace让每个进程组有独立的PID, IPC和网络空间.Namespace通过 clone系统调用来实现的。

cgroups 是将进程分组管理的内核功能.通过cgroups可以隔离进程, 同时还可以控制进程的资源占用(CPU, 内存等等)情况在操作系统底层限制物理资源,起到 Container 的作用。进程可用的cpu资源由cpuset指定。

总的来说容器就是一种基于操作系统能力的隔离技术,这和基于hypervisor的虚拟化技术(能完整模拟出虚拟硬件和客户机操作系统)不同的。和传统虚拟化相比,容器启动很快,由于共享系统资源,一台主机可以运行上千个容器,并且容器镜像用类似git分发思想,用户更容易创建,分发,更新存储这些镜像。

三、OpenShift和容器的关联

openshift基于DockerK8s构建的容器云。

Openshift底层以Docker作为容器引擎驱动,以K8s作为容器编排引擎组件,并提供了开发语言,中间件,DevOps自动化流程工具和web console用户界面等元素,提供了一套完整的基于容器的应用云平台。构建内部应用市场,提供中间件、数据库自动化的流程,可以快速进行应用的构建、容器化和部署贯通从应用开发到测试、上线的流程。开发、测试、运维可以在一个平台上协作提高研发效率。

四、OpenShift架构

OpenShift介绍及应用_第1张图片

节点(Nodes)RHEL/Atomic实例,应用(Apps)将运行在节点上

应用服务运行在每个节点的docker容器中

一个或多个docker容器可以运行在Pods中作为一个整体单元

Registries负责保存应用的images

Master为用户和客户端提供authenticated API

Master使用etcd提供服务发现

Master通过scheduler决定pod应该部署到哪个nodes

Services允许相关的pods彼此进行连接和通讯

Pods可以为有状态的服务映射共享存储

Pods映射共享存储后,持久化的数据就保存到了存储中

Routing layer路由外部的应用请求到pods

开发人员和运维人员可以通过web, CLI或者IDE访问OpenShift

 

五、使用Openshift需了解的概念

Project

Openshift中,project对象用于分组和隔离相关的工作空间。我们可以将每一个独立的应用放到一个project中。

Openshift管理员可以以project为单位进行权限授权,资源配额等。

 

Deployments

Deployment对象提供了对普通应用程序的精细管理。

 每一个服务,都会有一个Deployment对象,Deployment对象配置了服务部署,运行的信息。如果运行服务的容器实例出现异常,Deployment对象会自动根据配置信息自行修复。

 

Pods

Podsopenshift继承于kubernate的概念。pod是在一台主机上一起部署的一个或多个容器,也是可以定义,部署和管理的最小计算单元。

Pod可以理解为docker容器+容器相关的配置(网络,存储,运行镜像,环境变量等等)。

PodDeployment拉起来,其配置内容继承于Deployment对象。

 

Services

Services也是Openshift继承于kubernate的概念。Services相当于是一个内部的负载均衡对象。它标识一组集群Pods,以便代理它接收到的连接。

部署于Openshift的应用,默认是使用集群化部署的。集群部署的应用,对外会提供一个统一的服务地址,通过这个服务地址,可以由负载功能将服务请求调度到具体的服务实例中。

通常情况下,每个Deployment使用一个Services,部分特殊部署的应用除外。

 

Routers

Router对象用于将openshift外部的访问请求引入到openshfit平台内部的应用。

Router对象是基于HaProxy实现的。

对于一个系统,可能会由很多部署单元(微服务)构成。这些部署单元,有些需要对Openshift平台的外部请求提供服务,而有些只在openshift平台内部被调用。对于需要对Openshift平台的外部请求提供服务的service,我们需要暴露一个外部访问地址。这个地址就是由router对象创建并提供服务的。

我们可以为一个Service的不同端口创建不同的Router,也可以为一个Service的同一个端口创建不同的Router

 

Builds

BuildsOpenShift 中将输入参数转换为结果对象的过程。 大多数情况下,构建用于将源代码转换为可运行的容器镜像。

Buildconfig描述了应该创建新builds时的单个构建定义和一组触发器。 Builds对象由BuildConfig定义。

通俗来说,Buildsopenshfit支持Devops而设计的一个对象。这个对象在CI过程中使用,用于定义自动构建容器镜像的动作。

 

Pipeline

Pipeline就是自动化流水线。流水线就是将实现Devops的相关工具按照顺序串联起来工作的一个工具对象。常见的实现DevOps的工具包括(但不限于):代码管理工具;编译构建工具;代码分析工具;制品管理工具;自动化测试工具;自动部署工具,自动监控工具等。

Pipeline也是openshfit支持Devops而设计的一个对象。

实际上,pipeline对象是与jenkin的流水线对应的。在openshiftjenkin集成之后,我们可以在openshiftpipeline对象中定能够以jenkinpipeline

 

Images

OpenShift 中的容器基于Docker格式的容器镜像。 images是一个包含运行单个容器的所有要求的二进制文件,以及描述其需求和功能的元数据。

如果我们要使用一个已获得的容器镜像部署应用,我们需要先将这个容器镜像包导入到openshiftproject中。导入后,就会在openshiftimages功能里面看到这个容器镜像。随后我们就可以直接使用这个镜像在openshift中快速部署应用。

 

六、OpenShift 部署基本操作命令

 

# 从仓库下载镜像

docker pull   # docker registry server 中下拉image

 

#发布镜像到仓库

docker push   # image 上传到 docker registry server

 

# 查看镜像

    docker images# 列出images

    docker rmi  # 删除镜像

 

#打包镜像为文件

docker save –o xxxx.tar    镜像名

 

#解压镜像

docker load –i xxx.tar

 

#标记镜像

docker tag 原名  新名

 

七、发布微服务命令

①:获得容器镜像包:

在线容器镜像包的获得方式是docker pull   # docker registry server 中下拉image

②:解压:

docker load -i redis4-base-centos.tar

③:打tag

docker tag ocp-registry.szlanyou.local:5000/mp221/redis4-base-centos:v2 registry.dev.paas.dfl.com.cn:5000/dangqunxxgl-gh/redis4-base-centos:v2

:推送到容器镜像仓库:

docker push registry.dev.paas.dfl.com.cn:5000/dangqunxxgl-gh/redis4-base-centos:v2

:上载到openshift平台(请先使用oc login 命令登录openshift平台且已经切换到project中。):

oc login

oc project dangqunxxgl-gh

oc import-image redis4-base-centos --from=registry.dev.paas.dfl.com.cn:5000/dangqunxxgl-gh/redis4-base-centos:v2 --confirm  -n dangqunxxgl-gh --insecure

说明:

redis4-base-centos上载到openshiftopenshift显示的镜像名;

dangqunxxgl-gh上载的project

你可能感兴趣的:(其他)