带有Vagrant的CoreOS Cluster无法正确启动/配置etcd

Mar*_*rco 3 coreos etcd kubernetes

我的最终目标是在3节点CoreOS集群上运行Kubernetes(如果有人有更好的建议,我会全力以赴:在这个阶段,我正在考虑CoreOS完全浪费我的时间).

我已经开始跟随CoreOS指南运行游民群(我甚至有在行动书CoreOs和,要么是没有太大的帮助) -我已经获得了新的discovery token和修改过的user-dataconfig.rb文件与那里描述:

#cloud-config

---
coreos:
  etcd2:
    discovery: https://discovery.etcd.io/7b9a3e994a14c2bf530ed88676e3fc97
Run Code Online (Sandbox Code Playgroud)

和:

$ cat config.rb
# Size of the CoreOS cluster created by Vagrant
$num_instances = 3
$update_channel = "stable"
Run Code Online (Sandbox Code Playgroud)

其余的都在原始coreos-vagrant存储库中.

首次启动时,似乎etcd不是作为服务启动的; 启动它systemctl似乎让它继续下去,但它没有发现它的同行:

core@core-01 ~ $ etcdctl member list
8e9e05c52164694d: name=4adff068c464446a8423e9b9f7c28711 peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true
Run Code Online (Sandbox Code Playgroud)

所有其他三个Vagrant虚拟机也是如此.

在我看来,要么修改user-data未被修改,要么以某种方式忽略发现标记.

我一直在谷歌搜索,但似乎没有出现.

我发现的主要困难是几乎所有围绕CoreOS/etcd的指令指向这些YAML文件,然后状态必须ct用来生成"真实"配置:但它们并没有真正显示如何在运行VM,或如何更改运行配置.

几个问题:

1)让三个虚拟机etcd启动并找到对方的"正确方法"是什么?阅读这里的指南真的没那么有用.

这三个虚拟机位于"仅限主机"网络上:

core@core-01 ~ $ ip address show
...
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:76:a6:cf brd ff:ff:ff:ff:ff:ff
    inet 172.17.8.101/16 brd 172.17.255.255 scope global eth1
Run Code Online (Sandbox Code Playgroud)

(另外两个是102103)

2)在3个VirtualBox虚拟机上运行Kubernetes集群是否有"更好"(对某些"更好"的定义)?

在我看来,CoreOS试图为了自己的利益而过于聪明:过去10年来我一直在使用各种类型的Linux +并且让etcd集群找到彼此的情况令人沮丧地难以实现.

我正在运行Ubuntu 17.10(好吧,一切顺利,很快就会是18.04 LTS)和Virtualbox 5.2.8.

提前致谢!

Nic*_*lay 6

不幸的是,您使用的文档目前已过时.现在ETCD version 3用作Kubernetes数据存储.它规定了Ignition(VirtualBox Provider(默认)):

使用VirtualBox提供程序进行Vagrant(默认)时,Ignition用于配置计算机.

1.安装vagrant-ignition插件(以防万一在使用coreos-vagrantrepo中的默认Vagrantfile时未自动安装此插件):

git clone https://github.com/coreos/vagrant-ignition
cd vagrant-ignition
gem build vagrant-ignition.gemspec
vagrant plugin install vagrant-ignition-0.0.3.gem
Run Code Online (Sandbox Code Playgroud)

2.安装ct.

3.克隆coreos-vagrant repo:

git clone https://github.com/coreos/coreos-vagrant
cd coreos-vagrant
Run Code Online (Sandbox Code Playgroud)

4.创建config.rb以启动三个CoreOS VM:

cp config.rb.sample config.rb
sed -i 's/$num_instances=1/$num_instances=3/g' config.rb
Run Code Online (Sandbox Code Playgroud)

5.获取etcd发现令牌并将其放入cl.conf:

discovery_token=$(curl -s https://discovery.etcd.io/new\?size\=3)
sed -i "s|https://discovery.etcd.io/<token>|$discovery_token|g" cl.conf
Run Code Online (Sandbox Code Playgroud)

6.使用config transpiler将Ignition配置写入config.ign:

ct --platform=vagrant-virtualbox < cl.conf > config.ign
Run Code Online (Sandbox Code Playgroud)

7.创建etcd集群:

vagrant up
Run Code Online (Sandbox Code Playgroud)

ETCD 集群准备好了:

core@core-01 ~ $ etcdctl member list
3655a3141d6f953b: name=core-01 peerURLs=http://172.17.8.101:2380 clientURLs=http://172.17.8.101:2379 isLeader=false
951a7a7a97c94116: name=core-02 peerURLs=http://172.17.8.102:2380 clientURLs=http://172.17.8.102:2379 isLeader=true
fd056871037fdb55: name=core-03 peerURLs=http://172.17.8.103:2380 clientURLs=http://172.17.8.103:2379 isLeader=false
Run Code Online (Sandbox Code Playgroud)