容器化运维镜像仓库和资源调度

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【2月更文挑战第14天】容器运维平台的两个关键组成,镜像仓库和资源调度。

业务容器化后,运维面对的不再是一台台实实在在的物理机或者虚拟机了,而是一个个 Docker 容器,它们可能都没有固定的 IP,这个时候要想服务发布该怎么做呢?


这时候就需要一个面向容器的新型运维平台,它能够在现有的物理机或者虚拟机上创建容器,并且能够像运维物理机或者虚拟机一样,对容器的生命周期进行管理,通常我们叫它“容器运维平台”。


一个容器运维平台通常包含以下几个组成部分:镜像仓库、资源调度、容器调度和服务编排。

镜像仓库

Docker 容器运行依托的是 Docker 镜像,也就是说要发布服务,首先必须把镜像发布到各个机器上去,这个时候问题就来了,这个镜像该放在哪?如何把镜像发布到各个机器上去?这时候你就要依靠镜像仓库了。


镜像仓库的概念其实跟 Git 代码仓库类似,就是有一个集中存储的地方,把镜像存储在这里,在服务发布的时候,各个服务器都访问这个集中存储来拉取镜像,然后启动容器。


对于大部分业务团队来说,出于安全和访问速度的需要,都会搭建一套私有的镜像仓库。那么具体该如何搭建一套私有的镜像仓库呢?

1)权限控制

镜像仓库首先面临的第一个问题就是权限控制的问题,也就是说哪些用户可以拉取镜像,哪些用户可以修改镜像。


一般来说,镜像仓库都设有两层权限控制:一是必须登录才可以访问,这是最外层的控制,它规定了哪些人可以访问镜像仓库;二是对镜像按照项目的方式进行划分,每个项目拥有自己的镜像仓库目录,并且给每个项目设置项目管理员、开发者以及客人这三个角色,只有项目管理员和开发者拥有自己镜像仓库目录下镜像的修改权限,而客人只拥有访问权限,项目管理员可以给这个项目设置哪些人是开发者。


这个权限控制就跟大厦办公楼的管理类似,你要进入大厦里的一个办公室,首先必须具备进入大厦的权限,这个权限是在大厦里所有办公的人都有的。然后你还得具备大厦里你办公室所在楼层的门禁,这样才能进入办公室。不同楼层的人权限不同,只能进入自己楼层的办公室。如果某个办公室有新来的员工,首先要给他分配大厦的进入权限,然后还要这个办公室的管理员给他分配办公室的权限。


2)镜像同步

在实际的生产环境中,往往需要把镜像同时发布到几十台或者上百台集群节点上,单个镜像仓库实例往往受带宽原因限制无法同时满足大量节点的下载需求,这个时候就需要配置多个镜像仓库实例来做负载均衡,同时也就产生镜像在多个镜像仓库实例之间同步的问题了。


一般来说,有两种方案,一种是一主多从,主从复制的方案,比如开源镜像仓库Harbor采用了这种方案;另一种是 P2P 的方案,比如阿里的容器镜像分发系统蜻蜓采用了 P2P 方案。


Harbor 所采取的主从复制的方案是,把镜像传到一个主镜像仓库实例上去,然后其他从镜像仓库实例都从主镜像仓库实例同步,它的实现就像下图所描述的一样。

image.png

除此之外,Harbor 还支持层次型的发布方式,如果集群部署在多个 IDC,可以先从一个主 IDC 的镜像仓库同步到其他从 IDC 的镜像仓库,再从各个从 IDC 同步给下面的分 IDC,它的实现就像下图所描述的一样。

image.png

3)高可用性

既然 Docker 镜像是 Docker 容器运行的基础,那么镜像仓库的高可用性就不言而喻了。一般而言,高可用性设计无非就是把服务部署在多个 IDC,这样的话即使有 IDC 出问题,也可以把服务迁移到别的正常 IDC 中去。同样对于镜像仓库的搭建,也可以采用多 IDC 部署,那么需要做到的就是不同 IDC 之间的镜像同步。


比如镜像仓库会部署在永丰、土城两个内网 IDC 内,两个 IDC 内的镜像同步采用 Harbor 的双主复制策略,互相复制镜像,这样的话即使有一个 IDC 出现问题,另外一个 IDC 仍然能够提供服务,而且不丢失数据。

image.png

资源调度

Docker 镜像要分发到哪些机器上去?这些机器是从哪里来的?这其实涉及的是资源调度的问题。


服务部署的集群主要包括三种:


1、物理机集群。大部分中小团队应该都拥有自己的物理机集群,并且大多按照集群  -  服务池  -  服务器这种模式进行运维。物理机集群面临的问题,主要是服务器的配置不统一,尤其对于计算节点来说,普遍存在的一种情况就是几年前采购的机器的配置可能还是 12 核 16G 内存的配置,而近些年采购的机器都至少是 32 核 32G 内存的配置,对于这两种机器往往要区别对待,比如旧的机器用于跑一些非核心占用资源量不大的业务,而新采购的机器用于跑一些核心且服务调用量高的业务。


2、虚拟机集群。不少业务团队在使用物理机集群之后,发现物理机集群存在使用率不高、业务迁移不灵活的问题,因此纷纷转向了虚拟化方向,构建自己的私有云,比如以 OpenStack 技术为主的私有云集群在国内外不少业务团队都有大规模的应用。它的最大好处就是可以整合企业内部的服务器资源,通过虚拟化技术进行按需分配,提高集群的资源使用率,节省成本。


3、公有云集群。现在越来越多的业务团队,尤其是初创公司,因为公有云快速灵活的特性,纷纷在公有云上搭建自己的业务。公有云最大的好处除了快速灵活、分钟级即可实现上百台机器的创建,还有个好处就是配置统一、便于管理,不存在机器配置碎片化问题。

通过 Docker Machine 可以在企业内部的物理机集群,或者虚拟机集群比如 OpenStack 集群,又或者公有云集群比如 AWS 集群等上创建机器并且直接部署容器。Docker Machine 的功能虽然很好,但是对于大部分已经发展了一段时间的业务团队来说,并不能直接拿来使用。


这主要是因为资源调度最大的难点不在于机器的创建和容器的部署,而在于如何对接各个不同的集群,统一管理来自不同集群的机器权限管理、成本核算以及环境初始化等操作,这个时候就需要有一个统一的层来完成这个操作。这个对有历史包袱的团队,比如公司内网的物理机集群已经有一套运维体系来说,挑战不小,需要针对新的模式重新开发这套运维平台。

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7天前
|
运维 Kubernetes 安全
容器化技术在现代运维中的应用与挑战
【7月更文挑战第19天】随着云计算和微服务架构的兴起,容器化技术已经成为现代运维工作的重要组成部分。本文将探讨容器技术如何简化运维流程、提高效率,并分析在实际应用中遇到的挑战及解决方案。我们将深入讨论Docker和Kubernetes等工具的使用场景,以及如何在保障系统安全的同时,实现快速部署和扩展。
|
6天前
|
运维 监控 Kubernetes
容器化技术在现代运维中的应用与挑战
【7月更文挑战第21天】随着微服务架构的兴起,容器化技术成为现代运维不可或缺的工具。Docker和Kubernetes等技术的广泛应用,不仅提升了部署效率和应用的可移植性,还带来了新的运维模式。然而,容器安全、性能监控和自动化管理等问题也随之凸显。本文将深入探讨容器化技术的应用实践和面临的主要挑战,为运维人员提供策略和建议。
25 3
|
6天前
|
存储 运维 安全
容器化技术在现代运维中的应用与挑战
【7月更文挑战第21天】随着云原生技术的飞速发展,容器化已成为现代运维不可或缺的一环。本文将深入探讨容器技术的核心优势,分析其在运维自动化、微服务架构及持续集成/持续部署(CI/CD)流程中的关键作用,同时识别并讨论容器化实施过程中遇到的主要挑战,包括安全性问题、存储与网络配置的复杂性以及状态管理等难题。通过案例分析,我们旨在为读者提供容器化技术在运维领域应用的全面视角,并指出未来发展趋势。
|
12天前
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
13天前
|
弹性计算 运维 Kubernetes
自动化运维的新篇章:容器编排与微服务架构
【7月更文挑战第14天】在数字化转型的浪潮中,企业对运维效率和系统可靠性的需求日益增长。本文深入探讨了自动化运维的最新趋势——容器编排和微服务架构,并阐述了如何通过这些技术提升运维效率、降低系统复杂性以及提高服务的可用性和可扩展性。文章不仅介绍了相关技术和工具的选择,还提供了实际案例分析,旨在为读者提供一套完整的解决方案框架,以适应快速变化的市场需求。
|
18天前
|
存储 运维 监控
容器化技术在现代运维中的应用与挑战
【7月更文挑战第9天】在数字化转型的浪潮中,容器化技术以其轻量级、可移植和易于管理的特性成为DevOps实践的重要工具。本文深入探讨了容器化技术如何革新现代运维工作,同时指出实施过程中可能遇到的挑战,包括安全性问题、存储限制和网络配置复杂性等,旨在为运维团队提供应对策略。
|
18天前
|
运维 监控 Kubernetes
容器化技术在现代运维中的应用与挑战
【7月更文挑战第9天】 在数字化浪潮的推动下,容器化技术已成为软件开发和运维领域的革命性进步。本文将深入探讨容器化技术如何重塑运维工作模式,分析其在提高部署效率、优化资源利用等方面的显著优势,并讨论在安全性、监控与管理等方面所面临的挑战。通过具体案例分析,我们将揭示容器化技术在实际运维中的最佳实践,为读者提供一手的运维洞见和实用策略。
|
19天前
|
存储 运维 监控
容器化技术在现代运维中的应用与挑战
【7月更文挑战第8天】随着云计算技术的飞速发展,容器化技术已经成为现代运维不可或缺的一部分。本文将深入探讨容器化技术的基本概念、核心优势以及在运维领域的实际应用案例,同时分析在部署和管理过程中可能遇到的挑战和解决方案,旨在为运维人员提供一份全面的容器化应用指南。
15 0
|
10天前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
110 5
docker常用命令大全(基础、镜像、容器、数据卷)
|
2天前
|
持续交付 云计算 开发者
Docker容器技术在软件开发中的应用
【7月更文挑战第25天】Docker容器技术凭借其轻量级、可移植和高效的特点,在软件开发中发挥着越来越重要的作用。通过容器化技术,开发者可以更加方便地构建、部署和管理应用程序,提高开发效率和应用程序的可靠性。随着云计算和现代应用开发的不断发展,Docker容器技术将在更多领域得到广泛应用,为企业的数字化转型提供有力支持。