|
|
由于刚开始学习k8s,本次软件的安装,我们都采用最简单的方式,能用yum 安装的尽量采用yum安装
( e3 h5 g+ `8 Z. ]* s; C
# D: Q' u+ ]0 x" {6 D( M7 ^. r1、ETCD安装2 ]! @# y5 `+ O1 ~8 T, ]1 x1 M6 [; |; ?
ETCD官方文档:https://github.com/coreos/etcd/blob/master/Documentation/docs.md: g) i# u/ A4 v$ b6 i: R: X
, X& L4 x& D ?! }# @+ ?7 T: r: {1.1 检查ETCD版本
* P* A+ _+ c% u) s+ p" e[root@localhost ~]# yum list|grep etcd* u+ k3 [. p1 ]" t6 S: Y
etcd.x86_64 2.3.7-4.el7 @extras * ]) ~: Q0 G" [# C. q
[root@localhost ~]# 1 A) K' z9 b+ ?; @- \
1.2 安装ETCD! N% U: J n% s0 g, D2 S: M
yum install etcd; [+ ~6 U/ [5 ?, w
1.3 修改ETCD配置; |# T: B+ ?% ^
安装好后,系统会自动生成etcd.service文件(路径为/usr/lib/systemd/system/),修改对应的配置3 l# Y' s! m8 t: B+ V' |* d
3 O! j" B0 c1 D1 I2 W4 b) r
复制代码6 g& b x) \8 X& b8 A2 z& W3 V2 j, H- B
复制代码 |3 S3 s6 C2 L2 n* B& T }4 @
[Unit]
: r; a. ^7 f) N) r& g+ h8 tDescription=Etcd Server; a% O W; A& p7 S9 l
After=network.target
& N& E* e* s! W1 w) S6 JAfter=network-online.target
, f: ^1 V$ J& g- {0 ^1 n' y9 M5 aWants=network-online.target" F) N. e' \2 f1 M& l& K7 n5 O
" v/ u% ^$ p' j1 E[Service]
5 L0 S# Y7 X1 V3 fType=notify
5 W( I/ p: W: K& E5 o3 G' EWorkingDirectory=/var/lib/etcd/! C% x. H) O6 U( |# `6 d
EnvironmentFile=-/etc/etcd/etcd.conf
% T1 Q( c7 P) O* g4 D7 J4 U+ O |User=etcd$ j# L H+ \" x
# set GOMAXPROCS to number of processors( G c: {2 m# p" w/ Y
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \1 R( k2 q' t2 T! X
--name=\"${ETCD_NAME}\" \0 w- o" [, u0 Q2 i' N
--data-dir=\"${ETCD_DATA_DIR}\" \( |, D+ E% p0 K* J( v
--listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" \, }6 z/ e) i' _
--advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" \
' m% s2 {9 m( ^7 R$ e! B8 ~--initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" \
0 h5 \4 ?) F: k. B+ J--initial-cluster=\"${ETCD_INITIAL_CLUSTER}\" \
1 v: D- d. V l% r--initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\" \
9 B! X; j c) A) W/ G3 j--listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""2 n& y! Q( u( ^8 ?" u: i, n' p
Restart=on-failure% Z. z5 d. Y- I, _' Z7 ?6 Z
LimitNOFILE=65536: P7 |1 w1 ~) K7 D
: L6 D# }9 w" N3 g
[Install]
2 }' ?+ Y& j# f/ N& @WantedBy=multi-user.target
& ^% {- T9 A5 C) v4 U复制代码
* |! P7 e- }6 v- f. ^! R% Y复制代码# X6 D- ]/ K4 `8 \7 |; y
{7 t/ z( W. \+ o/ v* {& r: R
$ }7 Y# c( I& l, H% G5 d; g0 ^4 b! [ 并配置其配置文件2 g5 u6 ~4 }$ O2 J
& B7 l7 G: d6 W* f4 V7 S9 J) k
复制代码% X3 e* n1 N# G
复制代码. o+ z& M) h, M" U8 }
ETCD_NAME=zwetcd_29 s" \2 B* E3 p1 ~5 H- J+ E6 Z5 q. J9 O2 Y
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://192.168.37.131:2380"7 d9 b& |) r$ R4 W% q; l; O. J
ETCD_LISTEN_CLIENT_URLS="http://192.168.37.131:2379,http://127.0.0.1:2379"9 e/ ] s5 j+ o
#[cluster]6 I+ E0 J, I1 C- C; d% k2 S9 H
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.131:2380" A, L& Q' `, H0 E/ i4 s: b5 @
# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
6 n( B; t1 a8 h0 J8 h# |ETCD_INITIAL_CLUSTER="zwetcd_2=http://192.168.37.131:2380,zwetcd_1=http://192.168.37.130:2380"
; t. T' S2 H8 T: K3 z: rETCD_INITIAL_CLUSTER_STATE="new"
- C) q" E; K* p* cETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"0 r$ {" z1 c$ p H1 `/ ~
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.131:2379"
/ g+ F8 L( b& V: E1 C4 K复制代码& c8 l, N" v! L! A4 B$ e2 b: F
复制代码. k0 G6 g) C5 e2 v! O1 M
! A+ n' F1 L; }1 J9 `9 s
% T* |; A, k# t2 `如果使用firewalld作为防火墙,则需要开放端口:
" \( n& }$ o) }9 ]. W
* W7 k' Q2 W# j5 a0 e1
. P6 l7 g# r& I) l7 ]. ^2
6 E, \: I4 z; u& {3. N# x4 w4 B7 J" j6 j0 ^
4
! }6 F0 W/ [# qfirewall-cmd --zone=public --add-port=2379/tcp --permanent' ^ y4 e6 K& F" g2 | i2 J
firewall-cmd --zone=public --add-port=2380/tcp --permanent
, O* k! \- H0 c( I( ufirewall-cmd --reload# G+ F8 l+ a( R" G; V
firewall-cmd --list-all
1 W9 f2 U" Z# @' X( `' i 问题:3 S6 W7 p# y s% S* F; S
5 E4 f# j( _6 ~; o0 {
1、本地连接报错
: c7 s/ C; M7 z9 d* ?2 K7 Q; ]& T* ~
[root@localhost system]# etcdctl ls /
* x/ ^. F. H3 r8 G0 h- @Error: client: etcd cluster is unavailable or misconfigured6 X+ s2 M X5 w2 T
error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused
$ p, e0 V& `3 r( n5 W- U8 j( Zerror #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused
: j* s$ N) ^2 r; U- i8 d. h9 ~" }6 t
, x" `9 c0 K: S1 B如果出现如上的错误,是因为ETCD_LISTEN_CLIENT_URLS参数没有配置http://127.0.0.1:2379而导致的,不过已经配置了具体的IP,还需要配置本地链路,这个就有点奇怪了。2 d* n( B/ V1 g' y
2、Docker安装
/ S2 W2 j+ d3 x7 @/ r2 g5 T$ ~. D2.1、检查docker版本
/ m1 u' ?* a* ?/ c4 T/ A; B# _3 Gyum list |grep docker
( d8 B1 x* h G) J! h% ` |* \2 W# u% @+ s( C
* |& ^- S& |9 A" j& f5 i J. f; W5 @. A
[root@localhost ~]# yum list|grep docker* M, v5 ]' k& P5 {/ h9 i* c
docker.x86_64 1.10.3-46.el7.centos.14 @extras / c' y3 i# R9 w# \# w9 m
docker-common.x86_64 1.10.3-46.el7.centos.14 @extras ' |, W* ~/ J: A* V H6 a( D% V
docker-selinux.x86_64 1.10.3-46.el7.centos.14 @extras
8 T! E; @. J0 j6 t: scockpit-docker.x86_64 0.114-2.el7.centos extras % D4 D/ c' f8 i0 e$ R9 k
docker-devel.x86_64 1.3.2-4.el7.centos extras
, l( s3 a+ t! R" J) ~docker-distribution.x86_64 2.4.1-2.el7 extras
3 e9 k# R- a1 _$ L3 t1 i) ]docker-forward-journald.x86_64 1.10.3-44.el7.centos extras
6 y% \. g5 E8 j1 i) g. J. Edocker-latest.x86_64 1.12.1-2.el7.centos extras
4 \/ S/ {, p0 q$ Fdocker-latest-logrotate.x86_64 1.12.1-2.el7.centos extras - }9 I/ i. O V' Y
docker-latest-v1.10-migrator.x86_64 1.12.1-2.el7.centos extras 7 P6 V: z L- B- f& g
docker-logrotate.x86_64 1.10.3-46.el7.centos.14 extras % R0 x6 r' ^. D o
docker-lvm-plugin.x86_64 1.10.3-46.el7.centos.14 extras
/ w, u9 X0 x- y$ k4 j/ o4 {$ Wdocker-novolume-plugin.x86_64 1.10.3-46.el7.centos.14 extras
6 J: f$ c ~$ P8 @" {8 h9 Z5 R/ [docker-python.x86_64 1.4.0-115.el7 extras ; w3 b0 I& T9 ?+ ]6 i4 f3 A
docker-registry.noarch 0.6.8-8.el7 extras
9 n5 J# M+ O+ m' mdocker-registry.x86_64 0.9.1-7.el7 extras
# N* Y) @5 k* R: rdocker-unit-test.x86_64 1.10.3-46.el7.centos.14 extras 6 K, Y' F( o3 [: s6 |1 k/ H
docker-v1.10-migrator.x86_64 1.10.3-46.el7.centos.14 extras
5 \4 v% M W' Hpython-docker-py.noarch 1.7.2-1.el7 extras " E- a2 l3 c' k3 Q7 z
[root@localhost ~]#7 X) G' a9 J$ V
2.2 安装docker0 T% u- O7 w& _7 `- W
1 yum install docker -y; ?& D6 x2 K& m. Q; f( R! j$ D, M
2.3 检查docker安装信息3 K( | }. z5 }* r& [8 i. Q# ^' k
复制代码6 F$ ]6 f/ x0 y9 r' |( k1 k
复制代码
' `; ~, B1 ~9 b- n[root@localhost ~]# docker version
( N- H+ N2 ^8 P, i) PClient:
, T9 h; q# Y f8 p, v9 `4 j8 n5 R Version: 1.10.3
8 J4 x/ f% M' | API version: 1.224 @2 `& a/ M7 e' z
Package version: docker-common-1.10.3-46.el7.centos.14.x86_64
w2 v9 S [1 E+ F( W4 j" N0 H% \ Go version: go1.6.3
6 x' W9 ^* Y, k Git commit: cb079f6-unsupported
4 x- d/ ^) ~0 Z _ N2 C# X: P Built: Fri Sep 16 13:24:25 2016, Q3 V, H( o5 A9 ?8 J
OS/Arch: linux/amd64! x% U6 f5 d( `" h8 q6 [1 r: e2 `0 W# X
Cannot connect to the Docker daemon. Is the docker daemon running on this host?+ @) x, z# G( ~4 q3 F
复制代码
1 u5 Z" U X9 T; w* [; J复制代码- I; {) e+ L# ^- U+ R
) x' }' f! c' d) h
$ V. v- L- }5 y' Q: H0 U+ B$ C
- m' B+ @8 m# j4 R: i; E& {1 ~
3 Q) b5 X0 e7 \+ T3 flannel7 ^& b. M, Z) X, W) m5 @
3.1 检查flannel版本8 b" _0 m$ ?) b5 z
[root@localhost etcd]# yum list |grep flannel
; q! P6 l& R6 `: n- K( _5 gflannel.x86_64 0.5.3-9.el7 @extras % _" t& P" D3 B
5 n$ z. m |0 V, u' V; i3 ]) a. ~ c* ?2 @. q$ Q
3.2 安装flannel9 _: f& \9 j4 y$ U
yum install flannel
" X$ z! Q# S3 _/ Z; \( X7 Q4 }3.3 修改service配置
. o: M5 f" W6 B查看flannel的配置文件(使用yum安装会自动生成此文件,如果下载的执行文件则需要手动生成,在使用systemctl命令执行service 的时候会用到),可以看到flannel的service配置如下:7 |- a* x7 R3 N& _/ f! J! C
/ b' T$ V5 T& B6 d# T复制代码
- I- o r- [$ e1 y' a复制代码
8 }9 ^. X; B3 V[root@localhost etcd]# more /usr/lib/systemd/system/flanneld.service
$ P$ E2 U& x' x* v& X[Unit]. U w; [* a. m5 T5 l& W0 |* s0 ]
Description=Flanneld overlay address etcd agent* a) u0 \2 z8 s3 c: U
After=network.target
6 Z7 s% q" p% p. C9 IAfter=network-online.target
+ j: |2 I% D; o4 lWants=network-online.target
7 c) t4 R* ~' I& ` z: {After=etcd.service
' d9 B& y" p/ T( s$ }Before=docker.service8 N4 J$ q0 ?; E0 R
4 `4 z* q( G/ n9 W9 f
[Service]
! m8 D/ N8 r, f1 h; m, z& OType=notify
) l8 f, ^3 y- v: v( y* CEnvironmentFile=/etc/sysconfig/flanneld
5 `) h5 Y* X; q/ iEnvironmentFile=-/etc/sysconfig/docker-network
% A+ k3 h# J8 G% KExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS0 [% n3 E; m4 K$ `* f( D
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
1 p" k5 f0 o" ?# ?Restart=on-failure, U. P: d; c3 B- \4 @; x
) U; p' b* ~- t+ P. ^& [. [
[Install]
" l9 K% B m4 ]- yWantedBy=multi-user.target
0 W# q2 [" D# _RequiredBy=docker.service
, g% `+ j! m* ^3 Y T" _复制代码 v/ k" J5 K' _/ u! O
复制代码
. J3 k1 l% p( c! U+ `1 D其中所有的参数都配置在/etc/sysconfig/flanneld文件中,修改此文件,初始文件如下:6 D( H' N5 M9 F1 [5 V( U) @, ^
# V) y, L: d5 f6 j' w( b
复制代码3 o8 N! S/ ?0 Q
复制代码* X: X' I7 u' q: V
# Flanneld configuration options 8 I* C3 Q# e- Z$ y8 I0 c
3 K: r% B8 }4 ~% q$ |/ L; p
# etcd url location. Point this to the server where etcd runs
/ E' L( n- E5 hFLANNEL_ETCD="http://127.0.0.1:2379"
% {" N, A% r( r( c5 M2 V7 O0 a8 g7 P6 l, H7 @- Z0 u' P
# etcd config key. This is the configuration key that flannel queries
) T' T; ^: Q+ z8 R+ J p; u' f5 H7 \# For address range assignment# G# C$ |, {! k1 C( z' M7 `
FLANNEL_ETCD_KEY="/atomic.io/network"/ a- x% L, E% p4 `, K$ b, N% n( k
( ?9 ?1 i( x+ [, W( K5 L5 H
# Any additional options that you want to pass' Q! }" W6 D1 y: L/ x: j ~( t7 P
FLANNEL_OPTIONS=""$ }' `( g$ c ?* E
复制代码
. `; l6 ^' G6 q复制代码- j7 z$ Y6 A- P' _& O0 P
其中
: V- W4 |2 F; L0 T4 R6 r
1 Q. M7 s" ] W& s1 K) K. ~4 f4 @5 N$ z FLANNEL_ETCD:为ETCD的地址,
8 y% e/ G* ^ E, T) a2 b& {! g1 t: a# e
FLANNEL_ETCD_KEY:为在etcd中配置的网络参数的key
2 y; O/ g; Q! x* p( Y1 {4 R7 f( g7 n, [+ K& c/ y
FLANNEL_OPTIONS:为flannel的启动参数,我在这里加上了监听的网卡
% g$ d. `2 N2 h3 t1 J$ W
1 z: Y/ x i+ S7 e6 x% h根据前面步骤中etcd的配置,我们修改配置文件如下:" U0 H8 h `4 D4 X/ H
, W5 j( T" Y$ c复制代码8 Y8 y0 r- d6 Z" ^
复制代码
5 c" s3 @; U' e$ I% v V0 g# Flanneld configuration options
# S4 P5 K9 x& ~! g) ?7 {8 F+ w! B3 Y
# etcd url location. Point this to the server where etcd runs/ w1 H. Y8 U( u
FLANNEL_ETCD="http://192.168.37.130:2379"* f& U0 J$ D. M3 d' s+ ~* g
; Y( f& x7 X" Y0 E# etcd config key. This is the configuration key that flannel queries1 \6 V5 D* t& E
# For address range assignment
, p0 i$ n4 e8 \# k0 u# `FLANNEL_ETCD_KEY="/flannel/network"
! N1 j( Q. s/ U3 u _8 k ^- A7 Y' h
# Any additional options that you want to pass( n: w6 m* w7 }4 ?( Z3 ? p+ S: u
FLANNEL_OPTIONS="--iface=eno16777736"+ @3 H4 d# V: e; M) q8 O. t
复制代码0 h7 x2 C- R }
复制代码# B& ~- G% x/ j4 Z; V# Y3 D
3.4 启动FLANNEL( O8 a4 k5 Q. \2 ?! p
可以使用service flanneld start 或者systemctl start flannel启动flannel
2 ^% v# Q8 x6 B( B3 P: }4 G4 q t3 r# n; F3 r! J l
: K# K9 A! X$ ~' O% F1 y
- }. |2 L& ^6 e" V: I q2 c3.5 修改docker网络
: q- o; s) ^# _9 h 因为docker需要使用flanneld的网络,因此需要修改docker的service文件:) T- ~7 W' f% Z6 x; Y
( X3 d/ T# v$ [8 m! H. A& ?复制代码
& [4 d; w% n; L复制代码# i( @2 J) H: Z: m: W6 k
[Unit]
; ^ F2 s( c+ @ HDescription=Docker Application Container Engine; k9 \5 @6 y; B; `8 Z5 w1 Q& @
Documentation=http://docs.docker.com
- h4 ]" I/ V% l( `; ^+ M9 dAfter=network.target rhel-push-plugin.socket
$ ]. o* s! Z0 f6 T/ ~0 ~Wants=docker-storage-setup.service1 J2 C: o. u6 s B8 v
2 |7 N5 u/ j' e6 i7 D" U
[Service]
& z7 c& ?) _4 D" RType=notify, k( z7 c' G5 e2 `6 P
NotifyAccess=all
) ~' X! a" J- h#import flannel configuration
# e: D' T6 W2 ]7 i$ K6 aEnvironmentFile=-/etc/sysconfig/flanneld: z0 [0 S3 _5 h: y L% W) p
EnvironmentFile=-/run/flannel/subnet.env
g6 r4 H. T/ S9 {! ~0 Z2 OEnvironmentFile=-/etc/sysconfig/docker
: ~9 d; h1 \6 K/ g+ E5 \6 \EnvironmentFile=-/etc/sysconfig/docker-storage
. o: }0 k( G3 R' u- pEnvironmentFile=-/etc/sysconfig/docker-network) B Z; h! C( U% ^2 E5 T" X
Environment=GOTRACEBACK=crash/ S9 v6 Q, v: f# A
ExecStart=/usr/bin/docker-current daemon \
1 |- g: l) t: q T% U0 e% G --exec-opt native.cgroupdriver=systemd \6 ?. t: s7 K& ~6 E( F. j
$OPTIONS \
; B# Y! O& x3 w* J) V+ L% C& K $DOCKER_STORAGE_OPTIONS \" F; c5 }9 i5 b" [2 S- r, L b, _
$DOCKER_NETWORK_OPTIONS \
/ Q6 Y+ o/ j3 b8 W( P' v! ?, z; I $ADD_REGISTRY \: [" D8 O/ [5 `
$BLOCK_REGISTRY \
+ L# b5 S# c, \" q* G* u $INSECURE_REGISTRY \
7 Z/ V7 G k# V+ @- X% J --bip=${FLANNEL_SUBNET}' [& R' U+ }. D2 y5 a2 V6 k0 J# B
LimitNOFILE=1048576
, N# f/ w) Y% {: |( y0 V' NLimitNPROC=1048576
# H0 ^/ Y* i9 G2 WLimitCORE=infinity! ^, b2 x7 Q. o
TimeoutStartSec=06 P# K u9 P9 c, S- L
MountFlags=slave
6 h3 d& u9 I& p5 }& a- I* LRestart=on-abnormal
8 q% T& d7 e. N+ L. }6 C7 a1 p& U* C6 R9 H: D X
[Install]
6 u6 @6 L% R$ b7 X* M. d0 [: i SWantedBy=multi-user.target" }0 |2 U6 I- o3 F# ~7 Z* `
复制代码# d& e# e i! z6 l2 v1 {$ y/ `2 |
复制代码
5 o# X) g6 o; {, X在执行前增加配置文件% g/ D) f6 |% v7 v! ? [
% M' o- i/ O3 S" u4 R
EnvironmentFile=-/etc/sysconfig/flanneld
; ~6 c/ y1 m: y+ }8 G, B
+ J3 K5 X! e- @. SEnvironmentFile=-/run/flannel/subnet.env
1 @7 g- c& F; `; O! n4 f4 r9 |8 _; W
执行命令增加参数 --bip=${FLANNEL_SUBNET}* i: U5 L0 j' q( `1 b
2 z9 _; L$ F9 W! z$ T
重启docker
0 q( W% @# y& L! n" h/ c( [5 `% }
- r( e1 d7 B. n+ G& Z5 S1 d) Qsystemctl daemon-reload6 }- S- f& {3 Q4 @- o$ Q
systemctl restart docker1 X2 c, h5 A% t. K. a
$ y7 d& D) f* R" r
- a- W' P- a* L+ F
3.6 问题( ~& p9 R0 S# I0 c' l/ G
1、Failed to retrieve network config: 104: Not a directory (/flannel/network/config), b1 s8 H" b1 U- F4 I5 W
$ w, D0 `2 y5 E7 m$ F问题原因:在初次配置的时候,把flannel的配置文件中的etcd-prefix-key配置成了/flannel/network/config,实际上应该是/flannel/network& x3 F$ u, n+ C. N5 C
% O. H+ a. G4 b" s
" Z' d, `4 _( \3 Q S; U# G9 ?. l' F0 H0 y& A
注意:如上配置需要在集群的所有机器上执行,完成后,上述安装的各个系统的启动顺序应该是: R T' t8 _; L/ t \4 q+ V
systemctl start etcd
& u6 M# q& R# w9 v
1 G4 i1 [9 W7 l1 s, a$ \systemctl start flannel' E; Q2 \* u! u7 d0 T1 z# [
! |" r, V- S k/ @6 Z5 ^
systemctl start docker! k2 c! @! x. W1 S7 E8 H: F5 y
; Z, U1 v" w: {' A: y) q# L: V
配置完检查:6 S4 q9 q' e6 D+ ^7 T
使用ip a检查当前的网络的准备情况:
0 n) A9 z- p2 H" c, k1 G" u |/ b5 e
复制代码
# V4 ]# x' _* o0 q. a: R复制代码
0 W% n3 ?7 b6 N% Y( h. f[root@localhost system]# ip a
5 M- E( d3 L1 t& t; S1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN o& C6 c$ q$ Y# I& V
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00! c- w5 ?4 o" E
inet 127.0.0.1/8 scope host lo% G$ ^. N/ _ ~5 F
valid_lft forever preferred_lft forever
# y" ~9 E; |( _' m' \, |5 W4 j inet6 ::1/128 scope host 8 Y" ^# r# [1 |
valid_lft forever preferred_lft forever
& }4 i* r; C n- W- `& |# o! R5 x0 l2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 10005 d( W0 Y: O6 P7 Q) y4 p0 [; l
link/ether 00:0c:29:79:cf:e3 brd ff:ff:ff:ff:ff:ff( Z! V/ e' B) e+ h$ E
inet 192.168.37.130/24 brd 192.168.37.255 scope global dynamic eno16777736
2 {; a- u; V5 { valid_lft 1554sec preferred_lft 1554sec0 J$ w, _5 r4 P4 _; X- J
inet6 fe80::20c:29ff:fe79:cfe3/64 scope link
* M+ N% ^ {$ l0 K0 w: P A valid_lft forever preferred_lft forever8 ]4 H9 |7 p# v5 h7 _& e
9: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500! p# w' g2 F2 G; R4 M
link/none 0 [2 t2 H2 q# n4 e: ]/ Z
inet 172.17.75.0/16 scope global flannel0
* @4 K' l, e' o' O. d& s0 }& O9 b valid_lft forever preferred_lft forever
; H6 X: h2 p+ Y10: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
* H0 m- z2 k/ ^ link/ether 02:42:e3:f0:0d:05 brd ff:ff:ff:ff:ff:ff/ B7 h3 V0 H0 ^$ C$ E
inet 172.17.75.1/24 scope global docker0
! m7 H, P% {% A) c valid_lft forever preferred_lft forever' \5 |; A4 z7 l+ ?8 ?
复制代码
+ l; E7 N4 J# E' ?( L( y, ?复制代码4 R. C2 D2 V( k; T* ^
如果看到到flannel0余docker0的网段相同,则网络配置成功。
3 c3 l3 h: }, x$ h
* k* Q; X! s% }( w2 n " I$ y: Q k5 Z% U! ?* U
2 k7 M) [5 F3 r$ d* N& H在第一次安装完3台机器集群后没有问题,后面过段时间后要加入一个新节点,就碰到很多坑了
: y" {5 o U+ E& Y2 D" }0 t0 E$ p8 k' r2 c, @, @2 w8 e- t+ \
如http://www.mamicode.com/info-detail-2194387.html 此文说到的
! Q, f- Q6 o* [; S. ~ l6 i* {2 w# `0 r5 C3 p, l
复制代码& O% d0 W* D4 V1 f
systemd启动etcd服务的时候出现错误:Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory6 J0 P. u$ t( ^& z( U# e
% x4 f5 G: Z# k6 j9 S
解决办法:etcd.service服务配置文件中设置的工作目录WorkingDirectory=/var/lib/etcd/必须存在,否则会报以上错误4 o- k. \ V* w; v* ~, x( Y0 @* H
H) x5 F$ y+ [) }
systemd启动etcd服务的时候出现错误:cannot assign requested address
7 M. z1 \; O0 s! `/ E9 X9 w& }& ~3 l6 ?% ]" ?: [4 J3 M+ S o5 [
解决办法:绑定阿里云的私网IP
" D; }& M, r0 {0 i& {' Q复制代码$ Y$ H: S3 Y/ E4 e
也有https://blog.csdn.net/u010087956/article/details/536704689 m" `. T, _$ E
' n6 n: t; G$ H
复制代码
$ t7 d- i- o3 m# V1 X通过systemd托管的etcd数据备份还原无法启动服务并且报错
7 @' A+ j3 `* j J6 n3 G1 e
# x! _( ]" S. B" l# b3 ?error listing data dir: /var/lib/etcd/default.etcd
& O0 ~, Q1 Q+ a G6 x4 L2 O: P7 U0 E: l4 m# A- b i0 o% D: x
1
- M+ S& h( c3 v. j2 V' E* P3 Z7 C: L0 J. h: @
但是单独执行启动命令可以4 G0 e9 I- J$ v! N( V
$ ^) h, O3 i% G+ F6 l
/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% v1 `% Y% Q# a" g6 L
! ?) Q$ j5 G! C, y$ d+ c 1
* R. N3 _ L5 _4 K- ~. t/ b& p5 N/ |& s, p, Y
主要是还原目录时没有注意权限问题,systemd默认是以etcd用户执行的,这里需要修改default.etcd文件夹权限
. N( a" X1 y1 C% h3 P7 a: g" z% R
* e! L4 V1 R! o0 R9 Schown etcd:etcd -R /var/lib/etcd/default.etcd
1 `1 a, g( j) d' |3 u5 T: }; S6 x, N, z1 K
1
, G5 e8 b$ T' \" a) a* J+ z/ e! d2 o6 v% v" P0 B
参考文档
3 H7 h5 f0 Y% b+ d2 N
" S- J$ J' l" m# betcd can’t start due to status=1/FAILURE or status=200/CHDIR · Issue #3331 · coreos/etcd · GitHub ' x. X2 i8 u% K I$ e: x+ @, r1 J
复制代码: u* s( p; S- j- P, i
/ z9 W- ~+ ]+ @2 h* c
|
|