4

我正在尝试使用带有一些自定义 cloud-init 配置的 CoreOS 稳定 AMI 设置 EC2 实例,但遇到了一些问题。

#cloud-config
coreos:
  etcd:
    discovery: https://discovery.etcd.io/5996f1b49fd642c5d1bc2f62cbff2fba
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
write_files:
  - path: /etc/fleet/fleet.conf
    content: |
      public_ip="$private_ipv4"
      metadata="elastic_ip=true,public_ip=$public_ipv4"

上面的云配置工作正常,但是一旦我使用下面的云配置

#cloud-config
coreos:
  etcd:
    discovery: https://discovery.etcd.io/5996f1b49fd642c5d1bc2f62cbff2fba
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
users:
  - name: core
    coreos-ssh-import-github: oba11
write_files:
  - path: /etc/fleet/fleet.conf
    content: |
      public_ip="$private_ipv4"
      metadata="elastic_ip=true,public_ip=$public_ipv4"

或者

#cloud-config
coreos:
  etcd:
    discovery: https://discovery.etcd.io/5996f1b49fd642c5d1bc2f62cbff2fba
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
users:
  - name: oba11
    groups:
      - sudo
      - docker
    coreos-ssh-import-github: oba11
write_files:
  - path: /etc/fleet/fleet.conf
    content: |
      public_ip="$private_ipv4"
      metadata="elastic_ip=true,public_ip=$public_ipv4"

我无法使用我的 aws 密钥对或个人密钥作为“核心”用户再次 SSH 到 coreos 实例,并使用我的个人密钥创建用户“oba11”。我也尝试了 alpha AMI,但同样的问题。我不知道我是否做错了什么。

非常感谢您的帮助。

4

2 回答 2

1

您正在使用陈旧的 etcd 发现令牌 ID。

一旦您的集群节点使用了这个 id,令牌就会被标记为已使用,如果由于某种原因没有 etcd 节点向这个地址发送心跳,那么令牌就会变得无用。

如果您尝试使用相同的 etcd 发现 URI 启动新集群或单个节点,则引导过程将失败。

在您的情况下,EC2 节点将提供 ssh 服务,但不会使用该云配置正确配置它们。

您遇到的行为(连接但拒绝您的 PK)是预期的,如果您没有阅读https://coreos.com/docs/cluster-management/setup/cluster-discovery/上的文档,可能会导致头痛述明;

集群发现的另一个常见问题是尝试使用过时的发现 URL 启动新集群。如上所述,初始领导者选举记录在 URL 中,这表明新的 etcd 实例应该加入现有集群。

如果您提供过时的发现 URL,新机器将尝试连接到每个旧的对等地址,这将失败,因为它们不存在,并且引导过程将失败。

于 2015-02-12T16:00:45.977 回答
0

我已经成功启动了 3 个 CoreOS 机器集群,并且 ssh 没有任何问题。使用您的配置。检查您的安全组,也许这就是问题所在。我正在使用这个 AMI ami-00158768

#cloud-config
coreos:
  etcd:
    discovery: https://discovery.etcd.io/b0ac83415ff737c16670ce015a5d4eeb
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
users:
  - name: gxela
    groups:
      - sudo
      - docker
    coreos-ssh-import-github: gxela
write_files:
  - path: /etc/fleet/fleet.conf
    content: |
      public_ip="$private_ipv4"
      metadata="elastic_ip=true,public_ip=$public_ipv4"
于 2015-01-29T02:35:12.280 回答