使用 rkt 和自动化脚本在 coreos 上安装 kubernetes

installing kubernetes on coreos with rkt and automated script

我正在尝试使用 https://github.com/coreos/coreos-kubernetes/tree/master/multi-node/generic 上的脚本在我家里的真实(非虚拟)coreos 服务器上安装带有 rkt 的 kuberentes,我有一些问题。

  1. 我的 etcd2 使用的是 tls 密钥,我在脚本中看不到任何可以定义证书所在位置的地方。
  2. 我可以为 ADVERTISE_IPCONTROLLER_ENDPOINT 提供域而不是 IP 吗?
  3. 当我尝试手动安装 kubernetes 时,我需要启动 rkt 服务 api。它没有在文档中说明它在这里需要它,是否意味着如果我使用这些脚本就不需要它?或者它只是文档中缺少的东西?

谢谢!

更新

罗布,非常感谢您的回复。我对etcd2还不够清楚。我已经在我的 coreos 服务器上安装并正确配置了 etcd2 tls。所以我在 controller-install.sh 文件中配置了我的 etcd 服务器:

export ETCD_ENDPOINTS="https://coreos-2.tux-in.com:2379,https://coreos-3.tux-in.com:2379"

但是当我 运行 controller-install.sh 脚本时,它 returns 并重复以下输出:

Waiting for etcd...
Trying: https://coreos-2.tux-in.com:2379
Trying: https://coreos-3.tux-in.com:2379
Trying: https://coreos-2.tux-in.com:2379
Trying: https://coreos-3.tux-in.com:2379
...

所以我猜是因为我没有在控制器脚本中定义与 etcd 相关的 tls 证书,这就是它陷入困境的原因。

在我的 macbook pro 笔记本电脑上,我配置了以下别名:

alias myetcdctl="~/apps/etcd-v3.0.8-darwin-amd64/etcdctl --endpoint=https://coreos-2.tux-in.com:2379 --ca-file=/Users/ufk/Projects/coreos/tux-in/etcd/certs/certs-names/ca.pem --cert-file=/Users/ufk/Projects/coreos/tux-in/etcd/certs/certs-names/etcd1.pem --key-file=/Users/ufk/Projects/coreos/tux-in/etcd/certs/certs-names/etcd1-key.pem  --timeout=10s"

所以当我 运行 myetcdctl member list 我得到:

8832ce6a269a7dac: name=ccff826d5f564c67abf35467306f80a0 peerURLs=https://coreos-3.tux-in.com:2380 clientURLs=https://coreos-3.tux-in.com:2379 isLeader=true
a2c0ac9708ef90fc: name=dc38bc8f20e64940b260d3f7b260430d peerURLs=https://coreos-2.tux-in.com:2380 clientURLs=https://coreos-2.tux-in.com:2379 isLeader=false

所以我猜我真的没有问题。

有什么想法吗?

谢谢!

my etcd2 is using tls keys, I can't see anywhere in the script where I can define where the certificates are located.

这些脚本不会启动 etcd 服务器。您将需要手动设置一个,并且能够使用 TLS 和任意数量的节点。这在文档的当前形式中并不清楚,我将尝试通过 PR 来修复。

can I supply a domain instead of IP for ADVERTISE_IP and CONTROLLER_ENDPOINT ?

只有CONTROLLER_ENDPOINT是域名。

when I tried to install kubernetes manually I needed start the rkt service api. it doesn't state in the documents that it needed here, does it mean that I don't need it if I use these scripts? or is it just something that's missing in the documents?

这些脚本 include/start rkt API 服务。正如您在下面看到的,它还有一个 Restart 参数集 (source):

[Unit]
Before=kubelet.service

[Service]
ExecStart=/usr/bin/rkt api-service
Restart=always
RestartSec=10

[Install]
RequiredBy=kubelet.service