Openshift 基础架构组件

Openshift 基础架构组件


Kubernetes基础设施项目

简述

在OpenShift容器平台中,Kubernetes管理着一组容器或主机,并提供了部署、维护和应用程序扩展的机制。Docker服务包、实例化和运行容器化的应用程序。

Kubernetes集群由一个或多个主节点和一组节点组成。您可以选择将您的主服务器配置为高可用性(HA),以确保集群没有单一的故障点。

这里写图片描述 OpenShift容器平台3.6使用的是Kubernetes 1.6和Docker 1.12。

Masters节点

主服务器是包含主组件的主机或主机,包括API服务器、控制器管理器服务器和etcd。master在Kubernetes集群中管理节点,并在节点上运行节点。

表1. Master组件

组件 描述
API Server Kubernetes API服务器为pods、服务和复制控制器的数据进行验证和配置。它还将pods分配给节点,并将pod信息与服务配置同步。可以作为一个独立的进程运行。
etcd etcd存储了持久的主状态,而其他组件则监视etcd,以便将其自身转换为所需的状态。etcd可以为高可用性配置,通常配置为2n+1对等服务。
Controller Manager Server 控制器管理器服务器监视etcd以更改复制控制器对象,然后使用该API来执行所需的状态。可以作为一个独立的进程运行。有几个这样的进程一次创建一个集群,一个活动的领导者。
HAProxy 可选的,在配置高可用的主程序时使用本机方法来平衡API主端点之间的负载。高级安装方法可以使用本机方法为您配置HAProxy。或者,您可以使用本机方法,但是预先配置您自己的负载平衡器。

高可用性Master

在单个主配置中,运行应用程序的可用性仍然存在,如果主或其任何服务都失败了。然而,主服务的失败降低了系统对应用程序故障或新应用程序创建的响应能力。您可以选择将您的主服务器配置为高可用性(HA),以确保集群没有单一的故障点。

为了减轻对master的可用性的担忧,建议使用两种措施:

  • 应该创建一个runbook条目来重新构建master。runbook条目是任何高可用服务的必要支持。额外的解决方案仅仅是控制运行手册必须咨询的频率。例如,主主机的冷备份可以充分地满足sla,因为创建新的应用程序或恢复失败的应用程序组件需要不超过几分钟的停机时间。
  • 使用高可用性解决方案来配置您的管理员,并确保该工具的使用

    这里写图片描述 不支持在安装之后从单一的主集群迁移到多个主机。

当使用HAProxy的原生HA方法时,主组件具有以下可用性:

表2。HAProxy可用性矩阵

角色 类型 注释
etcd Active-active 负载平衡的完全冗余部署
API Server Active-active 由HAProxy管理
Controller Manager Server Active-passive 一个实例被选举为一个集群leader
HAProxy Active-passive API主端点之间的平衡负载

Nodes节点

一个节点为容器提供运行时环境。Kubernetes集群中的每个节点都有需要由主管理的服务。节点还具有运行pods所需的服务,包括Docker服务、kubelet和服务代理。

OpenShift容器平台创建来自云提供商、物理系统或虚拟系统的节点。Kubernetes与节点对象进行交互。主使用节点对象的信息来验证节点,并使用健康检查。一个节点被忽略,直到它通过了健康检查,并且master 会继续检查节点直到它们有效。Kubernetes文档有更多关于节点管理的信息。

管理员可以使用CLI在OpenShift容器平台实例中管理节点。要在启动节点服务器时定义完整的配置和安全选项,请使用专用的节点配置文件。

这里写图片描述 建议的最大节点数是300。

Kubelet

每个节点都有一个kubelet,它更新了由容器清单指定的节点,这是一个描述一个pod的YAML文件。kubelet使用一组清单来确保它的容器已经启动,并且它们将继续运行。

一个集装箱清单可以被提供给一个kubelet:

  • 命令行上的一个文件路径,每隔20秒检查一次。

  • 在命令行上传递的HTTP端点,每隔20秒检查一次。

  • kubelet监视一个etcd服务器,如/注册/主机/$(主机名-f),并对任何更改进行操作。

  • kubelet侦听HTTP并响应一个简单的API来提交一个新的清单。

服务代理(Service Proxy)

每个节点还运行一个简单的网络代理,反映在该节点上的API中定义的服务。这允许节点在一组后端执行简单的TCP和UDP流转发。

节点对象的定义(Node Object Definition)

apiVersion: v1
kind: Node 
metadata:
  creationTimestamp: null
  labels: 
    kubernetes.io/hostname: node1.example.com
  name: node1.example.com 
spec:
  externalID: node1.example.com 
status:
  nodeInfo:
    bootID: ""
    containerRuntimeVersion: ""
    kernelVersion: ""
    kubeProxyVersion: ""
    kubeletVersion: ""
    machineID: ""
    osImage: ""
    systemUUID: ""
  • apiVersion 定义要使用的API版本。

  • kind 将此设置为节点,将其标识为节点对象的定义。

  • metadata.labels 列出添加到节点的任何标签。

  • metadata.name 定义节点对象名称的必需值。在运行oc get节点命令时,这个值显示在NAME列中。

  • spec.externalID 定义可以到达节点的完全限定的域名。当空的时候,默认为元数据。

REST API引用有更多关于这些定义的详细信息。

容器注册表(Container Registry)

简述

OpenShift容器平台可以利用任何实现Docker registry API的服务器作为镜像的来源,包括Docker Hub、第三方运行的私有注册中心和集成的OpenShift容器平台注册中心。

集成OpenShift容器注册表

OpenShift容器平台提供了一个称为OpenShift容器注册(OCR)的集成容器注册表,它增加了根据需要自动提供新的镜像存储库的能力。这为用户提供了一个内置的位置,用于他们的应用程序构建来推送生成的镜像。

每当将新镜像推向OCR时,注册中心就会通知OpenShift容器平台关于新镜像的信息,并传递关于它的所有信息,比如名称空间、名称和镜像元数据。不同的OpenShift容器平台对新镜像做出反应,创建新的构建和部署。

OCR也可以作为一个单独的组件进行部署,它可以作为一个容器注册中心,而不需要构建和部署集成。有关详细信息,请参阅安装OpenShift容器注册表的独立部署

第三方注册表(Third Party Registries)

OpenShift容器平台可以使用来自第三方注册中心的镜像创建容器,但是这些注册中心不太可能像集成的OpenShift容器平台注册表那样提供相同的镜像通知支持。在这种情况下,OpenShift容器平台将在imagestream创建中从远程注册表中获取标记。刷新所获取的标签就像运行oc-import-image一样简单。当检测到新镜像时,就会出现先前描述的构建和部署反应。

认证(Authentication)

OpenShift容器平台可以通过用户提供的凭证与注册中心进行通信,从而访问私有镜像存储库。这允许OpenShift从私有存储库中推送和拉出镜像。

WEB控制台

简述

OpenShift容器平台web控制台是一个从web浏览器访问的用户界面。开发人员可以使用web控制台来可视化、浏览和管理项目的内容。

这里写图片描述必须启用JavaScript来使用web控制台。为了最好的体验,使用支持WebSockets的web浏览器。

web控制台是作为主服务器的一部分启动的。运行web控制台所需的所有静态资产都是从openshift二进制文件中提供的。管理员还可以使用扩展来定制web控制台,这可以让您在web控制台加载时运行脚本和加载自定义样式表。您可以以这种方式改变用户界面的任何方面的外观和感觉。

当您从浏览器访问web控制台时,它首先加载所有必需的静态资源。然后,它使用OpenShift start选项中 –public-master 或相关的主配置文件参数 masterPublicURL 定义的值向OpenShift容器平台api发出请求。web控制台使用WebSockets来维护与API服务器的持久连接,并在可用时接收更新的信息。

这里写图片描述
图所示。Web控制台请求架构

web控制台的配置的主机名和IP地址都是白名单,即使浏览器认为请求是跨源的,也可以安全地访问API服务器。在一个WEB应用中使用不同的主机名去访问API服务器,您必须通过在openshift start 上指定–cors-allowed-origins 或 设置相关的主配置文件参数corsAllowedOrigins 将主机名加入白名单。

CLI下载

您可以从web控制台的命令行工具页面上下载和解压CLI,以便在Linux、MacOSX和Windows客户机上使用。集群管理员可以查看 customize these links further.。

这里写图片描述

浏览器要求

查看OpenShift容器平台的测试集成。可以使用下面的浏览器版本和操作系统来访问web控制台。

表 浏览器要求

Browser (Latest Stable) Operating System
Firefox Fedora 23, Windows 8
Internet Explorer Windows 8
Chrome Fedora 23, Windows 8, and MacOSX
Safari MacOSX, iPad 2, iPhone 4

项目快视图(Project Overviews)

登录之后,web控制台为开发人员提供了对当前所选项目的概述:
这里写图片描述
Web控制台项目概述

这里写图片描述 项目选择器允许您在可以访问的项目之间切换。

这里写图片描述 使用源存储库或使用模板创建新的应用程序。

这里写图片描述 Overview选项卡(当前选中)以每个组件的高级视图来可视化项目的内容。

这里写图片描述 Applications选项卡:在您的部署、pods、服务和路由上浏览和执行操作。

这里写图片描述 Builds选项卡:在构建和镜像流上浏览和执行操作。

这里写图片描述 Resources选项卡:查看当前的配额消耗和其他资源。

这里写图片描述 Storage选项卡:查看应用程序的持久卷索赔和请求存储。

这里写图片描述 Monitoring选项卡:用于构建、pods和部署的视图日志,以及项目中所有对象的事件通知。

这里写图片描述 在OpenShift容器平台3.1中,Cockpit自动安装并启用,以帮助您监视您的开发环境。 Red Hat Enterprise Linux Atomic Host: Getting Started with Cockpit提供了更多关于座舱的信息。

JVM控制台

对于基于Java镜像的pods,web控制台还公开了对基于jvm控制台的hawt.io访问,用于查看和管理任何相关的集成组件。如果容器有一个名为jolokia的端口,那么在浏览Pods页面上的pod的详细信息中显示了一个Connect链接。
这里写图片描述
带有与JVM控制台链接的Pod

连接到JVM控制台之后,将显示不同的页面,这取决于哪些组件与连接的pod相关。
这里写图片描述
JVM控制台

以下页面可供选择:

页面 描述
JMX 查看和管理JMX域和mbean。
Threads 查看和监视线程的状态。
ActiveMQ 查看和管理Apache ActiveMQ代理。
Camel 查看和管理Apache Camel规则引擎路由和依赖关系。
OSGi 查看并管理JBoss Fuse OSGi环境。

StatefulSets

在OpenShift容器平台3.5中,它作为一项技术预览功能被引入,并保留在技术预览版中。

一个状态控制器为它的pods提供一个惟一的标识,并确定部署和扩展的顺序。对於惟一的网络标识符、持久存储、优美的部署和扩展,以及优雅的删除和终止,都是有用的。

这里写图片描述

在OpenShift容器平台上的状态

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章