找回密码
 注册
查看: 5045|回复: 0

etcd安装和所遇到的坑

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-9-1 08:35:45 | 显示全部楼层 |阅读模式
由于刚开始学习k8s,本次软件的安装,我们都采用最简单的方式,能用yum 安装的尽量采用yum安装( g, y0 t; j7 W

' J( D: a! s- B- t  N% b8 h7 W& T1、ETCD安装
5 D& {. M& \( b9 u$ n3 s" gETCD官方文档:https://github.com/coreos/etcd/blob/master/Documentation/docs.md
' X  t% a6 y" B6 d; x# M; V  N) D; ~, @6 E$ C
1.1 检查ETCD版本
7 T3 f3 C8 L3 d6 w$ }7 |1 X  _[root@localhost ~]# yum list|grep etcd8 t; [/ b8 w5 y5 C! c  b8 Q9 i2 T
etcd.x86_64                                2.3.7-4.el7                 @extras  " ?0 W7 O9 h9 K
[root@localhost ~]# & }. A3 `. U- E( z; ?; T4 S; n
1.2 安装ETCD
( l4 G9 H; l9 L$ |5 f% I, c, ?yum install etcd; v: y% g6 d: B4 d2 y- R. @
1.3 修改ETCD配置
( C; k3 S: X1 G3 u" \$ S9 K6 O4 d安装好后,系统会自动生成etcd.service文件(路径为/usr/lib/systemd/system/),修改对应的配置
$ ^3 v0 [* |: @9 v/ }" u4 [0 h: h% `( B. a5 k' r8 F6 f, {
复制代码
" H/ ^0 H' I& |4 X. B7 M复制代码
0 P4 W0 W7 f$ _, r[Unit]) c. }7 U- E& W+ V$ e* J$ ?( h+ X
Description=Etcd Server0 Q' j+ E9 C$ B/ x. S2 V
After=network.target' A9 `4 u2 U' M% V$ U, V
After=network-online.target
0 k$ ~2 _* n" }' `Wants=network-online.target2 A  j% q+ k4 r3 f- k+ Z/ M6 r
4 y" q8 i  O1 n
[Service]; x% ^  f5 X+ \+ B
Type=notify, x3 m: a$ L2 r. O4 l2 I
WorkingDirectory=/var/lib/etcd/
; }, @+ S* I5 c% y6 c( TEnvironmentFile=-/etc/etcd/etcd.conf
  r+ C! I, Q$ @; I- oUser=etcd
$ W2 C  p: G" p; F# set GOMAXPROCS to number of processors8 b3 F3 Q7 n- \' Z
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \
5 g& }* L: e( C. G1 R: m--name=\"${ETCD_NAME}\" \
) A, a7 e% e/ L9 p& m% j--data-dir=\"${ETCD_DATA_DIR}\" \
4 V5 J( |  y4 C3 J; y0 a--listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" \
" O4 y1 J/ B+ q) a--advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" \
9 `6 c; w' ?8 j4 g3 v--initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" \
# @" T3 W$ N+ _5 e1 d# _7 Z  w7 Z--initial-cluster=\"${ETCD_INITIAL_CLUSTER}\"  \# J! F5 i, D3 l) h; O8 k0 Q
--initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\" \; ^3 H% G$ v/ [# }) M) j" J
--listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\"". ]* [- M/ C$ h% N8 ?
Restart=on-failure
+ C: h# U, n# d8 QLimitNOFILE=65536
' I2 r9 G) j3 P4 m" O
+ `8 t, h; D" G& z) T" X2 P[Install]
* R6 \7 J6 n. z# ]5 eWantedBy=multi-user.target
% [; W( }! o# [3 D- Q复制代码; o1 R5 m: j/ e: [8 c+ r
复制代码+ j. }' [/ s9 t, h% U

" {* i3 C1 m+ y- F0 w5 d$ y) v  E4 R, U
并配置其配置文件5 q8 X/ ~1 b6 ^% L: p/ x

6 ]+ }" K7 R3 G, ~复制代码
% O) a$ m4 y" H6 G复制代码- i* y: c7 X% \' o* L* g5 l: ~+ c/ u
ETCD_NAME=zwetcd_2: |& _* C3 Q4 u) F5 C# K  z- U" B
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://192.168.37.131:2380"
- r& U; g3 w% w- o4 ZETCD_LISTEN_CLIENT_URLS="http://192.168.37.131:2379,http://127.0.0.1:2379"
4 C3 C" V( W+ W5 `% D% ~#[cluster]" B/ t- A4 r6 F  Q8 g, `7 ]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.131:2380"
; O% _9 j7 a/ n; h+ f) b! B. ^' X# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://...". o9 j, ^4 U7 }% s; s
ETCD_INITIAL_CLUSTER="zwetcd_2=http://192.168.37.131:2380,zwetcd_1=http://192.168.37.130:2380"
. J& a' w: v8 v" a# FETCD_INITIAL_CLUSTER_STATE="new"/ {! C! L% T- a; u  E
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"0 @* Z/ i- Z7 U1 U
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.131:2379"8 F" ]) H9 @& a8 z: {
复制代码9 N/ ]: U) a* A/ T6 B0 U
复制代码2 d2 W* X7 n! H6 R" B( w
! |: X# B% p7 b1 R
0 y% P, W  {# E9 ~% }
如果使用firewalld作为防火墙,则需要开放端口:! b" v- @3 s) m5 i- L9 K+ D4 Y

% u, n* I; `1 D: \9 L1
: m, u( `+ O; D' n- W6 ?2
& b% V/ I0 Q' k  i1 e1 ^4 ?1 Y3! C$ V$ E( C/ n7 Q" j
4
3 C1 L9 b6 C# w# K$ M+ }firewall-cmd --zone=public --add-port=2379/tcp --permanent
. a5 v  b$ W3 `, ^2 w  ffirewall-cmd --zone=public --add-port=2380/tcp --permanent2 g  R+ C+ {. e
firewall-cmd --reload+ G$ G$ C( {% |
firewall-cmd --list-all- x* s2 T6 J+ r, }( X
  问题:
. }/ `) _, {; e/ W; c5 f+ f' t$ p" ?
1、本地连接报错% Y. W1 f7 _1 `, Z  w
  F  i! y3 _' x0 Z
[root@localhost system]# etcdctl ls /
# a3 a$ y  S" l9 C: T( E' r4 U( `Error: client: etcd cluster is unavailable or misconfigured
, Y, l/ _. ^: r% C4 U/ |7 `. Kerror #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused
- s: h; r- T; J, f- Kerror #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused6 C- Z: @/ Q) D
9 M2 |& D. x: ]& B
如果出现如上的错误,是因为ETCD_LISTEN_CLIENT_URLS参数没有配置http://127.0.0.1:2379而导致的,不过已经配置了具体的IP,还需要配置本地链路,这个就有点奇怪了。
! q1 W4 k, j5 A# G2 X% `2、Docker安装3 h8 Y2 a1 p& x& e+ R+ k3 x
2.1、检查docker版本
4 X3 @+ M; u# K  x2 i: r! qyum list |grep docker
  A0 _6 X! x8 b
/ i9 ]9 U+ P8 ~4 n
# Q9 x8 m% c4 L$ m[root@localhost ~]# yum list|grep docker, u7 @1 N1 k* a- c8 h# M5 _2 O
docker.x86_64                              1.10.3-46.el7.centos.14     @extras
: |! D/ Y7 K3 T0 a# g/ Vdocker-common.x86_64                       1.10.3-46.el7.centos.14     @extras
; A" o/ f( O! {* E, pdocker-selinux.x86_64                      1.10.3-46.el7.centos.14     @extras 2 F" A7 L# s3 X) e
cockpit-docker.x86_64                      0.114-2.el7.centos          extras  ) H; }% I! q5 A* `* Q& w* S7 v" J
docker-devel.x86_64                        1.3.2-4.el7.centos          extras  
' _: M% N! f* l1 a9 l& ]+ ]- kdocker-distribution.x86_64                 2.4.1-2.el7                 extras  $ @2 d# H6 E% J* ?3 e5 c
docker-forward-journald.x86_64             1.10.3-44.el7.centos        extras  
2 Y+ u" e; S9 H+ R2 ?" j2 Bdocker-latest.x86_64                       1.12.1-2.el7.centos         extras  
3 k% C, ^$ o' Q% L- h4 }docker-latest-logrotate.x86_64             1.12.1-2.el7.centos         extras  2 ]% I* G: }1 Z& ^4 v, N" I$ \
docker-latest-v1.10-migrator.x86_64        1.12.1-2.el7.centos         extras    T# b+ l) f! n. e! \( m8 O
docker-logrotate.x86_64                    1.10.3-46.el7.centos.14     extras  + u6 g0 U1 w, I2 u  g# J5 @
docker-lvm-plugin.x86_64                   1.10.3-46.el7.centos.14     extras  3 S; v1 X& k0 C
docker-novolume-plugin.x86_64              1.10.3-46.el7.centos.14     extras  ' F  Z, n' X* x; u, i0 R  a& ~
docker-python.x86_64                       1.4.0-115.el7               extras  
4 |  J; R; E$ M, W) y3 P+ Jdocker-registry.noarch                     0.6.8-8.el7                 extras  
: m$ G" \3 H8 T$ vdocker-registry.x86_64                     0.9.1-7.el7                 extras  
6 i) u, H0 Q& C, I* Ydocker-unit-test.x86_64                    1.10.3-46.el7.centos.14     extras  
& m* S7 G6 w7 H+ a9 w- @- tdocker-v1.10-migrator.x86_64               1.10.3-46.el7.centos.14     extras  4 ^( r" @5 \& L: D4 R
python-docker-py.noarch                    1.7.2-1.el7                 extras  
2 i. |- }3 \$ ?& s5 I0 D[root@localhost ~]#2 K. m* n* ?# I7 j9 A
2.2 安装docker: J* D$ D) v( \3 D4 P: v* {
1 yum install docker -y9 Y% F' r# U  l. o7 c
2.3 检查docker安装信息
/ H. |  T4 n- J5 l, z7 D复制代码
+ {( N& T) p( b复制代码
& f* Y8 c, C. u9 o* n& b[root@localhost ~]# docker version6 a5 \" F$ Z  t. L
Client:+ [1 L5 \" P& i) L0 X+ l  |
Version:         1.10.3# R- q0 g) Q# U0 _) o+ y
API version:     1.22
7 t7 u0 }& C  w! |) w9 F% v Package version: docker-common-1.10.3-46.el7.centos.14.x86_64
3 t$ W& b& [, Y. H# Q* x+ c$ C Go version:      go1.6.3
) h0 Q0 }. D; T; T& Z  d% r Git commit:      cb079f6-unsupported! b+ f- }* p& o' O( g3 i
Built:           Fri Sep 16 13:24:25 2016
, l. ?( H8 g/ u! x! ~$ B4 v OS/Arch:         linux/amd64
% ?% K$ ?0 y( ]5 j) H% j! WCannot connect to the Docker daemon. Is the docker daemon running on this host?1 D+ O# P4 S9 K
复制代码
! E  U. U' K8 G) K  \7 T2 f复制代码
/ ~. Q& n& ^3 R6 g! M 8 [( n5 q$ P8 y- i3 j
' c6 i2 d. M# e' H, r& J1 D
& |, S3 ^, Y# z  z  g: r: J

, o) D% {% Y  ]/ d" b3 flannel: a. ^' e) V" o  l% H
3.1 检查flannel版本# P) [3 F8 Q# ^6 g
[root@localhost etcd]# yum list |grep flannel/ ~( q( s8 a9 I3 h. e1 _
flannel.x86_64                             0.5.3-9.el7                 @extras  ) r0 J; i; c3 ]( g2 N# D

/ I+ `# V) _/ r+ Z* ^" o5 p* {. o( \  |, X, |* d
3.2 安装flannel6 ]2 o8 m' u! \, R
yum install flannel
4 I  \, v: l3 a8 X6 y9 V/ n3.3 修改service配置
6 Q0 x5 t8 F! ~+ ~6 K* @- Y查看flannel的配置文件(使用yum安装会自动生成此文件,如果下载的执行文件则需要手动生成,在使用systemctl命令执行service 的时候会用到),可以看到flannel的service配置如下:
3 g& T/ ?8 X$ c
! Z1 ~3 s2 U# q' j复制代码7 R' @  ~- t  k: ?
复制代码6 }1 F( p! D' e: J' l
[root@localhost etcd]# more /usr/lib/systemd/system/flanneld.service  P; F7 M' B+ z+ S, O( N, F" K
[Unit]
) l1 ^7 @* Z- _0 i2 xDescription=Flanneld overlay address etcd agent2 l9 v$ Q3 n2 S" Q' h8 Y
After=network.target
, O1 \. x# b% E/ [( g5 G* ?, Z  \; QAfter=network-online.target! r  a# M. y: C4 j/ T* A5 C
Wants=network-online.target
) b) _! {  ]; s1 i# I' dAfter=etcd.service# ]$ o% Q1 _1 J; L+ k2 \- B+ L
Before=docker.service
4 e5 L3 H; F( b1 h; O7 Y1 d5 u5 d: Z( P" D/ e
[Service]" z% [" D' J: U
Type=notify
. s" s4 J0 y0 ~8 LEnvironmentFile=/etc/sysconfig/flanneld! n* p# O" H: M% o0 ]! ~) i% u" L
EnvironmentFile=-/etc/sysconfig/docker-network
, s8 y8 s  z& o" n% N1 }ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS6 |; @+ ~9 x1 p( W4 \
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker! F/ O5 d% V' B( _, L5 c9 d- {6 I
Restart=on-failure+ W. K8 \  ]8 X3 [
& I: y2 s) I( l3 X) r7 Y
[Install]
7 B# M8 b( ?$ w3 E( JWantedBy=multi-user.target: v7 G0 }9 E+ M8 x! s
RequiredBy=docker.service
# j8 p/ i: J& k3 O* M5 J* r复制代码( E& x) R! c) d' Q% F9 a7 A2 z
复制代码) W$ Z* k1 W: m! T- C
其中所有的参数都配置在/etc/sysconfig/flanneld文件中,修改此文件,初始文件如下:# T& Z' W% S: r

, L/ B/ K- F1 `* [/ P, n复制代码# O9 J2 M. x' t- K. h9 a
复制代码
  S1 h8 X% ?  {8 y3 L# Flanneld configuration options  % j& P. E* F' D3 r5 G: o% F/ F
# B* m+ A6 f  b, t  ^
# etcd url location.  Point this to the server where etcd runs
) L- P0 N; Y) R, [FLANNEL_ETCD="http://127.0.0.1:2379"
- r2 Y2 p9 t; B* F# T4 s
! y- L* T& [2 O- J% B6 u& v! P# etcd config key.  This is the configuration key that flannel queries7 d  ^+ @5 N1 s$ n
# For address range assignment
- x2 L( t3 t! }7 BFLANNEL_ETCD_KEY="/atomic.io/network"
' U5 r( ^- c  a7 ?
+ M+ f9 ]# R1 }7 g( `# j# Any additional options that you want to pass+ [' [/ L( L* Y3 y* v) q0 @
FLANNEL_OPTIONS=""
4 B. o; b0 @0 w1 z- `  C1 [: s复制代码5 F$ J1 A3 H5 A4 B, F6 ?7 P5 c
复制代码
; ~, e6 w2 _# s/ X其中
" M' B, T0 X* v# u& v: m  z) e3 p* p6 O
  FLANNEL_ETCD:为ETCD的地址,
' R9 S+ i) _+ Q+ c, W
3 o4 S0 N  J( ]+ c' B5 y' M8 m  FLANNEL_ETCD_KEY:为在etcd中配置的网络参数的key 
& N/ I) R) i& F" J  S& s3 ~
  V- U: R/ |& @: m* U  FLANNEL_OPTIONS:为flannel的启动参数,我在这里加上了监听的网卡4 W' S' M4 r2 Q4 ^) D/ L! @

- c2 v4 W: A& V根据前面步骤中etcd的配置,我们修改配置文件如下:
- N4 Z+ H; i" k' a
) M& A+ }" d  p: i$ P复制代码( X. T4 s! C  Z; K1 O% v$ D" K# L& Q
复制代码* b( y+ i2 B' d" ?& {
# Flanneld configuration options  , G9 x* H- |2 c; y& l8 i

5 `! `. x4 ^- x3 Q# etcd url location.  Point this to the server where etcd runs0 l4 B+ p$ }* A3 a' E" s. |
FLANNEL_ETCD="http://192.168.37.130:2379"& m& Z, T1 F1 I
( {4 y$ F' ]: W' ^, W/ `- c
# etcd config key.  This is the configuration key that flannel queries
; Y4 E' P; j! B0 g' _- Q# For address range assignment& u! N" {7 t% W6 c3 N
FLANNEL_ETCD_KEY="/flannel/network"
- D  `- O4 e5 I+ f  U& t4 K1 X# E) R. C- Q) {/ t3 I
# Any additional options that you want to pass2 H1 r( l3 P3 j: r" T1 C
FLANNEL_OPTIONS="--iface=eno16777736"
8 T5 y6 M+ \; m& y( l- W$ @0 |复制代码  y& x$ V2 S. w
复制代码
( m1 B- b% S, T# Z- `, o( v3.4 启动FLANNEL0 R, T& T" L  g$ n% Z
可以使用service flanneld start 或者systemctl start flannel启动flannel: p& k& \# A, z% l% e

; |) |) O! R+ I; @
5 E* o& B- o7 u* L  f# @  T0 C. [$ c% \- t3 C
3.5 修改docker网络7 ^# M+ ?+ l3 S% _
因为docker需要使用flanneld的网络,因此需要修改docker的service文件:
- C# J! g+ k! X/ b: o, Y" l
6 U) u. T% L& ~. x2 w& Z' [复制代码
0 h. X0 c/ p9 c$ Z0 c2 P复制代码2 N) `: E  H# E6 G# y* ]1 p" u- A
[Unit]6 P7 w8 f7 h+ o! U
Description=Docker Application Container Engine" T# T6 j! W2 U6 X  a2 V
Documentation=http://docs.docker.com% M  v9 \7 w; Q8 ^* P
After=network.target rhel-push-plugin.socket
: v+ i; ?- Q( H) r8 bWants=docker-storage-setup.service
* ]. c9 S6 ^/ G: i
7 P$ p1 V" E9 F1 @" \[Service]& I% d: U6 R# V5 T# |
Type=notify2 L7 ]5 \: f1 {4 N0 D) g3 K: F
NotifyAccess=all# S4 S4 ]5 a* S3 m3 F& N
#import flannel configuration
9 b% g' M$ v7 F$ BEnvironmentFile=-/etc/sysconfig/flanneld
* }* l' x) J2 @. C/ v) v! [EnvironmentFile=-/run/flannel/subnet.env
$ u* H: t% P7 v; q+ Q( fEnvironmentFile=-/etc/sysconfig/docker, ~9 T* X$ d% g1 Q4 s
EnvironmentFile=-/etc/sysconfig/docker-storage
, W8 E+ R! O  G3 V* ?+ y* a% DEnvironmentFile=-/etc/sysconfig/docker-network
  S$ |3 c! f$ ~1 b! iEnvironment=GOTRACEBACK=crash
' t, b: Z3 z5 p4 zExecStart=/usr/bin/docker-current daemon \* J) e! ?5 @7 a" m2 g% N2 h
          --exec-opt native.cgroupdriver=systemd \
: ^" f, [* V9 s, {* s+ [9 W          $OPTIONS \1 }( u& V: W: S" o7 W
          $DOCKER_STORAGE_OPTIONS \, E- d7 U" \, k& b7 l$ Y
          $DOCKER_NETWORK_OPTIONS \
9 C& j' z: k5 l( n! V6 v' V          $ADD_REGISTRY \5 t% y# n4 Y9 O- B+ t
          $BLOCK_REGISTRY \* `9 }- n. B7 u- P% m# t
          $INSECURE_REGISTRY \$ g) s1 n# s0 ]) e- U
          --bip=${FLANNEL_SUBNET}
8 G6 L& \# m' c- _LimitNOFILE=1048576  D2 u7 {3 G4 S7 e
LimitNPROC=1048576
8 w; J- z6 y3 H  E3 @. WLimitCORE=infinity+ ?4 M0 S2 N( g
TimeoutStartSec=0/ e2 q; f0 I* c: |9 v
MountFlags=slave3 {7 M1 A7 r) n/ e
Restart=on-abnormal
" N/ K( m1 m/ U, O( e6 w+ F1 Z# M# H$ D* C
[Install]
0 ^# d% m8 p- n. D3 G# Q7 i1 SWantedBy=multi-user.target
. q% K8 c% H# J: Y5 T/ T  P复制代码4 G/ F, c6 f" H: f! e4 H3 A  N* n
复制代码
! Y( N# S: p0 Q# I在执行前增加配置文件
0 Y" X/ z! k; [; A2 F- `, [
8 u+ R/ ?; x3 C; Y( M3 |# VEnvironmentFile=-/etc/sysconfig/flanneld2 b- p7 M0 A1 l' w" \
. D; k/ G3 W- E- U7 k6 F  x; Q
EnvironmentFile=-/run/flannel/subnet.env
! O, M7 r( K7 b- _+ j% g* Q0 I' X2 S( R4 T' m  n6 A
执行命令增加参数 --bip=${FLANNEL_SUBNET}
( @; T" g* E! Y+ S/ `- O8 P- A; h3 M2 g# g- ^  \& X/ H' B5 _+ e- M, a. z
重启docker
0 C  a; E+ s4 W) ]) c* a+ P) S; u2 [4 _+ Y7 U1 y
systemctl daemon-reload/ k3 ~+ h) ]! U6 @! Q: j
systemctl restart docker
8 t" j& j: i  ~* E+ g4 E/ O
: K8 s9 s% O  y+ L6 W
& b' O0 d& L! @/ S3.6 问题
5 S8 D: j5 k% g! k- w1、Failed to retrieve network config: 104: Not a directory (/flannel/network/config)
2 _! g. ]" P0 x2 V' M# b  Z4 g" y# V) _$ T1 |' [; h3 _/ V" A1 [
问题原因:在初次配置的时候,把flannel的配置文件中的etcd-prefix-key配置成了/flannel/network/config,实际上应该是/flannel/network$ l# P( }! T- ^3 ^, \; T
) W8 W( D5 H5 {  `
4 t, A7 @5 Z5 _* |7 z! F8 N
2 r: H: }" w0 {4 P( P$ h8 ~
注意:如上配置需要在集群的所有机器上执行,完成后,上述安装的各个系统的启动顺序应该是:8 o# d; m1 P2 y- @7 m. D- O
systemctl start etcd7 H" G* a4 m8 r, J' a

: {8 u  V5 |5 C% @/ Usystemctl start flannel
& h: `) Y' B, u7 x/ ]0 u+ M& p2 G4 [
systemctl start docker/ }" E( Y4 C3 `% c+ {; Y9 W; H
( m8 r( N; p4 Y4 |' a' u
配置完检查:
) @, n- L' Y5 |" P使用ip a检查当前的网络的准备情况:
& F0 D7 Z7 P0 T. b" z) ^9 w
0 T! O9 A( K, W3 P$ E! l) d复制代码- |, ~2 Y& ^) C6 {0 l
复制代码
) c" g! \9 _9 S5 v2 U5 r' J[root@localhost system]# ip a% d& K1 d% d8 v; W
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
, h' W5 j& K) l6 |9 |    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
7 N  V% f' w( J$ J! y1 U& e    inet 127.0.0.1/8 scope host lo
8 S& X: z. [. s; t3 W+ f       valid_lft forever preferred_lft forever0 v0 r  [( r8 C
    inet6 ::1/128 scope host ) G4 L6 I: Z2 A9 V! z
       valid_lft forever preferred_lft forever
% C' }5 N2 E- B9 N2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000! ?! z6 X8 H+ v1 b- O
    link/ether 00:0c:29:79:cf:e3 brd ff:ff:ff:ff:ff:ff0 u9 P5 J! w8 b/ l
    inet 192.168.37.130/24 brd 192.168.37.255 scope global dynamic eno16777736
0 W% O2 l7 Q2 H/ K& i: V       valid_lft 1554sec preferred_lft 1554sec
- a9 M0 b6 R- k& i    inet6 fe80::20c:29ff:fe79:cfe3/64 scope link
1 i3 O* Z9 Q! N- F; p5 U$ y5 q$ h       valid_lft forever preferred_lft forever- \% _: p3 [0 `( B# _
9: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
/ Z+ ]1 [4 C1 ~- l1 }# J    link/none ( ^  t8 F3 y" ?' G" W) K2 ^
    inet 172.17.75.0/16 scope global flannel0
" M" I* I- p; u- ?& u       valid_lft forever preferred_lft forever
! \( t' b4 e) v* S2 G10: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
7 t0 E* _) U1 ~: d, p( w! t9 _    link/ether 02:42:e3:f0:0d:05 brd ff:ff:ff:ff:ff:ff
6 D' m8 @) g1 X* g( K    inet 172.17.75.1/24 scope global docker0) [# `9 D0 a) s
       valid_lft forever preferred_lft forever
, m( C  A, L, }  A: W0 ?复制代码
8 G7 G1 v  f; g5 e/ x1 |: h复制代码
/ n. {) e" N5 I" ]0 c* c: N+ s如果看到到flannel0余docker0的网段相同,则网络配置成功。! z% y2 q( A6 ?+ {$ P" k3 z
- i7 C2 z+ Y" k. H

' P8 E* @5 U4 X" m/ H
0 x9 ]4 @& w* V! M: I% ]在第一次安装完3台机器集群后没有问题,后面过段时间后要加入一个新节点,就碰到很多坑了* T4 e& @( N5 G$ S5 X( j
) ?& n4 @9 B( m9 Q0 S: b
http://www.mamicode.com/info-detail-2194387.html 此文说到的3 o3 f( _7 j$ m) r4 X' Q9 {
$ x8 U# i* z* G
复制代码
" U% d" P+ P' @; |        systemd启动etcd服务的时候出现错误:Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory. }7 r+ N6 Y7 t; f+ z6 O! a- d$ c

6 M9 }0 C/ X) z3 T      解决办法:etcd.service服务配置文件中设置的工作目录WorkingDirectory=/var/lib/etcd/必须存在,否则会报以上错误( U' p$ y4 J* k9 L4 E' m

1 Z: l/ w; @) L. p  o' @7 _        systemd启动etcd服务的时候出现错误:cannot assign requested address- m9 G% s& S* S- h! a! v" L; V

- Q9 g5 Y; X" B6 R      解决办法:绑定阿里云的私网IP! d% y! X1 E$ q) {5 x
复制代码4 Z# B/ f4 T  L8 m
也有https://blog.csdn.net/u010087956/article/details/53670468; T* U- v% P% Q2 S, J5 p  s. ]
1 p! N* T5 O: t- z& p) z
复制代码
/ c9 ^: w4 K% x9 X通过systemd托管的etcd数据备份还原无法启动服务并且报错
& b# i! Z1 m1 e" Z6 @- w
" L' t1 {  ~. E1 |- h8 S9 \error listing data dir: /var/lib/etcd/default.etcd  p, P/ Q+ b$ q4 Y: `" n& b

4 ^$ h" V, E# o  d- H+ q/ B    1
7 D, c( c" c5 |" S  d
( D" E% {+ m: O: R9 R1 g& E2 F但是单独执行启动命令可以
$ Z2 I7 y2 \: M1 [  J; I7 @0 o+ A7 u; b
/usr/bin/etcd --debug  --name=default --data-dir=/var/lib/etcd/default.etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2380
& x, v# M7 i- t' K' U3 a  T6 U3 a# R% i# j5 x
    1
9 h, r5 }5 ^3 \( s9 k/ ^$ r9 E9 B, I6 q+ e8 K
主要是还原目录时没有注意权限问题,systemd默认是以etcd用户执行的,这里需要修改default.etcd文件夹权限0 ?2 m) n" g. _1 G8 O6 T

2 A8 _! p3 Z- Echown etcd:etcd -R /var/lib/etcd/default.etcd+ h" j1 y  b$ P8 K/ O
  x3 O% D6 K8 V* H3 p1 w7 r: `
    1( G- B, e# c! H2 t9 |( }, ^) x
5 F1 k3 x' Q% e& A( N
参考文档
: R: \# E! P- ?1 ?% y* h, S/ i! E2 M( K' K% E1 y
etcd can’t start due to status=1/FAILURE or status=200/CHDIR · Issue #3331 · coreos/etcd · GitHub 7 V$ d6 l) |) D
复制代码' A# b) |+ O' G, l. l/ M$ V

8 j3 W6 e* N) Z' W
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:02 , Processed in 0.019366 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表