我的最终目标是在 3 节点 CoreOS 集群上运行 Kubernetes(如果有人有更好的建议,我全神贯注:在这个阶段,我认为 CoreOS 完全是在浪费我的时间)。
我已经开始关注 CoreOS guide to run a Vagrant cluster(我什至有 CoreOs in Action book 并且这也没有太大帮助) - 我已经获得了一个新的 discovery token
并修改了 user-data
和 config.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
(另外两个在
102
和 103
上)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/