|
|
由于刚开始学习k8s,本次软件的安装,我们都采用最简单的方式,能用yum 安装的尽量采用yum安装
* |: l6 ]% |! b
; c' K, s; `& e8 a. W$ x1、ETCD安装: H* | i6 M H% Q
ETCD官方文档:https://github.com/coreos/etcd/blob/master/Documentation/docs.md
a3 `, W! `4 d$ A5 p7 \
$ h1 L& Y) |+ |, F& F3 a$ F# U1.1 检查ETCD版本/ Y+ @% }0 n* l0 B+ b C: P% i# x/ ?; i
[root@localhost ~]# yum list|grep etcd y6 }8 [! ~; B! h% K" ~2 O4 P
etcd.x86_64 2.3.7-4.el7 @extras / E. x$ T, s9 P' E7 k9 i
[root@localhost ~]#
1 }+ R; Y5 F6 K5 T" n1.2 安装ETCD
8 S( Q9 g" Z) a: Q! H2 xyum install etcd! G6 K, Q- J6 f4 P# P
1.3 修改ETCD配置/ ~7 K w+ O/ R1 b! O, m4 y7 o+ j
安装好后,系统会自动生成etcd.service文件(路径为/usr/lib/systemd/system/),修改对应的配置
- L' R% ^7 n. @+ \3 X2 G! u( \! i O! x3 `& k* r
复制代码. x- ? o. S2 {/ |5 G7 a
复制代码
* i% i- E3 B' y[Unit]
# x$ b7 M- p; ~6 TDescription=Etcd Server! p3 g4 @4 l' ]0 N" b; I
After=network.target
' H$ m x3 T" m% I2 l* X( dAfter=network-online.target
' g4 T4 m9 `& W z* LWants=network-online.target
% @; O# f* a, M, ~- ~
. B1 M" V* Z+ p8 ][Service]
. q6 d+ v' J" I1 GType=notify
* ?' T8 e3 J/ L! A _WorkingDirectory=/var/lib/etcd/
- y) m: ?7 k- Y: {: t" N; REnvironmentFile=-/etc/etcd/etcd.conf( [5 x0 s! `4 o8 L! i, |
User=etcd
# m9 l" `- V# e, A: Z" Q* u) M% ?; b# set GOMAXPROCS to number of processors+ J3 a1 b, ^- H! `( o, V
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \
& T# o6 j) G" c" ^" f1 J--name=\"${ETCD_NAME}\" \
4 F: g# @) m4 |; a. ^--data-dir=\"${ETCD_DATA_DIR}\" \ a+ }7 o# r/ ]* ]4 r# Q
--listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" \+ d# c# }; J: ]& D! g( `! Q6 Z0 Y I
--advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" \
( ?0 R% @+ h3 Z0 \6 t2 U9 n--initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" \
5 t1 Y" }; g% U) {1 A9 K--initial-cluster=\"${ETCD_INITIAL_CLUSTER}\" \0 ^' k) k3 C: |5 U; z
--initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\" \
5 X/ X0 a: ]' L$ G: ^0 T ~2 p t--listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""
0 {" z3 Y# `* q$ J6 M1 XRestart=on-failure
) O* Q" y S4 m0 ]% vLimitNOFILE=65536
8 y# b( ^: h+ [/ l
3 ~( M; H) j7 ?' }; u( |[Install]$ Y, x, x# V( }$ L' H/ Q" J
WantedBy=multi-user.target
1 d5 P# V+ O( h6 e复制代码
9 M4 @. f3 e& F& }4 y复制代码
) U6 K; h) u6 j, B 5 y) S0 S% A6 M8 E/ K
8 P! t. p8 o7 }8 @+ H6 Y
并配置其配置文件% y5 V3 F! q8 S X3 G2 x% \ r
: f$ T! f% O3 w% [: O( E
复制代码
% _. C' r( y7 q2 g+ N ~复制代码& K+ ]9 ^) n; ?/ e8 s
ETCD_NAME=zwetcd_2 m$ z' O: j5 v: I
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://192.168.37.131:2380"
) j8 |& ~! }. N% |ETCD_LISTEN_CLIENT_URLS="http://192.168.37.131:2379,http://127.0.0.1:2379"
1 e1 w/ ?4 U' D, k#[cluster]8 e. P/ f* r) R9 l; }$ _
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.131:2380"+ Z1 J4 @: o' g0 ]
# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://...", d$ x# m" D( R9 O
ETCD_INITIAL_CLUSTER="zwetcd_2=http://192.168.37.131:2380,zwetcd_1=http://192.168.37.130:2380"
o9 M% @2 E8 ^+ O7 f* DETCD_INITIAL_CLUSTER_STATE="new"6 x7 R, o+ V; @
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"1 V. w" W. l% x) P5 h; t, `( Q) x! }
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.131:2379"
' E- f; a4 u7 D0 |7 p复制代码0 B" P: a$ `5 _ s5 B2 i
复制代码
2 @- b: R$ k6 o4 c- x% `9 E! } ) b* j4 ]6 W$ D M% i$ ~ I
- F% \' N& h J2 o8 C: u
如果使用firewalld作为防火墙,则需要开放端口:& P4 |# l6 g. k5 v; q
. P+ Y8 w: s! z/ a1 K4 \1
' b7 K- p1 g/ H2 T: o# [: a2
5 B) c K% H- R; C1 d! O& i3
9 }, `7 J' y8 i. W' E- o$ r$ Z4
1 R( }: J8 P; lfirewall-cmd --zone=public --add-port=2379/tcp --permanent
9 Y4 B1 W% R1 `( z9 k: rfirewall-cmd --zone=public --add-port=2380/tcp --permanent' B! a* E! F6 n/ A! H! [ M0 k
firewall-cmd --reload: P3 f& V) g8 w y( d* M
firewall-cmd --list-all, [- o7 Y0 N \5 L3 e. Z2 v0 y% c
问题:
. [! l# A8 l8 ^2 }: @8 R. M/ y8 K/ C M( w
1、本地连接报错
h) H6 _7 f# y& `: H- @1 N! u8 }8 I1 o5 a* D. Y6 k0 Q
[root@localhost system]# etcdctl ls /' n2 d8 a; B* X5 w' X- O$ t
Error: client: etcd cluster is unavailable or misconfigured$ n2 [( q) x: H* \& r* @+ E1 E4 t
error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused. _# _5 ]( }6 V. d+ G
error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused
+ Q+ Q3 z( A3 {" w8 C9 a4 \1 ]1 b: k4 K7 Q
如果出现如上的错误,是因为ETCD_LISTEN_CLIENT_URLS参数没有配置http://127.0.0.1:2379而导致的,不过已经配置了具体的IP,还需要配置本地链路,这个就有点奇怪了。' u& w0 Z" v1 R5 G) d0 G0 }
2、Docker安装
$ o8 a' b& o: j* i2.1、检查docker版本
7 g: `7 f9 z0 m |" A& eyum list |grep docker+ M/ \& G ?! l( L1 F2 L
5 y; N% L+ w2 Y' S, Y
. l8 y2 ] m0 `( P: n. Y8 N[root@localhost ~]# yum list|grep docker4 `5 P3 H% @ o, M
docker.x86_64 1.10.3-46.el7.centos.14 @extras
$ [6 M8 X- d: z; \6 Z- Adocker-common.x86_64 1.10.3-46.el7.centos.14 @extras & a3 }( E9 |9 o. `" Q
docker-selinux.x86_64 1.10.3-46.el7.centos.14 @extras
( n* p1 p% W R. Zcockpit-docker.x86_64 0.114-2.el7.centos extras ; H0 e- T- ~/ C' M4 F
docker-devel.x86_64 1.3.2-4.el7.centos extras
% ?4 Y, @0 _3 u! H, j# fdocker-distribution.x86_64 2.4.1-2.el7 extras
0 s6 X4 [. l+ `docker-forward-journald.x86_64 1.10.3-44.el7.centos extras
' m: p$ t, T0 Udocker-latest.x86_64 1.12.1-2.el7.centos extras
" d/ [* A2 v+ r! P9 z- w( v4 Edocker-latest-logrotate.x86_64 1.12.1-2.el7.centos extras
0 `: g* d& i$ F2 F" F+ n5 Jdocker-latest-v1.10-migrator.x86_64 1.12.1-2.el7.centos extras 4 x4 i2 L# [- E& G% G' V+ Z
docker-logrotate.x86_64 1.10.3-46.el7.centos.14 extras # P& m- w5 H7 }) U
docker-lvm-plugin.x86_64 1.10.3-46.el7.centos.14 extras
7 I/ _- X" X/ z" z9 w8 adocker-novolume-plugin.x86_64 1.10.3-46.el7.centos.14 extras - ^6 i* \( u0 |- ]: {$ M# I; x, ^" f
docker-python.x86_64 1.4.0-115.el7 extras
; o6 I ?' b: jdocker-registry.noarch 0.6.8-8.el7 extras
! h2 G1 d" n1 B. {: Q5 w1 xdocker-registry.x86_64 0.9.1-7.el7 extras
" g, r4 ?. Y3 M* }docker-unit-test.x86_64 1.10.3-46.el7.centos.14 extras
i# o4 L: P, q! ]6 q1 L7 \docker-v1.10-migrator.x86_64 1.10.3-46.el7.centos.14 extras ; n( Y! V [# Q3 Z D: ^) p
python-docker-py.noarch 1.7.2-1.el7 extras
' [ C* g- j/ c[root@localhost ~]#
3 O- P9 ~8 f3 t: Q2.2 安装docker- h+ D* ~: ^9 m3 a* `/ h# p
1 yum install docker -y
8 b; t5 |0 g0 h& e2.3 检查docker安装信息
$ [3 g4 t C2 G7 D* J$ H( ^复制代码" c9 A* [) W! H% U# q, x
复制代码6 S1 S) @. P& v! q% t1 q3 ^8 ?' i
[root@localhost ~]# docker version
b2 N6 c' n; A5 W; e) ?7 qClient:
, O$ v/ T B3 F Version: 1.10.3
% D+ C, c+ e" j& Y. Z2 D API version: 1.22! e* k5 |3 e: z# M- n' q7 ?
Package version: docker-common-1.10.3-46.el7.centos.14.x86_644 W2 ^! q3 f1 e
Go version: go1.6.3% x- R0 b, e" M# i1 ^: \
Git commit: cb079f6-unsupported6 q4 ]# T# n& ^5 e* h1 v
Built: Fri Sep 16 13:24:25 2016
' Y/ F# r {5 y/ O2 H r. f2 @ OS/Arch: linux/amd643 l2 S; o8 g i2 ~1 a# `' n
Cannot connect to the Docker daemon. Is the docker daemon running on this host?+ K* i% b6 c' y! ]) M# E
复制代码
$ m6 T" X. X4 ]9 I! v复制代码9 Q9 F8 F/ {, l* Z( g- T+ G+ [+ ] [) t
\7 [6 S+ |8 |1 A z& [
S7 L* k6 @1 l& i, ^+ k. W' G8 Z
) _+ l* X! T+ D- a8 _4 x) K7 \7 v
3 flannel
; a' a L3 z0 n* ?: C( L8 O* T3.1 检查flannel版本
/ S( c* e3 b ]& g) Z' c[root@localhost etcd]# yum list |grep flannel% G7 `& x9 G E
flannel.x86_64 0.5.3-9.el7 @extras
3 C5 Z- o0 O, J! ?$ R ! O9 v; R0 j8 z1 H" a6 c1 C
! R2 E6 l& ~; d- G3.2 安装flannel
1 v6 B- h6 ^& k7 M: d0 X' O* O- Wyum install flannel $ ?5 y! d$ U/ P, z
3.3 修改service配置
! F% l1 \2 u2 K; r% r6 u* t查看flannel的配置文件(使用yum安装会自动生成此文件,如果下载的执行文件则需要手动生成,在使用systemctl命令执行service 的时候会用到),可以看到flannel的service配置如下:
# I( V7 j( \# F$ }$ V4 ?
/ C/ E2 p' z2 `- v4 K J( n复制代码' r" r: K$ w+ b- }
复制代码
& ^$ V- x& l% o- e! H6 _[root@localhost etcd]# more /usr/lib/systemd/system/flanneld.service
- i3 y* `' `1 N: z" q[Unit], I1 p* d$ E$ m( M! t3 ]3 Z
Description=Flanneld overlay address etcd agent y# z8 u1 Y# a! L
After=network.target0 D5 H+ p2 \( B# ~' m+ ^
After=network-online.target4 j/ E4 L" R# G4 w
Wants=network-online.target
2 F* q+ ~1 k7 s/ ^; xAfter=etcd.service
! j2 [8 ~. j8 x+ x& zBefore=docker.service
; Y6 g. e" |* F* {, E6 }# v9 U l/ }
1 R( v+ W2 S! I[Service]
( O) d, ^$ C* j( e5 yType=notify
9 s: P- | @2 B* u- l9 P3 pEnvironmentFile=/etc/sysconfig/flanneld
. `' R- O; } ?9 k# ]EnvironmentFile=-/etc/sysconfig/docker-network$ g- m; E: ^1 P) G9 C3 Q! `
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS9 Q7 F2 f% D2 ]% ^+ B: P
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
{' x) h+ Y' Z! pRestart=on-failure) V& G! E! U# H k+ ?
6 K) ^& p- u; w- U+ y[Install]
* ^5 {9 v' V% }- N9 z8 }: z. _* C+ aWantedBy=multi-user.target6 ~5 t7 n" R; J4 M+ L
RequiredBy=docker.service) @ d+ _1 Q& m9 j6 `/ T# x
复制代码# i, t8 v, y& y& S
复制代码
1 a! z5 u# A5 p7 Z6 h5 Y# F$ P; K其中所有的参数都配置在/etc/sysconfig/flanneld文件中,修改此文件,初始文件如下:$ Y5 S/ N) u. C
; _. j3 G) W- G/ ]+ p$ f! J复制代码
. I: C' y1 j' F% M复制代码0 D3 O7 }5 ^( J- U8 v, H
# Flanneld configuration options & b6 v8 j- J+ Y2 ^" U
9 f) d: C8 d. h: v
# etcd url location. Point this to the server where etcd runs+ Q, U* A# j% o# u& y
FLANNEL_ETCD="http://127.0.0.1:2379"
; \2 q- w; y" x
$ `: z- |! r$ B% ~1 ]" ]/ k# etcd config key. This is the configuration key that flannel queries
5 S4 O9 G* l# W* f- q* O1 n$ [# For address range assignment
0 Y: A, y/ q ?' T9 i, m4 pFLANNEL_ETCD_KEY="/atomic.io/network"
- n9 \, |8 P; Z% |5 Q, f5 ^# `6 b# {# q/ j* L- D1 O( A9 V. M4 [
# Any additional options that you want to pass
# {# L8 r m! E XFLANNEL_OPTIONS=""- x {2 {! |+ f( t- T: k
复制代码- J* D) Z! ~6 S
复制代码) H# t+ v/ S# s2 l/ c4 L D$ K$ e
其中- `4 w( P/ }3 I# r
1 K4 O& N+ t K4 Q FLANNEL_ETCD:为ETCD的地址,
8 z. y; ?! j9 M% V \( X
4 C+ l1 s" [! L4 R4 g L FLANNEL_ETCD_KEY:为在etcd中配置的网络参数的key
9 c9 C& G2 Y/ e5 O% V4 O8 t+ [2 ^) w! M# b2 `
FLANNEL_OPTIONS:为flannel的启动参数,我在这里加上了监听的网卡
. Z& @- F# R9 x& W! S/ I# w& u8 E% L( |( ^- W* ?
根据前面步骤中etcd的配置,我们修改配置文件如下:
& m" i' \+ h1 ?" S
* A+ `7 {* b/ E8 V5 Y. Z3 A5 F复制代码
G; H( Q3 |( H* ]' K/ m5 C6 A% c复制代码
& B2 o! T' X' c3 I' m$ E$ n9 }# Flanneld configuration options
# y1 c q6 P% e2 N' w. s4 u5 K: v) b8 R& s+ z
# etcd url location. Point this to the server where etcd runs: e# D7 G4 O* x3 n
FLANNEL_ETCD="http://192.168.37.130:2379"
9 G1 A" F" X6 @! }# `
/ p* W8 f# ?! d# etcd config key. This is the configuration key that flannel queries t7 s% M* q+ h3 D+ c
# For address range assignment
; ?4 }- }0 S6 @- l' bFLANNEL_ETCD_KEY="/flannel/network"
5 x) b5 i9 G. T2 b: K. m( u# I
7 ^! |( y* k$ t# Any additional options that you want to pass- T) n3 t9 Z' s
FLANNEL_OPTIONS="--iface=eno16777736"$ U% h* J7 |+ M7 S& Q
复制代码* `8 \1 s" r- |* A( Q$ z9 m* s
复制代码- ~- I9 e$ C9 h( |
3.4 启动FLANNEL9 m, c+ c+ L2 I0 t8 R
可以使用service flanneld start 或者systemctl start flannel启动flannel! u: ?0 f4 H' ~* k2 k3 G& |2 e3 }
( q' _ r' H0 H: F
9 y u2 {. D9 I3 c4 k T. ]
; o; ?; V! E: L8 w6 }5 Y1 n3.5 修改docker网络( l* K1 ~3 |; ~! s( S
因为docker需要使用flanneld的网络,因此需要修改docker的service文件:
~8 p( x& u+ I4 ]% J# ?5 z
V# {3 S+ O9 x$ P* d+ W7 u0 W! u复制代码5 l$ F/ C# x4 g( Z) M3 f8 g0 |
复制代码
) ?) R4 J% b+ @ v[Unit]: A8 V- K7 x" {) u! C
Description=Docker Application Container Engine( H5 A, `4 a8 F, _, @/ [9 [
Documentation=http://docs.docker.com
# v* E5 X% w' L) {2 K* TAfter=network.target rhel-push-plugin.socket' \7 |: R% z; Q( o" |
Wants=docker-storage-setup.service
. M Z- W" w6 Q, H) a& }
7 D* Z, Y# `8 l* a[Service]
# `- D% y j. U7 KType=notify& d9 ?0 s) r# o$ |. R5 C
NotifyAccess=all
' ?% e$ R/ H( h#import flannel configuration : y8 \. _" D4 d, |4 Y( \/ e7 Q
EnvironmentFile=-/etc/sysconfig/flanneld" U* k: X9 U0 B" v4 K: i. L
EnvironmentFile=-/run/flannel/subnet.env
, `: {5 h5 Y; s) ?6 H; ZEnvironmentFile=-/etc/sysconfig/docker, \/ ^6 z! _, J6 D- H
EnvironmentFile=-/etc/sysconfig/docker-storage& y; u+ a" s/ y# R3 G4 _
EnvironmentFile=-/etc/sysconfig/docker-network7 H, o! n" `$ Q
Environment=GOTRACEBACK=crash. t8 t# F& B4 M! Z( b% A5 r
ExecStart=/usr/bin/docker-current daemon \* p4 e1 ?7 T' y5 v
--exec-opt native.cgroupdriver=systemd \
+ V+ `+ J3 n5 S' A( l, {8 F: t" f( G $OPTIONS \
8 w. N* s9 l' n $DOCKER_STORAGE_OPTIONS \9 Q9 v% e+ R3 n9 @* }: ?& _
$DOCKER_NETWORK_OPTIONS \( W6 ~+ S( U' f. {5 [) j
$ADD_REGISTRY \0 o; R$ H. s# b4 a
$BLOCK_REGISTRY \
$ R7 ^# |- ?) j" q# h $INSECURE_REGISTRY \* I/ b) U# Z: F3 J6 E
--bip=${FLANNEL_SUBNET}
5 I4 @0 I- Z6 _1 A& {& u' Q( wLimitNOFILE=1048576+ v; Z& d V, O! c
LimitNPROC=1048576! K( z' D' i' i9 S1 c) l
LimitCORE=infinity1 }% Q' K; S- A; j$ X9 G, G, ^/ i# j
TimeoutStartSec=0 l0 x: o7 t- h0 U- Q7 X
MountFlags=slave$ _7 Z: C! y' Y; L) Y
Restart=on-abnormal! k7 R7 ^# X# |7 s# L
3 r! w+ u+ ^6 Z[Install]% ~- ~. X; s6 X- ~3 i9 ^
WantedBy=multi-user.target6 R& U* z* k5 c2 O! g! f
复制代码
8 x* F" C$ L2 V0 `复制代码4 }' L# i& }& V& x/ P2 ^
在执行前增加配置文件 D& g. q T1 n2 u8 [) ^3 v0 a
% K4 J4 f0 Y3 A
EnvironmentFile=-/etc/sysconfig/flanneld% @/ w" K1 z# A& _) {- j" h- y8 V
% a( I: ]7 w/ e0 W5 ], F
EnvironmentFile=-/run/flannel/subnet.env8 ]6 z- ^0 b, E9 S8 Y: g
* m- ~) U' H6 f R7 n
执行命令增加参数 --bip=${FLANNEL_SUBNET}- ~6 [% P7 j9 J3 s) N) U' P
( C9 N" {+ p& z9 ?! G) _
重启docker5 \; D: N; V3 f" u0 Q
X, m+ l2 i6 D
systemctl daemon-reload
8 S" ?3 s& [5 k0 i" ~- Isystemctl restart docker7 C: e% n2 h& }
& I3 T+ v6 w4 H' o7 u6 i* }) S F1 I$ U
3.6 问题- ?' [1 k2 p3 T. e ]) p: Z
1、Failed to retrieve network config: 104: Not a directory (/flannel/network/config)) Y. y; Z6 z( j2 r! T
5 C' g1 t& P: Q
问题原因:在初次配置的时候,把flannel的配置文件中的etcd-prefix-key配置成了/flannel/network/config,实际上应该是/flannel/network
! [7 I2 u$ r! M; c3 s# z
0 n, G8 C8 e3 C( h' j/ | + N+ G" @3 x) t. m; W% u
* q+ {' H7 ^$ j' r' U) u: F注意:如上配置需要在集群的所有机器上执行,完成后,上述安装的各个系统的启动顺序应该是:
7 S' i) u9 U) L' k1 C: x) fsystemctl start etcd
6 n e, h2 E# h! c
2 \" D& ~ o3 Q! ssystemctl start flannel
$ O1 d/ v* l( l; L
# V4 C# M4 G/ y5 S' Fsystemctl start docker' N/ V8 ]$ O4 T) J7 P* a
9 b/ T4 k$ B( v: ]6 K+ f
配置完检查:& \. l- Q# h6 Y, B
使用ip a检查当前的网络的准备情况:
. h, M( `& [8 X8 g. _+ }3 u. _# [+ ]4 L1 h
复制代码1 j( j: D1 r, l( W' b: Q4 z
复制代码
; r: s! [+ [9 q[root@localhost system]# ip a( R% k) h" Q$ b- V' g
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
. r$ s9 q8 d- u; g: c% I0 ` link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
% M- D, M" \9 N4 m( M% x inet 127.0.0.1/8 scope host lo
8 z7 g/ V( W! @7 B) n& h" V valid_lft forever preferred_lft forever$ s9 V3 |" R1 x
inet6 ::1/128 scope host : B! n! w1 [3 y% |
valid_lft forever preferred_lft forever
& A, w! V: S3 ]7 l4 Y2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000/ Q6 ?5 a& O/ X+ c, ]. L
link/ether 00:0c:29:79:cf:e3 brd ff:ff:ff:ff:ff:ff2 X1 [$ y4 Z. x ?6 U0 t7 a
inet 192.168.37.130/24 brd 192.168.37.255 scope global dynamic eno16777736
9 Z7 r: f0 W0 S valid_lft 1554sec preferred_lft 1554sec
( R; j& }( ^8 T inet6 fe80::20c:29ff:fe79:cfe3/64 scope link : q" d: n @: u* Q5 d' i# j; J7 l' d
valid_lft forever preferred_lft forever
% c1 l& q F6 ~0 `9: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
9 F( P' ^4 P; ^& g' d link/none
; C, f4 Y4 z8 b& W% M( u inet 172.17.75.0/16 scope global flannel0) _' d9 f" b) C0 Q) {
valid_lft forever preferred_lft forever. p) ?2 c" e/ o$ z; I/ G9 e
10: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN " ^. h# k. L% B
link/ether 02:42:e3:f0:0d:05 brd ff:ff:ff:ff:ff:ff
3 |( l2 I% C2 p! a7 A* I inet 172.17.75.1/24 scope global docker0
9 O+ @3 m$ X# S X; f; o valid_lft forever preferred_lft forever
" e& t! I" K* Y4 o复制代码
8 _* H9 c% [6 {" f f. Z复制代码
% @0 r# {' T" V N如果看到到flannel0余docker0的网段相同,则网络配置成功。
9 m" {0 r- k/ V. b1 p3 z
/ N0 \7 H7 J& ?1 z
1 Y( ?, {$ t( z- h, x# _0 s7 J: z( `& y2 \0 ?7 E
在第一次安装完3台机器集群后没有问题,后面过段时间后要加入一个新节点,就碰到很多坑了0 V$ h, z% d4 b1 h+ P1 I9 E+ }
M$ [7 w3 |- i" O( M如http://www.mamicode.com/info-detail-2194387.html 此文说到的
8 \: v- x5 w% F& |; H: f' D5 Y7 |, k8 G& `
复制代码7 i% y1 |. Q7 u* l) ]! Q3 N
systemd启动etcd服务的时候出现错误:Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory; Z$ U: x) q: w! T5 w% m0 x
# I: Q: `; O8 Q1 {$ Q% ]
解决办法:etcd.service服务配置文件中设置的工作目录WorkingDirectory=/var/lib/etcd/必须存在,否则会报以上错误) B; \. V3 k# C2 a) N e
# D( m. j S0 H; {( t0 `: H
systemd启动etcd服务的时候出现错误:cannot assign requested address) R4 B: M: l+ G+ @* F" s( P2 f
2 J) d$ W$ Z- ]9 p/ o: t- i% k; u! |, E
解决办法:绑定阿里云的私网IP4 ?9 C. X1 e2 A0 w# p
复制代码' ` D7 z8 S8 ^7 s1 o
也有https://blog.csdn.net/u010087956/article/details/53670468' m" o4 V2 `: N" v8 Z8 }+ _ R# [
" I' d6 C7 L+ e4 Q# B复制代码1 `7 l" f: m/ _+ K
通过systemd托管的etcd数据备份还原无法启动服务并且报错- V0 q, E4 Y. e7 `3 z
! d6 R0 H3 a7 X: k- K4 b! s, n4 o
error listing data dir: /var/lib/etcd/default.etcd% r, z" G8 b& g
7 i* s$ E8 Q) J& t( b
1
0 l1 N. k2 u0 R1 H$ O8 e! l I1 W# i8 V# @( Q+ j0 e
但是单独执行启动命令可以' w9 u% b! ?1 m' b1 i' N- D1 O
# q0 b4 X! b% ?7 @" m0 z2 C
/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:23800 e }2 s" H8 z5 P8 I2 G$ t
% e. h a8 @$ ]9 ]9 [& f* l! V 1# ?" b0 C1 }, x, T
8 Y& v3 I) ~; g1 J
主要是还原目录时没有注意权限问题,systemd默认是以etcd用户执行的,这里需要修改default.etcd文件夹权限
( d$ o6 e: t* O9 Q: D+ u; Q- o9 Q4 O+ N" \$ K
chown etcd:etcd -R /var/lib/etcd/default.etcd
- x; u( p& { N9 @, a {5 u( i8 M3 k" V/ k9 V
3 L' T4 U' u, C t4 ^ 1
& p0 m+ C6 s; `, M8 N0 t/ R/ J g3 P
参考文档
- g7 g$ a4 a# h: {6 w0 ~, f/ s
7 @: k' w5 k4 p0 D# Uetcd can’t start due to status=1/FAILURE or status=200/CHDIR · Issue #3331 · coreos/etcd · GitHub
# G. P; A( Y7 d: k1 R; i- G复制代码
4 y% p" F/ a7 a4 {2 V
; F, e7 i: f1 R |
|