版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/wangtaoking1/article/details/51554932
问题
在OpenStack平台的虚拟机上使用Kubernetes搭建一个容器集群,一个Master节点(10.0.0.3/172.18.228.32),两个Node节点(10.0.0.4/172.18.228.33和10.0.0.5/172.18.228.34)。这里直接使用官方的脚本在Ubuntu 14.04.1 server裸机上进行搭建。配置文件config-default.sh如下:
export nodes=${nodes:-"[email protected] [email protected] [email protected]"}
role=${roles:-"a i i"}
export NUM_NODES=${NUM_NODES:-2}
export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-192.168.3.0/24}
export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16}
使用kube-up.sh进行部署,出现了如下错误:
Error: client: etcd cluster is unavailable or misconfigured
error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused
解决方案
一开始以为是Etcd进程的问题,以为不兼容就各种切换版本,而且修改utils.sh中etcd的启动配置,始终不能解决问题。
经过多次调试(这里就不说详细过程误导大家了,总之一把鼻滴一把泪),总算找出了问题。这里在部署的时候配置文件使用的是每个节点的floating IP,floating IP相当于OpenStack平台为每一个虚拟机分配的一个外部IP,这个IP并不是实际配置在虚拟机的网卡上的,而是通过OpenStack平台中的Iptables实现。我们这里使用floating IP进行部署,导致Etcd进程在进行同步的时候出现连接不上的问题,以致部署失败。
我们将配置文件改为使用实际配置在虚拟机网卡上的内部IP,如下:
export nodes=${nodes:-"[email protected] [email protected] [email protected]"}
role=${roles:-"a i i"}
export NUM_NODES=${NUM_NODES:-2}
export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-192.168.3.0/24}
export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16}
此时再使用kube-up.sh即可成功部署。