【问题标题】:Where should I keep service files for a CoreOS cluster, and how should I load them?我应该在哪里保存 CoreOS 集群的服务文件,我应该如何加载它们?
【发布时间】:2015-06-21 04:04:30
【问题描述】:

我想在负载均衡器后面部署一个 CouchDB 服务器集群,并让服务执行神奇的 etcd 发现。在完成CoreOS quickstart 之后,我不知道如何在自己的项目中实际使用我刚刚学到的东西,我不知道哪个更深入的教程能让我继续前进。

在演示中,我在一个正在运行的实例中编写了一个服务文件,然后使用fleetctl 来启动它。我想做的是在我的项目中将该服务文件置于版本控制之下,例如 Dockerfile。如何让 CoreOS 集群使用外部服务文件进行初始化?

我正在使用 Vagrant 进行本地开发,但我会尽快部署到 AWS。

【问题讨论】:

    标签: deployment docker coreos fleet


    【解决方案1】:

    我在 aws 上快速搜索了 coreos,第一个链接是亚马逊产品。他们有很好的文档说明如何做到这一点。从高层次来看,您需要使用 cloud-config 文件。当您启动您的 coreos(即实例化 ec2 映像)时,您可以在 user_data.xml 中传递一个文本文件。该文本文件允许您做几件事,主要是编写文件,然后定义单位。单位是您的服务。当您“启动”您的 ec2 实例时,cloud-config 文件中的任何内容都会自动启动。

    或者,您可以使用 cloud_config 中的“write_files”指令来创建每个单独的服务。例如,我的云配置有:

    write_files:
      - path: /etc/systemd/system/skydns.service
        permissions: 0644
        owner: core:core
        content: |
          [Unit]
          Description=SkyDNS service discovery
          After=flanneld.service docker.service etcd.service
          Requires=flanneld.service docker.service etcd.service
    
          [Service]
          Restart=always
          ExecStartPre=-/usr/bin/env docker kill skydns
          ExecStartPre=-/usr/bin/env docker rm skydns
          ExecStartPre=/usr/bin/env docker pull tacodata/skydns-coreos
          ExecStart=/usr/bin/env bash -c '/usr/bin/docker run --name skydns -p 53:53/udp test/skydns-nameservers 8.8.8.8:53 -domain local
          ExecStop=-/usr/bin/docker stop skydns
      [Install]
      WantedBy = multi-user.target
    

    systemd init 有一些学习曲线。我也不知道 cloud-config 文件如何与 vagrant 环境一起使用。许多平台都使用云配置,因此,这是一个很好的开始。

    -g

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多