openshift

k8 and openshift 机制概述

2018-10-27  本文已影响106人  wangxiaoxi

OCP(Openshift Container Platform)基于RHEL和docker技术上构建的一些列模块化的组件和服务。OCP增加了PaaS的能力,远端管理, 多用户模式,加固的安全,监控和诊断,应用的生命周期管理,以及提供了开发人员的自服务的接口。

openshift

如果,从下到上,从左到右,让我们来看一下基本的容器构造是如何集成和提升的:
1. base os是RHEL

2. Docker提供了基础的容器管理API以及container image文件格式

3. k8管理一个用来运行容器的物理的或者虚拟的集群。它用资源去描述由多资源组成的组成的多容器应用,以及它们是如何内部连接的。如果说Docker是OCP的core, 那么k8就是OCP的核心,用来协调这些core.

4. Etcd是一个分布式 key-value的存储。k8用其去存储和展示容器以及其他资源类型的配置以及信息。

Openshift作为一个产品级的PaaS平台给Docker和K8 容器设施增加了以下能力

1. OCP-K8 extensions是被K8管理的存储在Etc的一种额外资源类型。这些额外的资源组构成OCP内部的状态和配置。

2.容器的服务实现了许多PaaS架构的功能,例如网络,认证的等。OCP为绝大多数的内部功能调整了docker和kubernetes的基本容器架构。也就是说,绝大多是OCP的内部服务都是被K8管理的containers.

3. Runetimes 以及 xPaaS是供开发人员使用的基本的container images,

4. Devops 的工具以及user experience是指OCP提供的Web和CLI管理工具,用来管理用户的应用程序和OCP服务。这些Web和CLI工具都是基于REST APIs。另,REST APIs供外部工具例如IDEs和CI platform调用。

一个K8的集群是一组用来跑containers且被一组master server集中管理的的node servers。

一个server可以即作为server又作为node, 但是出于稳定性的考虑,通常server只做server.

k8的术语:

master: 在一个K8集群中管理workload和communications的server

node: 在一个K8集群中应用的宿主机

Lable: 给配置K8资源的一组key/value。一个selector用label去过滤满足条件的资源并执行相应操作。

一个OpenShift集群其实就是一个k8集群,只是运用的是Openshift提供的管理工具,例如command-line interface或者Web console. 

K8资源类型

K8有5种资源类型。这些资源类型都可以通过YAML或者JSON或者Openshift的管理工具来进行创建或者编辑。

Pods

K8的基本单元,一组共享IP和PV的容器。

Services

定义了一个单一的IP/port的combination,用来提供一组pods的入口。

Replication Controllers

一个用来定义pods规模的框架。一个RC包含一个pod的定义以及基于其创建的可部署到不同nodes上的pods

Persistent Volumes (PV)

PV提供可持续的并挂载在容器去存储数据的网络存储

Persistent Volume Claims (PVC)

一个Pod的存储

尽管一个pod可以被单独创建,但他们通常被高级别的资源RC创建。

OpenShift Resource Types

Openshift增加的资源类型有:

Deployment Configurations (dc)

基于同一个container image, managing workflows例如rolling updates去创建一组pods

一个dc通常提供了一个持续发布(continuous delivery)的流程

Build Configurations (bc)

Openshift S2I(Source-to-Image)用bc从Git server中获取source code去构建container image. bc + dc就提供了一个可持续集成和发布(continuous integration & continuous delivery)的流程 

Routes

Openshift router将这个DNS host name作为应用程序和小服务的入口

通常RC可以被单独创建,但是通常由高级别资源DC创建

网络

每一个没docker进程部署的container都会从内部网络中被分配一个IP。这个IP仅能被这个运行这个container的host可访问。这是因为container总是短暂存在,所以IP总是不停的被分配和释放。

而K8提供了一个软件定义的网络(SDN)使得K8集群内的container都可以互相访问。但是,pods 内的container不支持去直接连接动态IP,而是建议连接比较稳定的分配给服务的ip.

K8 集群外部如果想访问container, 在没有openshift的情况下,需要重定向router的一个端口给运行container的host. 但是,存在'scale'的问题。

Openshift通过route这种resource给容器提供了外部访问入口,且更简单和很好的规模化(scalable)

上一篇 下一篇

猜你喜欢

热点阅读