openshift:基于Docker和K8s构建的容器云
构建内部应用市场,提供中间件、数据库
自动化的流程,可以快速进行应用的构建、容器化和部署
贯通从应用开发到测试、上线的流程。开发、测试、运维可以在一个平台上协作
提高研发效率
openshift与Docker、K8s的关系:
openshift是基于容器技术构建的一个云平台
以Docker作为容器引擎驱动、以K8s作为容器编排引擎组件,提供了一套完整的基于容器的应用云平台。
openshift继承了原生的K8s作为容器编排组件,管理容器集群中的机器节点及容器
容器调度、弹性伸缩、异常自愈、持久化卷、服务发现、配置管理
openshift在dK的基础上提供了各种功能:
应用开发框架及中间件
应用及服务目录:实现一键部署各类应用及服务,如Hadoop\Spack集群
自动化流程及工具:内置了自动化流程工具S2I(Source to Image),帮助用户自动化完成代码的编译、构建及镜像发布。
软件自定义网络:
性能监控及日志管理:提供了开箱可用的性能监控及日志管理组件
多用户接口,提供了Web用户界面、命令行工具及RESTful API
自动化集群部署及管理,通过Ansible实现了集群的自动化部署
核心组件:
Master节点:主控节点,集群内的管理组件均运行于Master节点之上,负责管理维护openshift状态
Node节点:计算节点,集群内的容器实例均运行于Node节点之上
API Server:集群内所有Node节点都会访问API Server更新各节点状态及其上运行的容器状态
数据源(Data Store):集群所有动态的状态信息都会存储在后端的一个etcd分布式数据库中
调度控制器(Scheduler):负责按照用户的输入要求寻找合适的计算节点
复制控制器(Replication Controller):容器云一个重要的特性是异常自恢复。复制控制器负责监控当前容器实例的数量和用户不是指定的数量是否匹配
基本命令:
oc get nodes 查看所有节点
oc describe node master.example.com 查看节点详细信息
oc project 查看用户当前所在的Project
oc get pods 查看当前所在项目的pod
oc describe pod 查看容器的详细信息
oc logs <pod name> 查看Pod的输出
ocrsh <pod name> 可以进入容器内部执行命令进行调试
oc get svc 获取当前项目下所有Service对象的列表
oc get routes 可查看项目中所有的Route
project就是Namespace
用户不会直接看到Docker容器本身,会看到pod,Pod实际也是一个docker容器
为克服容器变化引发的链接信息的变化,K8s提供了Service(服务)的组件。当部署某个应用时,会为该应用创建一个Service对象。Service对象会与该因公的一个或多个Pod关联。每个Service会被分配一个IP地址。无论后端的Pod实例数量或地址如何变化,前端的应用只需访问Service的IP地址,就能连接到正确的后端容器实例。Service气到了代理的作用,在相互依赖的容器应用之间实现了解耦
Service的IP地址是虚拟的,只是集群内部的节点及容器可见,Route用来解决外部用户访问Service的问题
route负责将集群外的请求转发到集群的容器,Service负责把来自集群内部的请求转发到指定的容器中,一个对外,一个对内