法兰绒和码头工人不启动

Posted

技术标签:

【中文标题】法兰绒和码头工人不启动【英文标题】:Flannel and docker don't start 【发布时间】:2016-03-30 02:57:49 【问题描述】:

我正在尝试使用guide 在 2 个节点 centos 7.1 上建立一个 kubernetes 集群。但是,当我尝试像这样在 minion 上启动服务时:

for SERVICES in kube-proxy kubelet docker flanneld; do
    systemctl restart $SERVICES
    systemctl enable $SERVICES
    systemctl status $SERVICES 
done

我收到以下错误:

-- Logs begin at Wed 2015-12-23 13:00:41 UTC, end at Wed 2015-12-23 16:03:54 UTC. --
Dec 23 16:03:47 sc-test2 systemd[1]: docker-storage-setup.service: main process exited, code=exited, status=1/FAILURE
Dec 23 16:03:47 sc-test2 systemd[1]: Failed to start Docker Storage Setup.
-- Subject: Unit docker-storage-setup.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker-storage-setup.service has failed.
-- 
-- The result is failed.
Dec 23 16:03:47 sc-test2 systemd[1]: Unit docker-storage-setup.service entered failed state.
Dec 23 16:03:48 sc-test2 flanneld[36477]: E1223 16:03:48.187350 36477 network.go:53] Failed to retrieve network config: 100: Key not found (/atomic.io)
Dec 23 16:03:49 sc-test2 flanneld[36477]: E1223 16:03:49.189860 36477 network.go:53] Failed to retrieve network config: 100: Key not found (/atomic.io)
Dec 23 16:03:50 sc-test2 flanneld[36477]: E1223 16:03:50.192894 36477 network.go:53] Failed to retrieve network config: 100: Key not found (/atomic.io)
Dec 23 16:03:51 sc-test2 flanneld[36477]: E1223 16:03:51.194940 36477 network.go:53] Failed to retrieve network config: 100: Key not found (/atomic.io)
Dec 23 16:03:52 sc-test2 flanneld[36477]: E1223 16:03:52.197222 36477 network.go:53] Failed to retrieve network config: 100: Key not found (/atomic.io)
Dec 23 16:03:53 sc-test2 flanneld[36477]: E1223 16:03:53.199248 36477 network.go:53] Failed to retrieve network config: 100: Key not found (/atomic.io)
Dec 23 16:03:54 sc-test2 flanneld[36477]: E1223 16:03:54.201160 36477 network.go:53] Failed to retrieve network config: 100: Key not found (/atomic.io)

我确定我在主服务器上设置了密钥: etcdctl mk /coreos.com/network/config '"Network":"172.17.0.0/16"'

到目前为止,安装似乎是使用 kubernetes 最难的部分:(

【问题讨论】:

如果您查看错误消息,它不是在/coreos.com 下查看;它似乎正在查看/atomic.ioKey not found (/atomic.io) True..这是从小兵# etcd config key. This is the configuration key that flannel queries # For address range assignment FLANNEL_ETCD_KEY="/atomic.io/network" 上的配置文件的摘录 我要在这里更改吗?我正在使用 centos.. 您可以在/etc/sysconfig/flanneld 中更改FLANNEL_ETCD_KEY 的值,也可以在etcd 中创建适当的路径。您确定您使用的是当前的 CentOS 原子映像吗?在我的环境中(CentOS 7 atomic;rpm-ostree status 表示 7.20151118),FLANNEL_ETCD_KEY 已经设置为 "/coreos.com/network" 我没有 rpm-ostree 状态命令..我的文件现在看起来像 # Flanneld configuration options # etcd url location. Point this to the server where etcd runs FLANNEL_ETCD="http://x.x.x.x:2379" # etcd config key. This is the configuration key that flannel queries # For address range assignment FLANNEL_ETCD_KEY="/coreos.com/network" # Any additional options that you want to pass #FLANNEL_OPTIONS="" 但是 flannel 仍然失败但出现不同的错误:` 无法检索网络配置:无效字符 'e ' 在***值之后` 【参考方案1】:

今天是圣诞节,但我花了一整天的时间试图让它发挥作用:) 这就是我所做的:

#1 法兰绒

如前所述,我会在 master 上设置 flannel etcd 键:

etcdctl mk /coreos.com/network/config '"Network":"172.17.0.0/16"'

但我在尝试在 minion 上启动 flannel 时遇到此错误:

Failed to retrieve network config: 100: Key not found (/atomic.io)

所以我从以下位置编辑了 minion 上的 /etc/sysconfig/flanneld 文件:

# Flanneld configuration options  

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD="http://master:2379"

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_KEY="/coreos.com/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

to:

# Flanneld configuration options  

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD="http://master:2379"

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_KEY="/atomic.io/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

即更改了 FLANNEL_ETCD 键。

systemctl start flanneld 工作之后。

#2 码头工人

我没有找到一种方法让 kubernetes 作为依赖项安装的版本正常工作,所以我卸载了它并按照 Centos 的 docker 文档安装了 docker-engine 并为 systemctl 手动创建了一个 docker.service 文件。

cd /usr/lib/systemd/system

以及docker.service的内容:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket
Requires=flanneld.service
After=flanneld.service

[Service]
EnvironmentFile=/etc/sysconfig/flanneld
ExecStart=/usr/bin/docker daemon -H fd:// --bip=$FLANNEL_SUBNET
Restart=on-failure
RestartSec=5


[Install]
WantedBy=multi-user.target

然后使用 systemctl 启动和启用守护进程并查询状态。

systemctl restart docker
systemctl enable docker
systemctl status docker

【讨论】:

我一直在做同样的事情。来自几个ninenes.com 的指令似乎依赖于更多的存储空间;我在虚拟盒子的centos客人中尝试这个,docker启动失败,因为docker-storage-setup失败,因为它无法创建一个逻辑卷来保存docker镜像。由于我使用的是虚拟盒子,所以我只是创建了更大的(12GB)centos 客户机,这很有效。然后我被困在法兰绒问题上。看起来他们对 flanneld 配置的设置是错误的。您在此处的更改为我解决了问题。 不,说得太早了。 12GB 的虚拟机不够大。任何想法我应该做多大? 我认为存储不是问题,我可以通过卸载现有的 docker 包(通过 yum install docker 安装)并按照 docker 文档安装 docker-engine 来让 kubernetes 正常工作。然后用上面的替换服务文件值。 我确实发现将参数 --storage-opt="dm.blocksize=64k" 添加到 docker daemon 命令修复了它。来自github.com/docker/docker/issues/6325

以上是关于法兰绒和码头工人不启动的主要内容,如果未能解决你的问题,请参考以下文章

iptables 块码头工人

码头工人在 scaleway 上的暴发户

SonarQube 码头工人不断停止

码头工人和作曲家安装

text 码头工人和建造者

InfluxDB 和 Grafana:InfluxDB 错误:错误请求 |码头工人