CoreOS 入门

简介: 本文讲的是CoreOS 入门【编者的话】本文是一篇 CoreOS 入门文章。分别介绍了 CoreOS 的三个主要组件——配置和服务发现、应用程序管理和调度以及应用程序,对一些概念进行了解释,并初步介绍了一些 CoreOS 的高阶组件供读者探索。
本文讲的是CoreOS 入门【编者的话】本文是一篇 CoreOS 入门文章。分别介绍了 CoreOS 的三个主要组件——配置和服务发现、应用程序管理和调度以及应用程序,对一些概念进行了解释,并初步介绍了一些 CoreOS 的高阶组件供读者探索。

如果你正在阅读这篇博客,那么你大概知道容器是什么以及为何要使用它们。 Docker 通过容器使得实验更加容易,在生产环境中部署和管理容器正逐渐变得更加容易。 然而,Docker 所提供的(免费的)服务仍然留下了很多空白,已经有公司开始填补这些空白。

CoreOS 就是一个这样的选择; 它不只是一个容器管理系统,而是一个设计用于运行容器的完整(基于 Linux 的)操作系统。

CoreOS 组件

CoreOS 由执行特定功能的三个关键组件组成。

配置和服务发现

etcd  是一个全局分布式键值存储,它允许集群中的节点相互交换配置,并且还可以探知集群中可用的服务。 可以通过命令行实用程序或通过 HTTP 端点从  etc  中获取信息。

应用程序管理和调度

fleet 是一个集群范围的 init(运行所有其他进程的第一个进程)系统,它与每个节点上运行的 systemd  init 系统交互。 这意味着可以从中心点启动和管理每个节点上的各个进程。

应用程序

CoreOS 中没有包管理器, 所有应用程序在容器内运行。 这些应用程序可以使用Docke r或者 CoreOS 原生容器引擎 — rkt(Rocket)。

入门

由于 CoreOS 是一个完整的操作系统,开始使用 CoreOS 意味着你需要在几个节点上安装操作系统以便测试。 如果你是 Mac 或 Windows 用户,则需要使用 Vagrant 或在托管提供商(如  AWS  或  Digital Ocean )上尝试预配置的集群。

一旦安装了 CoreOS,需要在符合 “cloud-config” 格式的配置文件中定义集群, 它提供了很多可以发送到集群的 配置选项 ,比如,我正在试验的Vagrant图像。 一旦安装,你会发现一个  config.rb.sample  文件,可以重命名(如 config.rb )和更改,以匹配在集群中的预想的实例数量。 例如:
$num_instances=3

还需要取消注释并更改CoreOS更新渠道:
$update_channel='stable'

在构建过程中,Vagrant 脚本会将默认云配置写入用户数据文件,所以要复制一份示例文件: cp user-data.sample user-data 使用 Vagrant 启动群集,当群集就绪时,可以通过 vagrant ssh core-01 - -A 连接到的节点。

部署应用

要弄明白 CoreOS 如何起到辅助作用的最好方法是实现一个例子。 在CoreOS中可以使用所熟悉的 Docker 镜像、容器和命令。
docker run --name mongo-db -d mongo

此命令将启动名为 mongo-db 的MongoDB容器实例。 虽然这是标准的Docker操作,但它不能帮助你发挥 CoreOS 的全部功能和灵活性。 如果 Mongo 实例崩溃或者实例重启怎么办? 这时就需要Fleet及其对 systemd 的控制来发挥作用。

要使用 systemd ,需要创建一个代表所要运行的应用程序的服务, 这称之为单元文件。 在集群其中一台机器上,在 / etc / systemd / system 中创建 mongo.service 。

ini [Unit] Description=MongoService After=docker.service Requires=docker.service

[Service] TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker kill mongo-db ExecStartPre=-/usr/bin/docker rm mongo-db ExecStartPre=/usr/bin/docker pull mongo ExecStart=/usr/bin/docker run --name mongo-db -d mongo

[Install] WantedBy=multi-user.target


启用并启动服务:
sudo systemctl enable /etc/systemd/system/mongo.service sudo systemctl start mongo.service

现在可以使用常用的 docker ps 来查看正在运行的容器。 这仍然与集群中的单个节点相关,启动集群上的服务,而不必担心它在哪里运行,需要使用fleet:
fleetctl start mongo.service

查看已启动的容器:
fleetctl list-units

阅读 文档 了解单元文件的更高级的概念。

可用性传播

如果要确保服务上的实例在单个节点上运行,请将服务文件重命名为 mongo @ .service ,并将下面代码添加到文件底部:
ini ... [X-Fleet] Conflicts=mongo@*.service

现在,可以启动多个服务实例,每个机器上运行一个实例:
fleetctl start mongo@1 fleetctl start mongo@2

并再次使用 fleetctl list-units 来检查实例的运行情况。

集群中的所有机器都与在集群中被选为leader的节点保持常规联系。 如果一个节点发生故障,当合适的替换可用时,在其上运行的系统单元将被标记为重新调度。 通过登录到一个节点,使用 sudo systemctl stop fleet 停止队列进程,等待几分钟后使用 sudo systemctl start fleet 重新启动,来模拟节点故障的情况。 可以通过 sudo journalctl -u fleet 读取fleet日志,以获得更多的内部细节。

现在可以将新服务添加到cloud-config文件,以确保机器上的 systemd 启动时服务也能启动。
units: - name: mongo.service command: start

Fleet 为高级设置提供了更多配置选项,例如在整个群集中运行单元或运行基于机器的容量或位置的调度单元。

进阶

上面列出的组件是 CoreOS 的基本组件,但还有其他几个组件对于基于容器的应用程序很有用,可与 CoreOS 一起使用。

Kubernetes

由 Google 创建的最流行的容器管理系统,在 CoreOS 上运行得更好,并提供了更高(和更可视化)级别的容器管理。 有关更多详细信息,请阅读 CoreOS安装指南 。

R(oc)k(e)t

关于rkt的讨论  本身是一篇完整的文章,但 rkt 是一个 Linux 原生容器运行时, 这意味着不使用虚拟机就不能在 MacOS 或 Windows 上工作。 它旨在更整齐地融入Linux 生态系统,利用系统级初始化系统,而不是使用自己的自定义方法(如Docker)。 它使用 appc 标准,所以在理论上,大多数 Docker 镜像应该与rkt一起结合使用。

原文链接:An Introduction to CoreOS (翻译:李加庆)

原文发布时间为:2016-10-23

本文作者:李加庆

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:CoreOS 入门

相关文章
|
存储 缓存 监控
|
SQL 分布式计算 Hadoop
Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
【2月更文挑战第6天】Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
1680 0
|
7月前
|
安全 Android开发 iOS开发
阿里云上的 Salesforce 安卓版移动端应用已上线!
阿里云上的 Salesforce 安卓版移动端应用已上线!
|
4月前
|
人工智能 自然语言处理 安全
QoderWork使用全解:零基础上手到高阶应用,打造专属AI工作助手
QoderWork是一款运行在本地桌面的AI智能体助手,由阿里云旗下Qoder团队打造,核心定位是替代传统聊天式AI,以自主执行多步骤任务的方式,成为用户身边的“AI实习生”,覆盖文件管理、数据处理、文档生成、跨应用协作等全场景工作需求。从零基础入门到深度定制,再到打造专属工作流,这套指南将带你全面掌握QoderWork,让它从简单工具升级为全能工作搭档。
747 4
|
11月前
|
存储 人工智能 大数据
|
5月前
|
存储 弹性计算 小程序
阿里云最便宜云服务器怎么选?38元/99元/199元机型性能全解析
阿里云推出38元/年、99元/年、199元/年三档高性价比云服务器,分别面向个人开发者、小微初创及中小企业。本文从配置、实测性能与适用场景三维度深度对比,助力大家轻松选择低成本上云!
1130 4
|
7月前
|
人工智能 弹性计算 自然语言处理
2026年企业如何建设数据系统:从架构规划到落地实施全流程指南2026年企业如何建设数据系统:从架构规划到落地实施全流程指南
2026年,企业数据建设面临“建而不用、用而不准、准而不快”困局。本文提出从“自建造轮子”转向“范式复用”,以瓴羊Dataphin为核心,依托OneData方法论,实现顶层设计、资产沉淀、全链路治理与智能服务四阶段闭环,助力企业快速构建标准化、智能化、服务化的现代数据底座。(239字)
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与未来医疗:AI技术在疾病诊断中的应用前景####
本文探讨了人工智能(AI)在现代医疗领域,尤其是疾病诊断方面的应用潜力和前景。随着技术的不断进步,AI正逐渐改变传统医疗模式,提高诊断的准确性和效率。通过分析当前的技术趋势、具体案例以及面临的挑战,本文旨在为读者提供一个全面的视角,理解AI如何塑造未来医疗的面貌。 ####
|
消息中间件 监控 数据可视化
ROS Terraform 托管服务与原生 Terraform 对比:选择最适合你的 IaC 工具
本文详细介绍了阿里云资源编排服务(ROS)提供的Terraform托管服务,对比了ROS与Terraform的原生能力,帮助用户根据需求选择合适的IaC工具。
1379 54
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
3495 20

热门文章

最新文章