Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenShift的容器镜像(第1部分):目标

OpenShift的容器镜像(第1部分):目标

作者头像
Techeek
发布于 2018-01-10 07:25:53
发布于 2018-01-10 07:25:53
1.1K0
举报
文章被收录于专栏:云计算云计算

本文来源于2017 EMEAEurope, the Middle East and Africa,欧洲,中东和非洲) 红帽技术交流会议的会议记录,与会者包括了来自于欧洲、中东和非洲的所有的红帽解决方案架构师及顾问,会议内容是关于构建 OpenShift 镜像的思考和最佳实践案例,文章分为以下四个板块进行叙述:

  • 目标
  • 构建您的镜像
  • 保证镜像的可用
  • 云就绪

本文是该系列的首篇文章,在这一篇文章中我们将看到通过使用容器 (container) 能够达到的常规目标,并在镜像的设计阶段去审视这些目标。

黄金镜像

容器令我着迷的原因之一是,容器允许应用程序所需要的所有依赖项打包到单个部署单元中,这个部署单元被称为黄金镜像,黄金镜像为运行环境的迁移提供了便利。例如,您可以环境其从集成 (integration) 环境迁移到 UAT (User Acceptance Test,用户验收测试) 环境或从准上线 (staging) 环境迁移到生产 (production)环境。因为单个单元中部署了所有依赖关系,所以可以保证在前一个单元的环境下可以正常运行的应用,在后一个单元的环境下仍然可以正常运行。

在容器崛起之前,很多公司困于应用程序的推广上,其中有些人为此写了详细的安装步骤说明,并且必须手动安装应用程序和严格遵循应用程序安装步骤,而另一些人也为此投入了大量的精力,他们利用 PuppetChef 或者 Python 开发软件自动化构建脚本。此外,除了初始的投入外,还需要大量的维护工作来应对软件的升级和变更所带来的各种各样的难题。容器带来的是一套简单的标准化解决方案,因为容器镜像涵盖了应用程序的依赖关系(操作系统,运行时环境(例如:JVM (Java Virtual Machine, Java虚拟机)),库以及一些配置),通过启动容器镜像实例,可以将应用程序部署于不同的环境之中。

可再生性

之后相同的镜像构建方式会产生相同的结果,这对于可用于补丁、升级和进一步演进至稳定环境是非常重要的,因为创建容器镜像的依赖项(库或其他镜像)应具有相同的引用和版本。

敏捷的标准运行环境

同质化的企业软件环境具有以下鲜明的优势:

  • 通过限制支持潜在的软件的运行环境的数量,来节省维护时间及成本。
  • 方便搭建适用于业务部门的软件运行环境,这对于及时解决突发事件是至关重要的。
  • 在多个不同的环境下,更容易建立合规 (Compliance)。
  • 方便工作人员,因为软件运行环境相同,有利于员工更容易适应岗位地变更。

在定义镜像格局时,应该考虑上述优势带来的便利性。而严格执行 SOE (Server Object Extension, 服务对象扩展) 和缓慢迭代 SOE 会造成企业反应迟缓,容器镜像可以帮助您实现高可重用性和方便对多个目标进行集中更改。

可重用性

第一次创建 SOE 时,限制能注入镜像的区域的数量是非常重要的,比如框架、应用程序服务器、驱动程序和脚本等,这些区域涉及基础功能、连接性、监听、资源跟踪管理、安全性等。可以依靠继承和组合的分层方法支持可重用性,在实现可重用性上重点考虑全局镜像而不是单一镜像。

可维护性

上一节提到的中央注入点也是修补和升级的关键,这些更改(可能由软件提供商作为容器镜像提供)需要自动级联,以便使维护变得简单。

在前容器时代,我看到很多公司困于 Java 或应用服务器版本更新和安全修复,容器技术具备在中心位置应用和变更的可能性,并使容器在软件环境中推出既不费力,也不需要停机支持,这在安全性和可靠性方面影响巨大。因此,镜像设计时需要考虑可维护性。

资源利用效率

在创建应用程序时,显而易见的目标是尽量小的消耗资源(RAMCPU,存储等)。使用镜像进行包装意味着密度更高,成本更低,与虚拟机相比,容器的优势是共享相同内核而不是创建额外实例,这可以通过容器共享层来进一步实现,遵循上述目标的容器让 SOE 和可重用成为可能,尽管镜像容量大小确实影响读取和释放镜像所需的时间,但用于 RAM 和存储的容量有比用于镜像容量更大的作用。

安全

除了保证操作系统、应用程序服务器和其他库的补丁及时更新至最新安全性版本之外,在创建镜像时,还需要考虑一些安全性方面的其他重要内容:

  • 减少攻击面:通过将镜像内部安装的内容限制在运行容器所需的内容来实现。
  • 限制功能:高权限容器应该有额外的执行特定安全措施的手段。如安装主机文件系统,绑定主机端口,或使用与主机用户相匹配的特定用户标识识别,其他功能仅在没有其他选项可用时才被授权,并且在仔细检查安全性影响风险之后得到释放。
  • 有限资源:容器镜像应该在有限资源( CPURAM ,网络,存储)下构建,以便单个容器受到拒绝服务 (DOS) 攻击时,保证同一台主机上其他容器正常运行。

弹性

KubernetesOpenShift 这样的 PaaS (Platform-as-a-Service, 平台即服务) 平台提供了监控和自我修复机制。PaaS 依靠容器准备就绪和容器监测探针 (Liveness Probes) 确保以下行为:

  • 当容器没有准备好时,请求不会被发送到容器。实际上,这意味着容器没有完成启动,正在进行终止操作或者其中一个依赖项(数据库,服务)不可用。
  • 容器监测探针检测失败时,容器将重新启动,重新启动后容器将恢复到初始状态,类似于返厂重置。

作为一名镜像设计师,您的责任是保证容器的稳定就绪和提高容器监测探针的可用性。

另一个方面是,当 OpenShift 想要终止一个容器时,它首先将容器从请求处理旋转中移出,并发送一个 SIGTERM 信号,它为应用程序在中止前正常关闭提供了时间,如果允许的期限已过,则使用 SIGKILL 信号。在这方面,镜像内的应用程序完成了处理正在进行的请求,释放资源,并在接收到 SIGTERM 信号时终止。

易于使用

可复用性经常被作为一个目标提及,但是,只有在镜像易于使用的情况下可复用性才能较好的实施,容器的易于使用包括以下几个方面:

  • 首先应该考虑扩展点的构建。方便通过继承、组成或利用扩展点来进行扩展。作为一名镜像设计师,您有责任思考如何以简单的方式添加功能或自定义镜像。
  • 其次应该考虑文档。文档应包括记录镜像的使用目的,使用情况以及运行参数,例如它的起始位置,使用的端口,可供写入数据的目录等,镜像快速启动方便终端用户了解并使用镜像。

我希望您会觉得第一篇文章是有趣的,在下面的文章中,我们将会使用技术和方法实现本篇已经提到过的目标。敬请关注!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenShift的容器镜像(第1部分):目标
这是我在EMEA红帽技术2017交流会议(Red Hat Tech Exchange 2017)上所做的文字记录,这是一个由所有的Red Hat解决方案架构师和顾问组成的会议。在创建将在OpenShift上运行的镜像时,需要对此进行考虑和良好实践。该内容由四篇帖子构成:
神话_Tyrannosaurus
2018/01/11
1.3K0
OpenShift的容器镜像(第1部分):目标
容器生产落地需要考虑的几点因素
前言: 本文是笔者与同事陈耿共同完成,不代表任何官方观点。 随着容器技术的持续发酵,以及互联网+应用的持续扩张,目前金融行业使用容器云上生产的案例越来越多。在本文正式开始之前,先看看Dockerr和K
魏新宇
2018/03/22
1.6K0
容器生产落地需要考虑的几点因素
整天谈容器,你知道两大容器管理平台Kubernetes与OpenShift有什么区别?
容器化是开发和部署应用的热门趋势,因为它们是加速开发的有效方式。容器的使用量在过去几年呈指数增长。
我的小碗汤
2019/12/24
9K0
Kubernetes 容器镜像基础
容器技术是 Kubernetes 成功的基石之一,而容器镜像则是容器技术的核心概念之一,它将应用程序、运行时环境以及所有依赖项打包到一个独立的可执行单元中。它不仅实现了应用程序与其运行时环境的高度隔离,还为应用的构建、交付和扩展提供了前所未有的便捷性。在 Kubernetes 中,容器镜像不仅是应用的部署单位,也是实现轻量、可移植和可复制的关键。
我是阳明
2023/12/12
7060
Kubernetes 容器镜像基础
OpenShift 的容器镜像(第 3 部分):使您的镜像易用
这是我在欧洲,中东和非洲(EMEA)红帽技术交流 2017 会议上的一个会议记录,与会者包括 EMEA 所有红帽解决方案架构师和顾问。会议的主要内容包括了在创建运行于 OpenShift 上的镜像时,需要考虑事项和最佳实践。第三部分重点介绍如何让应用程序开发人员或发布经理创造出更容易使用的镜像。
hldh214
2018/01/10
1.1K0
解读OpenShift的逻辑架构和技术架构
导读:OpenShift的架构设计主要是针对企业需求进行高可用架构设计,包括计算、网络、存储等。接下来我们针对这些问题逐一展开介绍。
IT阅读排行榜
2022/04/14
1.1K0
解读OpenShift的逻辑架构和技术架构
IT运维面试问题总结-LVS、Keepalived、HAProxy、Kubernetes、OpenShift等
etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现。
杰哥的IT之旅
2020/10/23
5.5K1
Kubernetes 之资源清单
在 Kubernetes 系统中,Kubernetes 对象是持久化的实体,Kubernetes 使用这些实体去表示整个集群的状态。特别地,它们描述了如下信息:
民工哥
2021/04/21
7450
Kubernetes vs OpenShift浅析
古语有云:“知彼知己,百战不殆。不知彼而知己,一胜一负。不知彼,不知己,每战必殆。” 这句话同样也适用于技术体系。无论我们在落地,还是在学习、实践某一项技术,对提供相同功能的体系框架的对比学习,可以使得我们能够快速、全面地去拥抱其生态。
Luga Lee
2021/12/09
1.3K0
Kubernetes vs OpenShift浅析
【译文连载】 理解Istio服务网格(第一章 概述)
书籍英文版下载链接为 https://developers.redhat.com/books/introducing-istio-service-mesh-microservices/,作者 Burr Sutter 和 Christian Posta。
SammyLiu
2020/02/25
6070
技术洞见:公有云容器市场发展及安全问题
因为操作的简单性和可扩展性,云容器服务得到越来越多企业的重视。通过容器技术可显著提高开发人员和运营人员的效率。
CloudBest
2019/09/24
1K0
技术洞见:公有云容器市场发展及安全问题
OpenShift总体架构设计
OpenShift被其供应商Red Hat称为“ 企业级Kubernetes”。其实Kubernetes是OpenShift不可或缺的一部分,并围绕它构建了更多功能。
网络安全观
2021/03/01
1.3K0
Openshift容器云安全加固措施70项
前言 企业中使用容器承载业务,除了考虑到容器的优势之外,容器的安全更是很多客户关心的话题。本篇文章就此进行讨论。本文在书写过程中,参考了一些文档,文后给出了链接。本文仅提供技术参考,并不能直接用于生产
魏新宇
2018/03/22
1.7K0
Openshift容器云安全加固措施70项
009.OpenShift管理及监控
用于调度,并控制pod不能在计算资源少于指定数量的情况下运行。调度程序试图找到一个具有足够计算资源的节点来满足pod请求。
木二
2020/06/24
2.7K0
001.OpenShift介绍
Red Hat OpenShijft Container Platform (OpenShift)是一个容器应用程序平台,它为开发人员和IT组织提供了一个云应用程序平台,用于在安全的、可伸缩的资源上部署新应用程序,而配置和管理开销最小。
木二
2020/06/23
4.1K0
红帽宣布发布企业容器仓库开源项目 Quay
今天,红帽推出了 Quay 项目的开源项目,该项目是代表 Red Hat Quay 和 Quay.io 的代码的上游项目。根据 Red Hat 的开源承诺,Project Quay 是新开源的,代表了自 2013 年以来 CoreOS(现在是 Red Hat)围绕 Quay 容器注册表进行的多年工作的高潮。
米开朗基杨
2019/11/15
1.4K0
工业4.0在Openshift上的落地
工业4.0即第四次工业革命: 由自动化和数据驱动的下一阶段工业发展。它是物联网、工业物联网、大数据、云计算、网络物理系统、人工智能和机器学习等各种技术的统称。预计这些技术将导致下一代工厂被称为“智能工厂”,其中机器(“智能资产”或“智能机器”)应能够彼此“交谈”并“独立做出决定”基于他们收集和交流的数据对人的影响。这将减少浪费,缩短生产时间,并有助于实现成本效益和质量。
魏新宇
2018/12/05
2.5K1
OpenShift应用发布和运维设计
近些年来,DevOps的理念已经逐渐深入人心,随着容器、Docker、Kubernetes、OpenShift等概念不断走进我们的视野,越来越多的企业开始在生产中运用这些技术。在这些技术和理念带来的便利性不断为软件开发赋能的同时,有人可能会产生这样的疑问,Kubernetes和OpenShift这样的技术如何加入DevOps的工具链大家族,进一步提高生产效率和生产质量。
yuanyi928
2020/08/11
1K0
OpenShift应用发布和运维设计
容器简介
容器是云原生计算的基石之一。它们类似于早期的虚拟机(例如 VMware 提供的虚拟机),但轻量级得多。
云云众生s
2025/02/06
1790
在K8S/OpenShift上开发应用程序的14种最佳实践
在这一年中,我一直在与几个开发团队合作,他们开始在K8S/OpenShift上构建应用程序。我的目标是为开发人员提供指导和最佳实践,以帮助他们成功地将应用程序部署到生产环境中。如果您是在K8S/OpenShift之上构建应用程序的开发人员,那么您可能会对此博客感兴趣。
东风微鸣
2022/04/21
9510
相关推荐
OpenShift的容器镜像(第1部分):目标
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档