mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-11-28 01:08:53 +00:00
Remove fleet #222
This commit is contained in:
parent
7cba69c5f7
commit
5ed88ccd75
@ -4,4 +4,4 @@ CoreOS 的设计是为你提供能够像谷歌一样的大型互联网公司一
|
||||
|
||||
CoreOS 的安装文件和运行依赖非常小,它提供了精简的 Linux 系统。它使用 Linux 容器在更高的抽象层来管理你的服务,而不是通过常规的 YUM 和 APT 来安装包。
|
||||
|
||||
同时,CoreOS 几乎可以运行在任何平台:Vagrant, Amazon EC2, QEMU/KVM, VMware 和 OpenStack 等等,甚至你所使用的硬件环境。
|
||||
同时,CoreOS 几乎可以运行在任何平台:VirtualBox, Amazon EC2, QEMU/KVM, VMware 和 OpenStack 等等,甚至你所使用的硬件环境。
|
||||
|
@ -2,41 +2,27 @@
|
||||
|
||||
提起 Docker,我们不得不提的就是 [CoreOS](https://coreos.com/).
|
||||
|
||||
CoreOS 对 Docker 甚至容器技术的发展都带来了巨大的推动作用。
|
||||
|
||||
CoreOS 是一种支持大规模服务部署的 Linux 系统。
|
||||
|
||||
CoreOS 使得在基于最小化的现代操作系统上构建规模化的计算仓库成为了可能。
|
||||
|
||||
CoreOS 是一个新的 Linux 发行版。通过重构,CoreOS 提供了运行现代基础设施的特性。
|
||||
|
||||
CoreOS 的这些策略和架构允许其它公司像 Google,Facebook 和 Twitter 那样高弹性的运行自己得服务。
|
||||
|
||||
CoreOS 遵循 Apache 2.0 协议并且可以运行在现有的硬件或云提供商之上。
|
||||
CoreOS 对 Docker 甚至容器技术的发展都带来了巨大的推动作用。其提供了运行现代基础设施的特性,支持大规模服务部署,使得在基于最小化的现代操作系统上构建规模化的计算仓库成为了可能。
|
||||
|
||||
# CoreOS 特性
|
||||
|
||||
## 一个最小化操作系统
|
||||
|
||||
CoreOS 被设计成一个来构建你平台的最小化的现代操作系统。
|
||||
|
||||
它比现有的 Linux 安装平均节省 40% 的 RAM(大约 114M )并允许从 PXE/iPXE 非常快速的启动。
|
||||
CoreOS 被设计成一个基于容器的最小化的现代操作系统。它比现有的 Linux 安装平均节省 40% 的 RAM(大约 114M )并允许从 PXE 或 iPXE 非常快速的启动。
|
||||
|
||||
## 无痛更新
|
||||
|
||||
利用主动和被动双分区方案来更新 OS,使用分区作为一个单元而不是一个包一个包得更新。
|
||||
|
||||
这使得每次更新变得快速,可靠,而且很容易回滚。
|
||||
利用主动和被动双分区方案来更新 OS,使用分区作为一个单元而不是一个包一个包的更新。这使得每次更新变得快速,可靠,而且很容易回滚。
|
||||
|
||||
## Docker容器
|
||||
|
||||
应用作为Docker容器运行在 CoreOS 上。容器以包得形式提供最大得灵活性并且可以在几毫秒启动。
|
||||
应用作为 Docker 容器运行在 CoreOS 上。容器以包的形式提供最大得灵活性并且可以在几毫秒启动。
|
||||
|
||||
## 支持集群
|
||||
|
||||
CoreOS 可以在一个机器上很好地运行,但是它被设计用来搭建集群。
|
||||
|
||||
可以通过 fleet 很容易得使应用容器部署在多台机器上并且通过服务发现把他们连接在一起。
|
||||
可以通过 k8s 很容易得使应用容器部署在多台机器上并且通过服务发现把他们连接在一起。
|
||||
|
||||
## 分布式系统工具
|
||||
|
||||
|
@ -1,14 +1,12 @@
|
||||
# CoreOS 工具介绍
|
||||
|
||||
CoreOS 提供了三大工具,它们分别是:服务发现,容器管理和进程管理。
|
||||
`CoreOS` 内置了 `服务发现`,`容器管理` 工具。
|
||||
|
||||
## 使用etcd服务发现
|
||||
## 服务发现
|
||||
|
||||
CoreOS 的第一个重要组件就是使用 etcd 来实现的服务发现。
|
||||
`CoreOS` 的第一个重要组件就是使用 `etcd` 来实现的服务发现。
|
||||
|
||||
如果你使用默认的样例 cloud-config 文件,那么 etcd 会在启动时自动运行。
|
||||
|
||||
例如:
|
||||
如果你使用默认的样例 `cloud-config` 文件,那么 `etcd` 会在启动时自动运行。
|
||||
|
||||
```yml
|
||||
#cloud-config
|
||||
@ -27,78 +25,10 @@ coreos:
|
||||
discovery: https://discovery.etcd.io/<token>
|
||||
```
|
||||
|
||||
配置文件里有一个 token,获取它可以通过如下方式:
|
||||
配置文件里有一个 `token`,你可以通过访问 https://discovery.etcd.io/new 来获取一个包含你 `teoken` 的 URL。
|
||||
|
||||
访问地址
|
||||
## 容器管理
|
||||
|
||||
https://discovery.etcd.io/new
|
||||
第二个组件就是 `Docker`,它用来运行你的代码和应用。`CoreOS` 内置 `Docker`,具体使用请参考本书其他章节。
|
||||
|
||||
你将会获取一个包含你得 teoken 的 URL。
|
||||
|
||||
## 通过Docker进行容器管理
|
||||
|
||||
第二个组件就是 docker,它用来运行你的代码和应用。
|
||||
|
||||
每一个 CoreOS 的机器上都安装了它,具体使用请参考本书其他章节。
|
||||
|
||||
## 使用fleet进行进程管理
|
||||
|
||||
第三个 CoreOS 组件是 fleet。
|
||||
|
||||
它是集群的分布式初始化系统。你应该使用 fleet 来管理你的 docker 容器的生命周期。
|
||||
|
||||
Fleet 通过接受 systemd 单元文件来工作,同时在你集群的机器上通过单元文件中编写的偏好来对它们进行调度。
|
||||
|
||||
首先,让我们构建一个简单的可以运行 docker 容器的 systemd 单元。把这个文件保存在 home 目录并命名为 hello.service:
|
||||
|
||||
```yml
|
||||
hello.service
|
||||
|
||||
[Unit]
|
||||
Description=My Service
|
||||
After=docker.service
|
||||
|
||||
[Service]
|
||||
TimeoutStartSec=0
|
||||
ExecStartPre=-/usr/bin/docker kill hello
|
||||
ExecStartPre=-/usr/bin/docker rm hello
|
||||
ExecStartPre=/usr/bin/docker pull busybox
|
||||
ExecStart=/usr/bin/docker run --name hello busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
|
||||
ExecStop=/usr/bin/docker stop hello
|
||||
```
|
||||
|
||||
然后,读取并启动这个单元:
|
||||
|
||||
```yml
|
||||
$ fleetctl load hello.service
|
||||
=> Unit hello.service loaded on 8145ebb7.../172.17.8.105
|
||||
$ fleetctl start hello.service
|
||||
=> Unit hello.service launched on 8145ebb7.../172.17.8.105
|
||||
```
|
||||
|
||||
这样,你的容器将在集群里被启动。
|
||||
|
||||
下面我们查看下它的状态:
|
||||
|
||||
```yml
|
||||
$ fleetctl status hello.service
|
||||
● hello.service - My Service
|
||||
Loaded: loaded (/run/fleet/units/hello.service; linked-runtime)
|
||||
Active: active (running) since Wed 2014-06-04 19:04:13 UTC; 44s ago
|
||||
Main PID: 27503 (bash)
|
||||
CGroup: /system.slice/hello.service
|
||||
├─27503 /bin/bash -c /usr/bin/docker start -a hello || /usr/bin/docker run --name hello busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
|
||||
└─27509 /usr/bin/docker run --name hello busybox /bin/sh -c while true; do echo Hello World; sleep 1; done
|
||||
|
||||
Jun 04 19:04:57 core-01 bash[27503]: Hello World
|
||||
..snip...
|
||||
Jun 04 19:05:06 core-01 bash[27503]: Hello World
|
||||
```
|
||||
|
||||
我们可以停止容器:
|
||||
|
||||
```yml
|
||||
fleetctl destroy hello.service
|
||||
```
|
||||
|
||||
至此,就是 CoreOS 提供的三大工具。
|
||||
`CoreOS` 也内置了由自己开发的容器 `Rkt`,`Rkt` 不属于本书的讨论范围,这里不再赘述。
|
||||
|
@ -83,20 +83,3 @@ ssh-add ~/.vagrant.d/insecure_private_key
|
||||
```bash
|
||||
vagrant ssh core-01 -- -A
|
||||
```
|
||||
|
||||
## 测试集群
|
||||
|
||||
使用 fleet 来查看机器运行状况
|
||||
|
||||
```bash
|
||||
fleetctl list-machines
|
||||
=>
|
||||
MACHINE IP METADATA
|
||||
517d1c7d... 172.17.8.101 -
|
||||
cb35b356... 172.17.8.103 -
|
||||
17040743... 172.17.8.102 -
|
||||
```
|
||||
|
||||
如果你也看到了如上类似的信息,恭喜,本地基于三台机器的集群已经成功启动,是不是很简单。
|
||||
|
||||
那么之后你就可以基于 CoreOS 的三大工具做任务分发,分布式存储等很多功能了。
|
||||
|
Loading…
Reference in New Issue
Block a user