coreos_CoreOS简介
coreos
如果您正在阅读此博客,那么您将大致了解什么是容器以及为什么要使用它们。 Docker使容器的实验变得容易,并且正逐渐使其在生产环境中的部署和管理变得更加容易。 但是,Docker提供的(免费)仍然存在很多空白,并且其他人已经加紧弥补了这些空白。
CoreOS就是这样一种选择。 它不仅是容器管理系统,而且是旨在运行容器的整个(基于Linux)操作系统。
CoreOS的组件
CoreOS由执行特定功能的三个关键组件组成。
配置和服务发现
etcd
是全局分布的键值存储,它允许集群中的节点相互交换配置,并且还知道集群中哪些服务可用。 可以通过命令行实用程序或HTTP端点从etc
信息。
应用程序管理和调度
fleet
是一个集群范围内的init(运行所有其他进程的第一个进程)系统,它与在每个单独节点上运行的systemd
init系统进行交互。 这意味着您可以从一个中心点启动和管理每个节点上的各个进程。
应用领域
CoreOS中没有软件包管理器。 所有应用程序都在容器中运行。 这些可以使用Docker或CoreOS的本机容器引擎rkt(火箭)。
入门
由于它是一个完整的操作系统,因此开始使用CoreOS意味着您需要在几个节点上安装OS才能对其进行正确测试。 如果您是Mac或Windows用户,则需要使用Vagrant或在托管提供商(例如AWS或Digital Ocean)上尝试预先配置的集群。
一旦安装了CoreOS,就需要在符合“ cloud-config”格式的配置文件中定义集群。 它提供了许多可发送到集群的配置选项 。 例如,我正在尝试Vagrant图片。 安装完成后,您将找到一个config.rb.sample
文件,您可以对其进行重命名(更改为config.rb
)并进行更改以匹配您想要在集群中的实例数。 例如:
$num_instances=3
您还需要取消注释并更改CoreOS更新通道:
$update_channel='stable'
在构建过程中,Vagrant脚本会将默认的cloud-config写入用户数据文件,因此请使用cp user-data.sample user-data
复制提供的示例文件。
在启动Vagrant的情况下启动群集,然后在群集准备就绪时,可以使用vagrant ssh core-01 -- -A
连接到节点。
!新的号召性用语
部署应用
了解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
来检查您的实例是否正在运行以及在何处运行。
群集中的所有计算机都与选举为群集中的领导者的节点保持定期联系。 如果一个节点发生故障,则将在该节点上运行的系统单元标记为可重新调度,就像有合适的替换节点时一样。 您可以通过以下方式模拟这种情况:登录到一个节点,使用sudo systemctl stop fleet
停止舰队进程,等待几分钟,然后使用sudo systemctl start fleet
重新启动它。 您可以阅读车队日志sudo journalctl -u fleet
以了解发生的情况。
现在,您可以将新服务添加到cloud-config文件的底部,以确保在systemd
在计算机上启动时启动。
units: - name: mongo.service command: start
Fleet为高级设置提供了更多的配置选项 ,例如在整个集群中运行一个单元或根据计算机的容量或位置调度单元。
超越基础
上面概述的组件是CoreOS的基本组件,但是对于基于容器的应用程序来说,还有一些其他有用的东西可以很好地与CoreOS一起使用。
Kubernetes
Google创建的最流行的容器管理系统在CoreOS上运行得更好,并提供了更高(更直观)的容器管理级别。 阅读CoreOS安装指南以获取更多详细信息。
火箭
讨论rkt本身是全文,但是rkt是Linux本机容器运行时。 这意味着如果不使用虚拟机,它将无法在MacOS或Windows上运行。 它旨在更整洁地适应Linux生态系统,利用系统级初始化系统,而不是使用自己的自定义方法(如Docker)。 它使用appc标准 ,因此从理论上讲,您的大多数Docker映像也应与rkt一起使用。
进入核心
如果您对Linux和init系统的概念很有经验,那么您可能会发现CoreOS是与Docker映像一起使用的引人注目的工具。 这个项目(和团队)正在增长,最近有了新的资金来源,在欧洲开设了办事处。 我很想知道您对使用它的感觉。
翻译自: https://www.javacodegeeks.com/2016/09/an-introduction-to-coreos.html
coreos
coreos_CoreOS简介相关推荐
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Docker学习(一)-----Docker简介与安装
一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- TensorRT简介
TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...
- 谷粒商城学习笔记——第一期:项目简介
一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...
- 通俗易懂的Go协程的引入及GMP模型简介
本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...
- Linux 交叉编译简介
Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...
- TVM Operator Inventory (TOPI)简介
TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...
- 计算机视觉系列最新论文(附简介)
计算机视觉系列最新论文(附简介) 目标检测 1. 综述:深度域适应目标检测标题:Deep Domain Adaptive Object Detection: a Survey作者:Wanyi Li, ...
- 2021年大数据ELK(二十三):Kibana简介
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. Kibana简介 通过上面的这张图就可以看到,Kibana可以用来展示丰富的图表. ...
最新文章
- 通讯录_怎么恢复手机通讯录?最完整手机通讯录恢复方法大公开
- Vue 脚手架生成的项目结构分析||Vue 脚手架的自定义配置
- html网页原理,html运行原理
- 深度学习(9)TensorFlow基础操作五: Broadcasting
- php curl上传文件返回false,php curl上传文件$_FILES为空的问题
- PyODPS DataFrame:统一的数据查询语言
- 95-40-115-java.util.concurrent-线程-AbstractExecutorService
- Hadoop系列之OutputCollector
- 使用mongoose和bcrypt做认证
- vue(vue-cli+vue-router)+babel+webpack项目搭建入门 (第一步)
- B1816 扑克牌 二分答案 + 贪心
- 通过XShell远程连接Linux
- 搭建一条区块链需要多少时间和资金
- 怎么使用7zip进行分批压缩_7z解压软件(7-zip)分卷压缩怎么做?
- Unity开发者的C#内存管理(中篇)
- 万达商管再闯IPO大门
- Qt线程、事件与QObject
- oracle会计 英文,求助,关于cost management 的英文资料+翻译
- php变量输出的几种方式
- 实验三 迷宫游戏开发
热门文章
- 一个有趣的555定时电路,有点意思哈哈
- 缓冲电路/延时上电电路
- 递归下降分析法java_Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法...
- 玩出来的33岁亿万富翁-畅游CEO王滔
- 软考高级网络规划设计师历年论文真题汇总2009-2021
- 航信eterm指令_Eterm常用指令
- CSS基础之 文字和文本元素
- 微软服务器补丁管理软件,微软IT的补丁管理-MicrosoftDownloadCenter.PDF
- Java编程软件教学:Eclipse入门
- bootstrap table用法