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 入门

时间: 2024-11-10 05:28:18

CoreOS 入门的相关文章

Docker、Mesos和Marathon剖析以及入门实战

本文讲的是Docker.Mesos和Marathon剖析以及入门实战,[编者的话]国外广为流传的一个比喻是:在传统服务模式下,可以想象服务器就是IT的宠物(Pets),给它们取名字,并精心抚养长大,当它们生病了,你得为他它们治病.而在新形态的应用服务模型中,虚拟机被看做是农场中的公牛,名字通常都是编号,当他们生病了,你就杀掉他,用一头新牛代替. 未来的应用架构应该像对待农场中的公牛一样:对基础架构的"保养".保护基础架构的各种功能,比起云计算型应用模式可能会逐渐变得越来越不那么重要.最

我的碎碎念:Docker入门指南

本文讲的是我的碎碎念:Docker入门指南,[编者的话]之前曾经翻译过很多Docker入门介绍的文章,之所以再翻译这篇,是因为Anders的角度很独特,思路也很调理.你也可以看下作者的演讲稿<Docker, DevOps的未来>.本文介绍了Docker的一些基本概念.诱人的特性.Docker的工作原理.日常管理基本操作,以及一些Docker的问题的解决方案. 什么是Docker,你应该知道些什么? 相比很多人的解释,我相信说Docker是一个轻量级的虚拟机更容易理解.另外一种解释是:Docke

Mesosphere入门指南--第三部分

本文讲的是Mesosphere入门指南--第三部分,[编者的话]本文为Mesosphere官方博客中发布的系列文章的第二部分,Mesosphere在本篇系列文章中分享了DC/OS的入门指南,并且做了演示. 在这系列之前的两篇文章中,我们通过配置DC/OS,安装和启动一个Docker应用程序并且安装了一些公有的负载均衡的基础设施.说真的,这些都是你需要开始的基本知识. 但是DC/OS有一堆很棒的特性,应用和扩展.在先进的4层Minuteman负载均衡之间,SQL和NoSQL例如Crate和Aran

Docker技术入门与实战(第2版).

容器技术系列 Docker技术入门与实战 第2版 杨保华 戴王剑 曹亚仑 编著 图书在版编目(CIP)数据 Docker技术入门与实战 / 杨保华,戴王剑,曹亚仑编著. -2版. -北京:机械工业出版社,2017.1 (容器技术系列) ISBN 978-7-111-55582-7 I. D- II. ①杨- ②戴- ③曹- III. Linux操作系统-程序设计 IV. TP316.85 中国版本图书馆CIP数据核字(2016)第308604号 本书从Docker基本原理开始,深入浅出地讲解Do

Mesosphere入门指南(一)

本文讲的是Mesosphere入门指南(一),[编者的话]本文为Mesosphere官方博客中发布的系列文章的第一部分,Mesosphere在本篇系列文章中分享了DC/OS的入门指南,并且做了演示. 在Mesosphere,大家都爱用Mesos.显而易见地,这是一个被数以百计的公司成功证明可以运行容器在生产环境中的技术.但是作为我们通常所说的"可扩展"技术,Mesos并不是用于部署的最简单的系统. 假设你想要使用Mesos去用于你的新的微服务架构的宿主系统.在之前老版本的Mesos里,

CoreOS上的Fleet,第一部分

本文讲的是CoreOS上的Fleet,第一部分,[译者的话]原文作者是一名科技文章的作者.他的这篇文章主要是简单介绍利用fleet来实现服务高可用的完整流程,让读者对fleet有一个直观的了解.合适大家入门fleet的一篇文章. 服务器宕机是经常发生的事情.然而我们还是非常希望不会因为这样导致应用程序挂了,因而影响到业务的正常服务.这也是为什么服务的高可用成了运维工程师选择把应用部署到云端上去的一个最重要的理由. Fleet,一个CoreOS上的工具,就能解决上述的问题,把你从整天提心吊胆中释放

Java新手入门教程:新手必须掌握的30条Java基本概念

  Java新手必看教程是什么?当然是绿茶小编带来的Java入门需掌握的30个基本概念啦,掌握了这些概念对于学习Java大大有利,正在学习Java编程的同学们快来看看吧. 1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构 是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大 限度上

Python入门之modf()方法的使用

 这篇文章主要介绍了Python入门之modf()方法的使用,是Python学习当中的基础知识,需要的朋友可以参考下     modf()方法返回两个项的元组x的整数小数部分.这两个元组具有相同x符号.则返回一个浮点数的整数部分. 语法 以下是modf()方法的语法: ? 1 2 3 import math   math.modf( x ) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数. 参数 x -- 这是一个数值表达式 返回值 这种方

ios入门OC_UI晋级学什么?

1. OC 语法初步, 你可能学到面向对象最近本的概念, 并且可以大致的建立几个自以为是的类,但这仅仅是开始. 你知道为什么面向对象要有3大特性么.知道他们是用到什么设计模式的么 2. 你可能学到了NSString, NSMutableString 字符串的基本操作方法, 你可能会花大量的时间去看那些方法. 从没考虑过方法的实用性. UI方法成千上万, 大量的时间浪费到寻找上边可能会很累的. 所以, 学会现用现看 3. 你可能学到了NSArray, NSMutableArray, NSDicti