我的最终目标是在 3 节点 CoreOS 集群上运行 Kubernetes(如果有人有更好的建议,我全神贯注:在这个阶段,我认为 CoreOS 完全是在浪费我的时间)。

我已经开始关注 CoreOS guide to run a Vagrant cluster(我什至有 CoreOs in Action book 并且这也没有太大帮助) - 我已经获得了一个新的 discovery token 并修改了 user-dataconfig.rb 文件,如下所述:

#cloud-config

---
coreos:
  etcd2:
    discovery: https://discovery.etcd.io/7b9a3e994a14c2bf530ed88676e3fc97

和:
$ cat config.rb
# Size of the CoreOS cluster created by Vagrant
$num_instances = 3
$update_channel = "stable"

其余的都与原始 coreos-vagrant 存储库中的一样。

刚启动的时候,好像etcd不是作为服务启动的;用 systemctl 启动它似乎让它继续运行,但它没有发现它的同行:
core@core-01 ~ $ etcdctl member list
8e9e05c52164694d: name=4adff068c464446a8423e9b9f7c28711 peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true

在所有其他三个 Vagrant VM 上也是如此。

在我看来,要么没有选择修改后的 user-data,要么以某种方式忽略了发现 token 。

我一直在谷歌搜索,但似乎没有任何结果。

我发现的主要困难是几乎所有关于 CoreOS/etcd 的指令都指向这些 YAML 文件,然后声明必须使用 ct 来生成“真实”配置:但他们并没有真正展示如何在正在运行的 VM,或如何更改正在运行的配置。

几个问题:

1)让三个虚拟机的 etcd 启动并找到彼此的“正确方法”是什么?
阅读 the guide here 真的没有那么有用。

这三个 VM 位于“仅主机”网络上:
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

(另外两个在 102103 上)

2) 是否有一种“更好”的方式(对于“更好”的某些定义)让 Kubernetes 集群在 3 个 VirtualBox 虚拟机上运行?

在我看来,CoreOS 正试图为了自己的利益而变得过于聪明:过去 10 年以上我一直在使用各种风格的 Linux,事实证明,让 etcd 集群找到彼此的难度令人沮丧。

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

提前致谢!

最佳答案

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



1. 安装 vagrant-ignition 插件(以防万一,如果使用 coreos-vagrant 存储库中的默认 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

2. 安装 ct

3. 克隆 coreos-vagrant 存储库:
git clone https://github.com/coreos/coreos-vagrant
cd coreos-vagrant

4. 创建 config.rb 以启动三个 CoreOS VM:
cp config.rb.sample config.rb
sed -i 's/$num_instances=1/$num_instances=3/g' config.rb

5. 获取 etcd 发现 token 并将其放入 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

6. 使用 config transpiler 将 Ignition 配置写入 config.ign :
ct --platform=vagrant-virtualbox < cl.conf > config.ign

7. 创建 etcd 集群:
vagrant up
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

关于kubernetes - 带有 Vagrant 的 CoreOS 集群无法正确启动/配置 etcd,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49605297/

10-16 05:36