1. 程式人生 > >部署kubernetes出現“etcd cluster is unavailable or misconfigured”錯誤

部署kubernetes出現“etcd cluster is unavailable or misconfigured”錯誤

問題

在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即可成功部署。