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

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

作者头像
神话_Tyrannosaurus
发布于 2018-01-11 09:15:24
发布于 2018-01-11 09:15:24
1.3K0
举报

这是我在EMEA红帽技术2017交流会议(Red Hat Tech Exchange 2017)上所做的文字记录,这是一个由所有的Red Hat解决方案架构师和顾问组成的会议。在创建将在OpenShift上运行的镜像时,需要对此进行考虑和良好实践。该内容由四篇帖子构成:

  • 目标
  • 构建您的镜像
  • 使您的镜像更易使用
  • 云服务准备

这是第一篇文章,我们将看到与使用容器镜像的使用相关的共同目标。这些目标将在镜像的设计阶段会被考虑到。

镜像

容器让人们充满兴趣的原因之一是,它允许将具有所有依赖项的应用程序打包到单个部署单元中。这个部署单元,就是镜像,可以从一个环境迁移到下一个环境。例如,您可以将其从集成环境迁移到UAT(User Acceptance Test:用户验收测试)或从分段环境迁移到生产环境。将所有依赖关系放在一个单元中,可以保证在前一阶段验证的内容也将被部署到下一个阶段。

01.png
01.png

在容器崛起之前,我看到很多公司在应用推广上苦苦挣扎。其中有些人已经编写了详细的安装程序,必须手动安装还有小心得遵守说明。其他人则根据Puppet,Chef或Python脚本的自动化构建方面投入了大量的精力。此外,最初的努力还需要大量的维护工作来应对演化和变化。他们中的大多数人都经历过各种各样的问题。容器带来的是一个标准和简单的方法。应用程序依赖关系(操作系统,系统运行时环境(JVM等),库以及一些配置信息和环境)是容器镜像的一部分,它只是用于在一个或另一个环境中启动容器实例。

可重复

随后的镜像创建应该产生相同的结果。这对于获得可用于补丁,升级和进一步演进的稳定参考非常重要。这要求用于创建容器镜像的依赖项(库或其他镜像)被唯一引用和版本化。

敏捷的标准操作环境

02.png
02.png

企业软件领域的同质化水平有明显的好处:

  • 通过限制可能需要支持的组合的数量来节省维护的时间和成本。
  • 在需要操作时拥有已知的环境。运营商知道该期待什么,这对于及时解决事件可能是至关重要的。
  • 在几个不同的环境下,合作更容易。
  • 对员工来说更容易。员工可以更容易地从一个领域转移到另一个领域,因为他们依赖相同的技术。

定义镜像范围时应该考虑到这几点。这就是说,严格执行和缓慢发展的 SOE(参与型系统:Systems of engagement) 有时成为企业快速反应的障碍。容器镜像可以帮助解决这方面的问题,通过可重用性和将中心更改应用于多个目标的易用性操作。

可重用性

限制组件注入像框架,应用服务器,驱动程序和脚本等镜像中是非常重要的。这些可以用于基础功能,连接,监控,资产跟踪和管理,安全等。使用继承和组合的分层方法可能支持这一点。在这方面,考虑到全球的镜像范围而不是单一的镜像是很重要的。

可维护性

上一节提到的中央注入点也是修补和升级的中心点。这些更改(可能由软件提供商提供的容器镜像)需要自动级联,以便进行维护。

在容器出现以前的时代,我看到很多公司都在努力保持他们Java或应用服务器的补丁版本和安全修复服务是最新的。容器技术结合了核心应用变化更新的可能性,并使这些应用在软件环境中毫不费力,也不需要停机的情况下更新。这在安全性和可靠性方面会产生巨大的影响。因此,镜像设计时需要考虑可维护性。

资源效率

在创建应用程序时,资源(RAM,CPU,存储等)的最小消耗是一个明显的目标,用于打包的镜像。它意味着密度更高,成本更低。与虚拟机相比,容器具有共享相同内核而不是创建额外实例的优势。这可以通过使用容器共享层来进一步推动。这是通过以下几个已经提到的目标实现的:SOE(参与型系统:Systems of engagement)和可重用性。尽管大小确实影响推送和拉取镜像所需的时间,但它在最终的RAM和存储使用方面起着更大的作用。

安全

除了保持操作系统,应用服务器和其他库及时修补最新的安全性补丁之外,在创建镜像时还需要考虑一些其他重要方面安全性的问题:

  • 减少攻击面:这可以通过将镜像内部安装的内容限制为运行容器所需的操作来实现。
  • 限制功能:特权容器应该是执行特定安全措施的例外。其他功能,如安装主机文件系统,绑定主机端口,或使用可能与主机上的用户相匹配的特定用户标识运行,只有在没有其他选项可用时才被授予,并且在安全影响被检查和风险减轻之后才授予。
  • 有限的资源:容器镜像应该以这样一种方式构建,它能够在有限的资源(CPU、RAM、网络、存储)下运行,以便它不会成为拒绝服务攻击主机并且和其他容器在同一台主机上运行。

弹性

Kubernetes和OpenShift这样的PaaS平台提供了监控和自我修复的机制。事先准备和活性探测服务确保了:

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

作为一名镜像设计师,您的责任是提供可用的事先准备和活性探测服务。

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

容易使用(易用行)

可复用性已经被提及作为一个指标了。但是,只有在镜像容易使用的情况下,这才能达到一个良好的水平,易用性包括以下几个方面:

  • 通过继承,组成或利用扩展点来扩展。但是扩展点需要首先考虑。作为一名镜像设计师,您有责任思考如何添加功能或自定义镜像,并以简单的方式实现。
  • 文档:这包括记录镜像的目的,用法以及运行时的重要信息,例如它的入口点,使用的端口,应用程序可以写入数据的目录等。为镜像提供快速启动入口也是一种方法,可以帮助用户了解如何使用镜像。

我希望你发现这第一部分很有趣。在下面的文章中,我们将会了解到实现这些目标的技术和方法。敬请关注!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenShift的容器镜像(第1部分):目标
本文来源于2017 EMEA (Europe, the Middle East and Africa,欧洲,中东和非洲) 红帽技术交流会议的会议记录,与会者包括了来自于欧洲、中东和非洲的所有的红帽解决方案架构师及顾问,会议内容是关于构建 OpenShift 镜像的思考和最佳实践案例,文章分为以下四个板块进行叙述:
Techeek
2018/01/10
1.1K0
OpenShift的容器镜像(第1部分):目标
OpenShift 的容器镜像(第 3 部分):使您的镜像易用
这是我在欧洲,中东和非洲(EMEA)红帽技术交流 2017 会议上的一个会议记录,与会者包括 EMEA 所有红帽解决方案架构师和顾问。会议的主要内容包括了在创建运行于 OpenShift 上的镜像时,需要考虑事项和最佳实践。第三部分重点介绍如何让应用程序开发人员或发布经理创造出更容易使用的镜像。
hldh214
2018/01/10
1.1K0
全网首发:逐一解读云原生应用开发“12-Factors”
作者自序: 12原则的提出已有五年之久,可惜业界一直缺乏一篇对其进行简明解读的指导性文章,所以我决定写这样一篇文章。在微服务模式的大背景下,力求对12原则的来龙去脉做出明确和完备的解释,并对12原则原文的含糊之处做出澄清。如果各位读者对本书的其他内容感兴趣,那么也敬请关注我们的公众号eaworld。 12-Factors经常被直译为12要素,也被称为12原则,12原则由公有云PaaS的先驱Heroku于2012年提出(原文参见12factor.net),目的是告诉开发者如何利用云平台提供的便利来开发更具可
yuanyi928
2018/04/02
1.2K0
全网首发:逐一解读云原生应用开发“12-Factors”
OpenShift 和 Kubernetes 有什么区别?
OpenShift 3以后, 架构完全基于K8S进行了重构, 但是又有一些差异. 今天, 我们就深入研究一下.
东风微鸣
2022/04/21
5.8K0
OpenShift 和 Kubernetes 有什么区别?
IT运维面试问题总结-LVS、Keepalived、HAProxy、Kubernetes、OpenShift等
etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现。
杰哥的IT之旅
2020/10/23
5.5K1
openshift/origin学习记录(8)——基于镜像安装多节点集群(Containerized Installer)
本节内容是Docker镜像以及Ansible实现多节点集群Containerized Installer。大体流程和基于RPM的安装过程类似。 本部分openshift集群的部署分为以下几个阶段
胡了了
2017/12/28
1.4K0
openshift/origin学习记录(8)——基于镜像安装多节点集群(Containerized Installer)
教你快速安装OpenShift容器平台3.6
自OpenShift容器平台(OCP)发布以来,我一直希望提供一个简单、完整且易用的安装教程。
後來
2018/01/15
2K0
教你快速安装OpenShift容器平台3.6
整天谈容器,你知道两大容器管理平台Kubernetes与OpenShift有什么区别?
容器化是开发和部署应用的热门趋势,因为它们是加速开发的有效方式。容器的使用量在过去几年呈指数增长。
我的小碗汤
2019/12/24
9K0
Red Hat OpenShift Container Platform 生命周期政策(非当前版本)
红帽为 Red Hat OpenShift Container Platform (“OpenShift” 或 “OCP”) 提供了公开的生命周期信息,用户和合作伙伴可根据此信息有效规划、部署及支持自己的相关环境。红帽发布这个生命周期的主要目的是尽可能提供产品的透明度。但当出现特殊情况时,红帽可能会对这些政策做例外处理。
heidsoft
2023/03/18
1K0
Red Hat OpenShift Container Platform 生命周期政策(非当前版本)
009.OpenShift管理及监控
用于调度,并控制pod不能在计算资源少于指定数量的情况下运行。调度程序试图找到一个具有足够计算资源的节点来满足pod请求。
木二
2020/06/24
2.7K0
6 利用Docker .NET应用程序模板制作您的容器应用程序(第2部分)
在最后一篇文章中,我们用各种模板进行了设置。现在我们需要让他们工作起来了。
Hi胡瀚
2018/01/22
3.1K0
6 利用Docker .NET应用程序模板制作您的容器应用程序(第2部分)
12 个优化 Docker 镜像安全性的技巧
本文介绍了 12 个优化 Docker 镜像安全性的技巧。每个技巧都解释了底层的攻击载体,以及一个或多个缓解方法。这些技巧包括了避免泄露构建密钥、以非 root 用户身份运行,或如何确保使用最新的依赖和更新等。
深度学习与Python
2022/03/24
6690
关于容器、微服务、docker的十大问题
容器的运行无法简单参考虚拟机的实践经验。例如,几乎任何工作负载都可以立即虚拟化,但是有些工作负载适合容器化部署,有的则不适合。
FB客服
2019/10/22
7330
Dockerfile 语法详解:构建定制化容器镜像的基石
Docker 已经成为现代应用程序开发和部署的关键工具之一。在 Docker 的世界中,Dockerfile 是一个至关重要的文件,它定义了如何构建容器镜像的步骤和配置。本文将深入探讨 Dockerfile 的语法,为您提供构建定制化容器镜像的基础知识。
修己xj
2023/09/28
2690
Dockerfile 语法详解:构建定制化容器镜像的基石
OpenShift总体架构设计
OpenShift被其供应商Red Hat称为“ 企业级Kubernetes”。其实Kubernetes是OpenShift不可或缺的一部分,并围绕它构建了更多功能。
网络安全观
2021/03/01
1.3K0
技术洞见:公有云容器市场发展及安全问题
因为操作的简单性和可扩展性,云容器服务得到越来越多企业的重视。通过容器技术可显著提高开发人员和运营人员的效率。
CloudBest
2019/09/24
1K0
技术洞见:公有云容器市场发展及安全问题
减少使用Java应用服务器,迎接Docker容器
【编者的话】随着Docker的发展,越来越多的应用开发者开始使用Docker。James Strachan写了一篇有关Java开发者如何使用Docker进行轻量级快速开发的文章。他告诉我们,使用Docker和服务发现的机制,可以有效减轻Java运维人员的负担,进行项目的快速启动和持续迭代。 多年来,Java生态系统一直在使用应用服务器。Java应用服务器(如Servlet Engine、JEE或OSGi)是一个可以作为最小部署单元(如jar/war/ear/bundle等)进行部署和卸载Java代码的J
我是攻城师
2018/05/11
1.7K0
001.OpenShift介绍
Red Hat OpenShijft Container Platform (OpenShift)是一个容器应用程序平台,它为开发人员和IT组织提供了一个云应用程序平台,用于在安全的、可伸缩的资源上部署新应用程序,而配置和管理开销最小。
木二
2020/06/23
4.1K0
Uber 容器化 Apache Hadoop 基础设施的实践
随着 Uber 的业务持续增长,我们用了 5 年时间扩展 Apache Hadoop(本文中称为“Hadoop”),部署到了 21000 多台主机上,以支持多种分析和机器学习用例。我们组建了一支拥有多样化专业知识的团队来应对在裸金属服务器上运行 Hadoop 所面临的各种挑战,这些挑战包括:主机生命周期管理、部署和自动化,Hadoop 核心开发以及面向客户的门户。
深度学习与Python
2021/12/01
4930
Uber 容器化 Apache Hadoop 基础设施的实践
Openshift容器云安全加固措施70项
前言 企业中使用容器承载业务,除了考虑到容器的优势之外,容器的安全更是很多客户关心的话题。本篇文章就此进行讨论。本文在书写过程中,参考了一些文档,文后给出了链接。本文仅提供技术参考,并不能直接用于生产
魏新宇
2018/03/22
1.7K0
Openshift容器云安全加固措施70项
推荐阅读
相关推荐
OpenShift的容器镜像(第1部分):目标
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档