Articles of coreos

调整使用CoreOS的数字海洋云滴会破坏CoreOs群集

我是新来的CoreOs,我一直在DigitalOcean上进行实验。 首先让我说,我不确定这是DigitalOcean问题还是CoreOS问题。 如何复制: 将2个CoreOS分离出来,并通过Cloud-Config将它们连接在一起形成一个集群。 在数字海洋仪表板中,closures两个水滴并resize。 打开两个液滴。 ssh进入其中一个水滴 运行fleetctl列表机器 你应该得到的 2015/04/22 21:05:50信息client.go:291:从http://127.0.0.1:4001/获取响应失败:dial tcp 127.0.0.1:4001:连接被拒绝 2015/04/22 21:05:50错误client.go:213:无法获得{Get /coreos.com/fleet/machines}的结果,在100ms内重试 2015/04/22 21:05:50信息client.go:291:从http://127.0.0.1:4001/获取响应失败:dial tcp 127.0.0.1:4001:连接被拒绝 2015/04/22 21:05:50错误client.go:213:无法获得{Get /coreos.com/fleet/machines}的结果,在200ms内重试 2015/04/22 21:05:50信息client.go:291:从http://127.0.0.1:4001/获取响应失败:dial tcp 127.0.0.1:4001:连接被拒绝 2015/04/22 21:05:50错误client.go:213:无法获得{Get /coreos.com/fleet/machines}的结果,重试400ms 2015/04/22 21:05:51信息client.go:291:从http://127.0.0.1:4001/获取响应失败:dial tcp 127.0.0.1:4001:连接被拒绝 2015/04/22 21:05:51错误client.go:213:无法获得{Get /coreos.com/fleet/machines}的结果,在800ms内重试 2015/04/22 21:05:51信息client.go:291:从http://127.0.0.1:4001/获取响应失败:dial tcp 127.0.0.1:4001:连接被拒绝 2015/04/22 21:05:51错误client.go:213:无法获得{Get /_coreos.com/fleet/machines}的结果,在1秒内重试 执行journalctl -u etcd 将会呈现 Apr 22 14:38:02 test etcd [578]:[etcd] Apr […]

etcd2以我非常简单的设置在我的CoreOS上失败

我想设置一个运行我自己的发现服务的3节点群集,我正在遵循这个简单的指南进行静态发现。 我知道我的3台机器IP地址,当我尝试在第一台机器上启动etcd2时: etcd2 -name infra0 -initial-advertise-peer-urls http://10.0.0.1:2380 -listen-peer-urls http://10.0.0.1:2380 -listen-client-urls http://10.0.0.1:2379,http://127.0.0.1:2379 -advertise-client-urls http://10.0.0.1:2379 -initial-cluster-token etcd-cluster-1 -initial-cluster infra0=http://10.0.0.1:2380,infra1=http://10.0.0.2:2380,infra2=http://10.0.0.3:2380 -initial-cluster-state new 但它失败了,它只是打印出一些奇怪的输出: 2015/10/20 15:16:50 etcdmain: etcd Version: 2.1.2 2015/10/20 15:16:50 etcdmain: Git SHA: ff8d1ec 2015/10/20 15:16:50 etcdmain: Go Version: go1.4.2 2015/10/20 15:16:50 etcdmain: Go OS/Arch: linux/amd64 2015/10/20 15:16:50 etcdmain: setting maximum number of CPUs to 1, total […]

如何将日志logging设置为/ dev / null来启动systemd单元文件(someservice.service)?

有没有办法使用systemd启动服务,并指示它logging到/ dev / null,而不包括单元文件中的适当行。 例如,将StandardOutput和StandardErorr指令设置为null的文件将把日志发送到/ dev / null。 [Unit] Description=MyService [Service] ExecStart=/usr/bin/start_myservice.sh Restart=always StandardOutput=null StandardError=inherit [X-Fleet] Global=true 这项服务可以开始 systemctl start MyService.service 我的问题是,是否有办法启动没有设置StandardOutput和StandardError指令的服务,并强制它的日志去/ dev / null。 也许用像这样的命令 systemctl start OtherService.service –disable-logging

如何为Docker容器设置ip范围?

我在我的ESX上使用CoreOS(没有云configuration – 我没有任何云提供商)。 我想更改docker容器的私有IP,因为它们无法响应使用相同IP范围172.xxx的networking

Systemd退出执行导致失败的命令的bash脚本,而不是继续

我试图得到一个脚本,推动我的系统login到CoreOS的logentries。 为了弥补这个事实,实例在AWS上分拆时没有互联网连接,我把这个命令放在了一个while循环中。 从命令行运行脚本while循环工作得很好。 但是,当systemd运行它的脚本时,它会立即退出netcat超时,所以它永远不会再有机会尝试。 有没有办法让systemd对退出脚本不那么积极? 系统输出,永远不会去“睡眠netcat” Jul 23 22:26:21 core-01 systemd[1]: Starting Push journal logs to logentries.com… Jul 23 22:26:21 core-01 systemd[1]: Started Push journal logs to logentries.com. Jul 23 22:26:21 core-01 bash[880]: trying netcat Jul 23 22:26:31 core-01 bash[880]: Ncat: Connection timed out. journal2logentries.sh #!/usr/bin/env bash token=logentriestoken while true do echo 'trying netcat' journalctl […]

当Docker卷正在使用时,CoreOS如何迁移Docker容器?

我刚学习如何使用CoreOS,并已经遇到了第一个真正困扰我的问题:当使用fleetctl来启动和pipe理单元时,我了解到一个单元被自动移动到另一个机器上,当机器select运行单元重新启动或由于其他原因而无法访问群集。 想象一下当你有一个运行一个Docker容器的单元时,它可以访问特定目录(通过一个Docker卷),而这个容器只存在于特定的机器上。 如果运行这个容器的单元移动到另一台机器会发生什么? 我想单位将失败,因为应该被安装为Docker卷的目录不存在于新机器上。 这是否真的发生? 我怎么能绕过这个问题呢? 一般来说,在自动迁移容器的情况下,如何坚持docker集装箱使用的工作数据?

在Shell脚本中获得systemd服务文件中的命令返回

我有一个CoreOS集群,我有一个只运行Docker容器的SystemD服务。 然而,为了灵活性的目的,我想要的Dockerregistry的容器从服务启动时被发现被发现,我很容易使用Etcd(从CoreOS项目的节点发现系统)。 所以,我试着在普通的terminal,只是给了我这样一个命令/usr/bin/etcdctl get /services/registry来获取/usr/bin/etcdctl get /services/registry的当前IP地址。 它的工作原理! 但是从SystemD服务来说,命令是以键入的方式返回的,而不是像有人在使用反引号的Shell脚本中那样执行。 我尝试了反引号, $()和${}语法,但是命令仍然按原样返回。 如果有人有一个build议,我正在采取:)谢谢!

CoreOS的船队存储潜在的单元文件?

CoreOS单元文件实际上是系统单元文件。 当你提交一个单位文件到车队,它被存储在一些registry中。 当你启动单元文件时,车队将这个单元文件传送到机器上的一个/run/fleet/units目录中,这个单元被调度运行。 单元停止时,单元文件将从机器中移除。 问题是:机队在哪里存储提交的单元文件? 我认为那里只有etcd作为分布式数据存储。 但etcd ls检查不会显示存储单元文件中的任何内容。

CoreOS集群DNS设置

我不确定如何为一个coreos群集设置DNS。 目前,我拥有所有的hapixy负载均衡器背后的api实例和指向负载均衡器的(弹性)ip的DNS Alogging。 所以我可以发送stream量到api.myapp.com,它被路由到一个API实例。 这工作正常,但显然负载平衡器是一个单一的故障点。 如果我转而使用coreos设置集群,并且集群正在运行多个服务(而不仅仅是api服务),那么我如何将api.myapp.com指向集群,与我目前的方式相同,但要确保任何请求发送使用这个地址是以某种方式路由到集群内的API服务? 从阅读关于coreos的许多教程,我不清楚这一点。

这个variables如何在systemd单元文件中转义工作?

我有一个相当简单的单元文件,用于在CoreOS上运行的服务器实例的发现sidekick服务。 单位文件如下所示: [Unit] Description=Discovery for frontend server (instance %i) BindsTo=frontend@%i.service After=frontend@%i.service [Service] EnvironmentFile=/etc/environment ExecStart=/usr/bin/bash -c ' \ while true; do \ export PORT=$(docker port frontend%i 80 | sed s/.*://); \ etcdctl set /services/frontend/%i "${COREOS_PRIVATE_IPV4}:$PORT" –ttl 60; \ sleep 45; \ done' ExecStop=/usr/bin/etcdctl rm /services/frontend/%i [X-Fleet] MachineOf=frontend@%i.service 这工作正常,但花了很多时间才能到达这个阶段,因为如果我将etcdctl行更改为: etcdctl set /services/frontend/%i "${COREOS_PRIVATE_IPV4}:${PORT}" –ttl 60; \ 然后它不起作用 […]