Запуск CoreOS с помощью Vargrant

VirtualBox и Git должны быть установлены.

Vagrant и CoreOS

$ cd ~
$ git clone https://github.com/coreos/coreos-vagrant/

$ cd coreos-vagrant/

$ cp config.rb.sample config.rb
$ cp user-data.sample user-data


Вариант 1: Vagrant – a three-node cluster with dynamic discovery


$ vi config.rb

Разкомментировать и установить:

$num_instances=3

$update_channel='stable'



// Добавить ключ, чтобы ходить между нодами без ввода пароля
$ ssh-add ~/.vagrant.d/insecure_private_key


$ vagrant up


$ vagrant status
Current machine states:

core-01                   running (virtualbox)
core-02                   running (virtualbox)
core-03                   running (virtualbox)


$ vagrant ssh core-01


$ fleetctl list-machines
MACHINE		IP		METADATA
0346b6af...	172.17.8.102	-
393ec9fd...	172.17.8.101	-
ee7b2c90...	172.17.8.103	-


$ etcdctl member list
4c79cf8a1f776026: name=393ec9fdb68b439b8b090ac310ba9169 peerURLs=http://172.17.8.101:2380 clientURLs=http://172.17.8.101:2379 isLeader=true
4c7cc319bf6f6f6d: name=0346b6af2aef4f66b240d881d1ebaf19 peerURLs=http://172.17.8.102:2380 clientURLs=http://172.17.8.102:2379 isLeader=false
7907f7d543d59f3e: name=ee7b2c90bcc443559de4306995e9be94 peerURLs=http://172.17.8.103:2380 clientURLs=http://172.17.8.103:2379 isLeader=false


Вариант 2: Vagrant – a three-node cluster with static discovery

$ cd ~
$ mkdir coreos
$ cd coreos

$ git clone https://github.com/coreos/coreos-vagrant/ node1


$ cd ../

$ cp -r  node1/ node2
$ cp -r  node1/ node3

В файлах vagrant заменил название core и ip адрес.

config.vm.hostname = "core-01"
ip = "172.17.8.#{i+100}"


$ vi node1/user-data


#cloud-config

coreos:
  etcd2:
    name: core-01
    initial-advertise-peer-urls: http://172.17.8.101:2380
    listen-peer-urls: http://172.17.8.101:2380
    listen-client-urls: http://172.17.8.101:2379,http://127.0.0.1:2379
    advertise-client-urls: http://172.17.8.101:2379
    initial-cluster-token: etcd-cluster-1
    initial-cluster: core-01=http://172.17.8.101:2380,core-02=http://172.17.8.102:2380,core-03=http://172.17.8.103:2380
    initial-cluster-state: new
  fleet:
    public-ip: $public_ipv4
  flannel:
    interface: $public_ipv4
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start    


$ vi node2/user-data


#cloud-config

coreos:
  etcd2:
    name: core-02
    initial-advertise-peer-urls: http://172.17.8.102:2380
    listen-peer-urls: http://172.17.8.102:2380
    listen-client-urls: http://172.17.8.102:2379,http://127.0.0.1:2379
    advertise-client-urls: http://172.17.8.102:2379
    initial-cluster-token: etcd-cluster-1
    initial-cluster: core-01=http://172.17.8.101:2380,core-02=http://172.17.8.102:2380,core-03=http://172.17.8.103:2380
    initial-cluster-state: new
  fleet:
    public-ip: $public_ipv4
  flannel:
    interface: $public_ipv4
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start


  $ vi node3/user-data


#cloud-config

coreos:
  etcd2:
    name: core-03
    initial-advertise-peer-urls: http://172.17.8.103:2380
    listen-peer-urls: http://172.17.8.103:2380
    listen-client-urls: http://172.17.8.103:2379,http://127.0.0.1:2379
    advertise-client-urls: http://172.17.8.103:2379
    initial-cluster-token: etcd-cluster-1
    initial-cluster: core-01=http://172.17.8.101:2380,core-02=http://172.17.8.102:2380,core-03=http://172.17.8.103:2380
    initial-cluster-state: new
  fleet:
    public-ip: $public_ipv4
  flannel:
    interface: $public_ipv4
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start


// на всех нодах
$ vagrant up


$ etcdctl member list
5252f86ede0659f1: name=core-02 peerURLs=http://172.17.8.102:2380 clientURLs=http://172.17.8.102:2379 isLeader=false
82a769c1959a906c: name=core-01 peerURLs=http://172.17.8.101:2380 clientURLs=http://172.17.8.101:2379 isLeader=true
919890b32e9e6285: name=core-03 peerURLs=http://172.17.8.103:2380 clientURLs=http://172.17.8.103:2379 isLeader=false


$ fleetctl list-machines
MACHINE		IP		METADATA
072e8f27...	172.17.8.101	-
4be20dc0...	172.17.8.102	-
c4e78c9f...	172.17.8.103	-


Вариант 3: Vagrant – a production cluster with three master nodes and three worker nodes

Дискавери ключик должен быть одним и тем же на master и workers.

$ cd ~
$ mkdir coreos
$ cd coreos

$ git clone https://github.com/coreos/coreos-vagrant/ master
$ cp -r master/ worker


$ curl -w "\n" 'https://discovery.etcd.io/new?size=3'
https://discovery.etcd.io/eba44f8d77f0c96e42d8cea0c23d0ba5

master

$ vi master/user-data


#cloud-config

coreos:
  etcd2:
    discovery: https://discovery.etcd.io/a789492a48d3b72ade3e9fab20443664
    advertise-client-urls: http://$public_ipv4:2379
    initial-advertise-peer-urls: http://$private_ipv4:2380
    # listen on both the official ports and the legacy ports
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen-peer-urls: http://$private_ipv4:2380,http://$private_ipv4:7001
  fleet:
     metadata: "role=master"
     public-ip: $public_ipv4
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start

worker


$ vi worker/user-data


#cloud-config

coreos:
  etcd2:
    proxy: on
    # use the same discovery token as for master, these nodes will proxy to master
    discovery: https://discovery.etcd.io/a789492a48d3b72ade3e9fab20443664
    # listen on both the official ports and the legacy ports
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
  fleet:
    metadata: "role=worker"
    etcd_servers: "http://localhost:2379"
    public-ip: $public_ipv4
  locksmith:
    endpoint: "http://localhost:2379"
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start


$ vi master/Vagrantfile


$num_instances = 3
$instance_name_prefix = "core-master"
$update_channel = "stable"
ip = "172.17.8.#{i+102}"


$ vi worker/Vagrantfile


$num_instances = 3
$instance_name_prefix = "core-worker"
$update_channel = "stable"
ip = "172.17.8.#{i+105}"


$ vagrant up


$ vagrant ssh core-master-01


$ fleetctl list-machines
MACHINE		IP		METADATA
113bdafd...	172.17.8.104	role=master
3850b7c7...	172.17.8.106	role=worker
6acbbc25...	172.17.8.105	role=master
7fd2c16c...	172.17.8.103	role=master
b5d971b8...	172.17.8.108	role=worker
ee3e2e1b...	172.17.8.107	role=worker


$ etcdctl member list
2adae0d9255f7305: name=113bdafda32c4224a9d6fbaafebafc70 peerURLs=http://172.17.8.104:2380 clientURLs=http://172.17.8.104:2379 isLeader=false
77c7ff313654f14f: name=6acbbc25e6ca43a7951c2fd6142e690d peerURLs=http://172.17.8.105:2380 clientURLs=http://172.17.8.105:2379 isLeader=false
db29d548a2d79d27: name=7fd2c16c8c1d4801a61e5e5bf5729031 peerURLs=http://172.17.8.103:2380 clientURLs=http://172.17.8.103:2379 isLeader=true


$ vagrant ssh core-worker-01


$ fleetctl list-machines
MACHINE		IP		METADATA
113bdafd...	172.17.8.104	role=master
3850b7c7...	172.17.8.106	role=worker
6acbbc25...	172.17.8.105	role=master
7fd2c16c...	172.17.8.103	role=master
b5d971b8...	172.17.8.108	role=worker
ee3e2e1b...	172.17.8.107	role=worker


$ etcdctl member list
2adae0d9255f7305: name=113bdafda32c4224a9d6fbaafebafc70 peerURLs=http://172.17.8.104:2380 clientURLs=http://172.17.8.104:2379 isLeader=false
77c7ff313654f14f: name=6acbbc25e6ca43a7951c2fd6142e690d peerURLs=http://172.17.8.105:2380 clientURLs=http://172.17.8.105:2379 isLeader=false
db29d548a2d79d27: name=7fd2c16c8c1d4801a61e5e5bf5729031 peerURLs=http://172.17.8.103:2380 clientURLs=http://172.17.8.103:2379 isLeader=true