|
|
由于刚开始学习k8s,本次软件的安装,我们都采用最简单的方式,能用yum 安装的尽量采用yum安装$ v. O8 ^0 ^$ }- F1 b
7 {; C* Y1 [2 T! p/ O# K$ R& }
1、ETCD安装
% \1 I6 I- U5 {* K, GETCD官方文档:https://github.com/coreos/etcd/blob/master/Documentation/docs.md
% A+ A* Z& q' Y3 x6 ~* F& D G- \4 Y" S
1.1 检查ETCD版本
* V- l) p# l7 ]) j. S& G[root@localhost ~]# yum list|grep etcd
- u: ]" e8 x. G6 ?6 X, {etcd.x86_64 2.3.7-4.el7 @extras
+ [* P4 v. C& O H9 _+ S, h[root@localhost ~]# 5 e1 V. F( W& C
1.2 安装ETCD* h! Z1 m1 h5 }
yum install etcd8 x$ C* Y0 g+ p- n K, q1 o
1.3 修改ETCD配置4 V$ `! D, W9 t. s+ M
安装好后,系统会自动生成etcd.service文件(路径为/usr/lib/systemd/system/),修改对应的配置
. o7 Y9 X( e$ d7 R* u [1 ~$ T' a, e4 c v4 c
复制代码
3 P6 ~' y& l- H复制代码! d0 R( a9 f& H: ?& r3 f# b' f
[Unit]3 \; a4 D/ K9 |( \6 p: I
Description=Etcd Server
" c y; r8 `; J( LAfter=network.target, ?! L5 |/ G A& s3 J
After=network-online.target3 \5 s# _+ a T$ `
Wants=network-online.target0 _1 v+ U, }% P% a
2 X) D% O2 e1 I; V. R[Service]
% S' t7 z$ }( ], o5 _( C* |Type=notify
9 O/ B$ ^1 V+ u! z' ]% m" jWorkingDirectory=/var/lib/etcd/0 y$ ~( x6 l8 U! B4 F# V# O5 x- ^( \5 I$ `
EnvironmentFile=-/etc/etcd/etcd.conf
* o% F6 K% o, C5 M# ?User=etcd
7 m* D! j9 I, r) W2 K4 ~0 ?9 P# set GOMAXPROCS to number of processors, s8 E7 X& w4 T% D
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \
9 V# L6 r7 X+ q--name=\"${ETCD_NAME}\" \3 o( K+ d% @0 D
--data-dir=\"${ETCD_DATA_DIR}\" \
3 C0 e0 l: H& f! q, ?' R4 ^--listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" \
9 @( H; V) U' V) o$ ]2 Y; D--advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" \
, Z2 ?/ d9 D- R4 A( C. H( r# }--initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" \" a; t0 A1 N/ C7 V
--initial-cluster=\"${ETCD_INITIAL_CLUSTER}\" \$ K3 s; G1 k, F/ A2 M
--initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\" \( c5 ]9 O1 E1 C4 d# E
--listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""
b& M4 [+ B$ I+ T! F+ sRestart=on-failure+ c+ }3 V2 B6 x u$ ]. y2 j! ?
LimitNOFILE=65536
7 s1 x- G0 T' a# H
8 j) H# w+ g2 {; n5 [$ u[Install]
% R; U3 k( O5 DWantedBy=multi-user.target
$ `% K# d7 s+ p( S* J; p* p复制代码
. E! B* O3 l2 c; v& }4 F1 o复制代码+ B4 O/ N% J8 C/ W; ]6 Z
% _1 r+ ~( U8 R$ `: N! `' o
, i! X; i. s) W. c- a2 G0 V 并配置其配置文件
( @ t; G% ]0 Y; p+ V( R
5 b2 G% K6 s& @ B( g4 x复制代码
* k# ~" S. ?* V$ M复制代码
0 W8 |% ^1 Q u5 W7 r8 TETCD_NAME=zwetcd_2
) P6 Q% P/ G1 B2 L4 `ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://192.168.37.131:2380"
+ W+ v3 j; t" x& V P iETCD_LISTEN_CLIENT_URLS="http://192.168.37.131:2379,http://127.0.0.1:2379"5 C& {* i, ~! I1 ?" |- I+ n
#[cluster]
& u" v& @# B2 B) I: x$ v# l; jETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.131:2380"
% j" V$ j' ~+ G% v9 w; K# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."5 c; {4 v9 P' ~- L
ETCD_INITIAL_CLUSTER="zwetcd_2=http://192.168.37.131:2380,zwetcd_1=http://192.168.37.130:2380"
( m9 i7 Q: ] iETCD_INITIAL_CLUSTER_STATE="new"' z9 Q: a+ x& X7 v) y
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"+ a4 s! G0 e( L4 @& o# u8 f
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.131:2379"( Q7 l& `# l7 H
复制代码8 C/ d& [5 W: x o7 R, h) I" G
复制代码
& b2 [0 i7 h1 n/ M0 f* _* ~
( A; U/ K: `" b
2 {5 z+ |) s3 ?, m& z1 i: m如果使用firewalld作为防火墙,则需要开放端口:
/ k) m" W1 W {+ ^+ E$ {9 `; G: O* C% w; |' q, l: M! [
1
8 M) e G/ L; ~ B3 O; Q! U; g* T' q2
?8 `8 q# q9 r3 ], ^6 x( k' K3
8 Y( c; [1 S0 _: o, A# b4 X$ u* f4& W& ?* T0 x7 S5 _# K; ]; Z e$ S8 N
firewall-cmd --zone=public --add-port=2379/tcp --permanent
& y; r8 ^5 l: B4 k1 Vfirewall-cmd --zone=public --add-port=2380/tcp --permanent
/ c3 Y$ n6 c& l. }) {- W; gfirewall-cmd --reload
. D$ |7 [# \9 {0 e6 wfirewall-cmd --list-all I2 u$ g! A; V* `) Q" c ?
问题:7 d, e% w9 J( o& e, [' z0 P( O- A
4 K8 l' y4 u7 l% y- Q& I
1、本地连接报错
, w! N- Y$ O9 A& J2 d [" [6 ?* N: x. e8 [2 l* z0 T! C) P
[root@localhost system]# etcdctl ls /8 W. C$ U4 Q, B4 |
Error: client: etcd cluster is unavailable or misconfigured
# K. O0 G/ M% j7 f; r, X- ?error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused! `* r/ s+ e, K- K: {1 ?
error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused
1 Q6 A( D( e/ Z5 ^9 ]7 o6 y" Q4 \; z
如果出现如上的错误,是因为ETCD_LISTEN_CLIENT_URLS参数没有配置http://127.0.0.1:2379而导致的,不过已经配置了具体的IP,还需要配置本地链路,这个就有点奇怪了。
. p/ M1 B D' W9 w9 K/ N+ Y2、Docker安装: K0 L$ q& E( X' L: Q6 w, b$ h
2.1、检查docker版本
4 Z* m' v, X8 P3 e8 Qyum list |grep docker& r5 }& J& E5 z0 \
M m6 T! K# `5 b
; h+ E6 ^9 d" F2 r; a1 ?[root@localhost ~]# yum list|grep docker0 W, J: |5 @! v
docker.x86_64 1.10.3-46.el7.centos.14 @extras - i& w& d% d9 R( Q0 B' v9 k7 g( I
docker-common.x86_64 1.10.3-46.el7.centos.14 @extras
N7 `- J9 ^0 D* e$ s2 A- j6 X) }docker-selinux.x86_64 1.10.3-46.el7.centos.14 @extras " W A* n2 x! O& f; ~8 q
cockpit-docker.x86_64 0.114-2.el7.centos extras
& @# o8 T& E. a; kdocker-devel.x86_64 1.3.2-4.el7.centos extras
; m/ T0 {$ ]8 I h9 v5 _/ w& edocker-distribution.x86_64 2.4.1-2.el7 extras ) K- j# x& u. B5 |) \: B
docker-forward-journald.x86_64 1.10.3-44.el7.centos extras
7 j% y6 ~; G6 r5 I3 Pdocker-latest.x86_64 1.12.1-2.el7.centos extras
3 O. c; l& v+ F" }docker-latest-logrotate.x86_64 1.12.1-2.el7.centos extras 8 q3 P3 }7 v- ^9 k5 X) A( C
docker-latest-v1.10-migrator.x86_64 1.12.1-2.el7.centos extras / F; ~- p% o2 H0 K: |$ F$ i8 Y. _& ~4 k) [
docker-logrotate.x86_64 1.10.3-46.el7.centos.14 extras
# [8 C9 l; ~( w/ [% Q: T# wdocker-lvm-plugin.x86_64 1.10.3-46.el7.centos.14 extras ( P/ {) q. Y5 x5 o
docker-novolume-plugin.x86_64 1.10.3-46.el7.centos.14 extras $ @; z. x8 M, x
docker-python.x86_64 1.4.0-115.el7 extras
+ O" H4 T g0 n+ B" y% a' Jdocker-registry.noarch 0.6.8-8.el7 extras " ~; O5 X+ m; H' ^/ O
docker-registry.x86_64 0.9.1-7.el7 extras - S, g, c% W/ L' m& U1 J
docker-unit-test.x86_64 1.10.3-46.el7.centos.14 extras * ~; P2 X! |! b2 K5 H' o( }% b
docker-v1.10-migrator.x86_64 1.10.3-46.el7.centos.14 extras ( a* o/ t: A O8 a) O% I ~. f
python-docker-py.noarch 1.7.2-1.el7 extras 9 t" [! r0 M9 G+ d( m% K
[root@localhost ~]#' g9 j4 x& J# V- O3 c$ N
2.2 安装docker7 Z( |. f( R% [: n. B
1 yum install docker -y
, W) {: B5 \! p$ o% d2.3 检查docker安装信息7 P+ q% @9 a& R# d
复制代码
" z" n0 E4 M6 T* g" Y3 A复制代码1 n) ~: B4 r/ i3 b; {. U' ^
[root@localhost ~]# docker version
4 y2 U V0 r5 G8 X* RClient:
' ?5 S1 F4 Z# s% D( u4 } Version: 1.10.3$ Y+ g. t& i# d2 z4 r
API version: 1.224 y. ~2 x8 J3 ~" L/ [0 I
Package version: docker-common-1.10.3-46.el7.centos.14.x86_64
. O) t" z8 _" u' H" g( |* t3 P Go version: go1.6.3
- x7 d3 q" M8 q: ` Git commit: cb079f6-unsupported
- f7 i, T% a) O' Y O Built: Fri Sep 16 13:24:25 20164 J; u0 I# O2 l- k$ F
OS/Arch: linux/amd64
6 _% \- b& e' x5 Z' rCannot connect to the Docker daemon. Is the docker daemon running on this host?
: e+ ~) H7 m' R( R: t! N. o" ~复制代码3 D: }& i3 B& B, O. G
复制代码
+ e7 r9 O8 |( u+ i( t # @( o/ e a4 m& K/ o$ F
$ Y8 F% m( S9 ?7 e% Y! `
) G) w0 u5 O) Y# T1 q' C/ \4 C2 {% | r( L( f
3 flannel% P1 Y) n( X! n& Z7 B
3.1 检查flannel版本3 l3 @0 }+ \! H1 ^$ ~1 u, ^
[root@localhost etcd]# yum list |grep flannel
+ `7 L! n j# @, f# r- C# m) Hflannel.x86_64 0.5.3-9.el7 @extras
. M" [6 R* k: E* Q' Z; } 5 R' N) q$ O# v/ E2 Z( G) X0 W- C: {
$ V0 V5 i6 I+ f& Q4 B) K( c3.2 安装flannel
+ v7 `! C/ n/ Y4 s/ [: q" fyum install flannel ' c+ O2 D5 `, H; i: c
3.3 修改service配置$ F: k& u( h3 M6 I, h
查看flannel的配置文件(使用yum安装会自动生成此文件,如果下载的执行文件则需要手动生成,在使用systemctl命令执行service 的时候会用到),可以看到flannel的service配置如下:& w, d: L: ~ H9 J- k. L
* i f- b5 @" _: g* B) Z0 t- \
复制代码/ Z" K+ O) p. O U0 `
复制代码
' t4 w8 |7 j9 B" h# }[root@localhost etcd]# more /usr/lib/systemd/system/flanneld.service' R: }' \6 x( @0 ^& ]8 F$ h+ `
[Unit]
4 ^+ ~: |* V$ \1 N6 k0 IDescription=Flanneld overlay address etcd agent
5 L# V; u+ l1 Q1 R, L5 w# ?' HAfter=network.target5 [* ~8 b7 l9 I" M
After=network-online.target I% j1 I; K* Q6 J3 x6 u' \# n# q
Wants=network-online.target
- C( r7 G G. A" g2 d2 rAfter=etcd.service. a+ Q2 n$ m( k: Z4 a* J2 M
Before=docker.service
+ j6 i. v4 }/ O' h
% |/ h. n- G" X: k! \7 @[Service]
! K3 w( z; V' q- {0 N6 k/ bType=notify
9 O+ U' ^) C8 bEnvironmentFile=/etc/sysconfig/flanneld
" i% s/ E" X9 n/ J# \EnvironmentFile=-/etc/sysconfig/docker-network
, `' ^) \* h& T$ {& J4 gExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS7 D% ^' S: d, x3 X! m2 Z
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
' g N8 G3 c% fRestart=on-failure2 Z9 x1 a# l( k2 D
) |+ _! E9 X# R% H$ N" H. X7 f
[Install]3 c" s! K3 [8 Q: Q5 L5 h7 t
WantedBy=multi-user.target! h& }. z' j9 z) w8 H r( \: [
RequiredBy=docker.service9 [1 Y( ~3 i8 d6 P i
复制代码$ s& H9 ?/ ~' N
复制代码
8 }2 B) p6 e9 @9 z0 z& j其中所有的参数都配置在/etc/sysconfig/flanneld文件中,修改此文件,初始文件如下:) l7 t% Q6 x Y$ P/ x7 ^# O$ S
0 `# C& w% ?9 o: f
复制代码
+ W! G# I7 L8 O0 x复制代码
8 e+ K& o+ L" J8 l" h+ m; C# Flanneld configuration options ' g2 e b' r! j$ R, O7 u7 r- t
( Y1 q( G: s X) o
# etcd url location. Point this to the server where etcd runs
D5 I9 N5 h7 DFLANNEL_ETCD="http://127.0.0.1:2379"
( W+ X5 \0 j6 D t. @$ }# L! k+ r8 U
# etcd config key. This is the configuration key that flannel queries5 D# }/ @0 w @6 h- P, Y6 c( e8 J
# For address range assignment3 i7 U+ S* { l; S( @2 ` O
FLANNEL_ETCD_KEY="/atomic.io/network") \2 }3 g; D% w- s
& X% ]: P; X8 Q. u' B# Any additional options that you want to pass
5 x# ]' d0 e' cFLANNEL_OPTIONS=""
+ ^5 s- l" d: T3 S# L' g1 ^# s* G复制代码
8 I, x5 f, w" T, E$ N' s8 u复制代码
5 L( |1 a1 C4 ~- M2 _! p: Z其中4 W1 I' H9 v \0 T- c
1 J7 c2 W6 s; P. }7 V, }
FLANNEL_ETCD:为ETCD的地址,! Q! n. R8 |& g2 \* k
( O. T- a3 V2 U& j/ {- g FLANNEL_ETCD_KEY:为在etcd中配置的网络参数的key & ]+ A |. f( @( Q1 k; ^
* O. i) V6 W/ V( [* f
FLANNEL_OPTIONS:为flannel的启动参数,我在这里加上了监听的网卡
4 @/ e3 u( Y& k* p/ {# y$ ^5 C* F/ k' j5 x
根据前面步骤中etcd的配置,我们修改配置文件如下:
, U; i% E! n8 m* p0 u& C; t& `: o$ I' E! h5 j2 b+ {4 [3 r1 t
复制代码9 j2 r8 B k; A& j1 f* m
复制代码2 A9 o& m/ J# u. x6 j H
# Flanneld configuration options
# G) }8 O# _4 U0 B, G( V1 @1 C/ d) c
# etcd url location. Point this to the server where etcd runs
+ \2 d: _0 U5 ]( x" I# cFLANNEL_ETCD="http://192.168.37.130:2379"
+ a& d4 G1 Q- @% n* L: d+ Q& ~8 M3 B0 G7 D
# etcd config key. This is the configuration key that flannel queries' _* Z* n! {5 E- I
# For address range assignment
7 T# D$ y' Z1 W, @5 `FLANNEL_ETCD_KEY="/flannel/network"
- \2 {+ Z% `) u! b' _4 j
# `5 l, J' s/ a: D( o# Any additional options that you want to pass
8 y' B/ f n) R! E) SFLANNEL_OPTIONS="--iface=eno16777736"
7 t7 d6 T! X5 E) g" U% m复制代码
, \# s& E! y }7 w" T6 L5 m复制代码
5 A# [4 P ?+ h7 v/ B3 t3.4 启动FLANNEL1 }( m. i$ a7 a6 h! J
可以使用service flanneld start 或者systemctl start flannel启动flannel/ h- a( j L6 k$ h
0 {$ `8 s- O, N8 b7 {
# L8 Q8 K# D. |. q* B$ K4 \( z
% ?- p+ H8 e% i4 N! o
3.5 修改docker网络
) D$ p7 _( a8 S" N+ W' U2 I 因为docker需要使用flanneld的网络,因此需要修改docker的service文件:- ~7 y5 s' j( @' @
& y/ k* f/ o0 h8 e) X- V
复制代码
% {; H) X1 D5 j2 r L复制代码
8 a/ m3 y1 n* h4 v) K5 P7 ][Unit]/ C/ |4 E' M5 i, N2 Q& A
Description=Docker Application Container Engine' _$ L9 X* E1 [$ g% `/ ?1 f6 ]: K A
Documentation=http://docs.docker.com
C+ l5 r' Y0 l: Y. ~After=network.target rhel-push-plugin.socket- j2 H+ G- W2 j* z) _9 @1 ~1 k
Wants=docker-storage-setup.service
: k9 M/ V z2 O9 Z; W* c& X
X" K0 S2 S- c, h# x6 j[Service]/ l' [) J# x! e& a$ u: S
Type=notify
; [5 k, s7 u+ u1 ^NotifyAccess=all
6 q" V" Q5 g; l; \#import flannel configuration
+ N2 X$ P$ B% p$ r3 M8 f9 N! `! pEnvironmentFile=-/etc/sysconfig/flanneld& a" j- a& a' A: ?. O! E# Z2 z
EnvironmentFile=-/run/flannel/subnet.env! ~2 k1 x$ l9 C. f* c
EnvironmentFile=-/etc/sysconfig/docker0 v$ b8 W/ ?- r+ x5 }. T
EnvironmentFile=-/etc/sysconfig/docker-storage6 ^. }4 d9 J" t5 P$ Y: D& `# x
EnvironmentFile=-/etc/sysconfig/docker-network
/ B" Q9 e; F& bEnvironment=GOTRACEBACK=crash
" p: O4 M! S0 u' [8 @* _: J9 jExecStart=/usr/bin/docker-current daemon \
7 k& Y3 V" W6 g) Q --exec-opt native.cgroupdriver=systemd \' X9 t( e& _, b" K5 [1 T n
$OPTIONS \2 ~2 K; {; b7 O. ?# F
$DOCKER_STORAGE_OPTIONS \
4 N; Y1 b( Y$ D) C $DOCKER_NETWORK_OPTIONS \
# l' _$ Y1 I. E& {. \2 ~ $ADD_REGISTRY \4 @5 l- n+ V# r5 ~+ [+ k
$BLOCK_REGISTRY \
. \, c R N1 s: g& d $INSECURE_REGISTRY \/ V6 y$ {' b. K8 e! [3 Z
--bip=${FLANNEL_SUBNET}
6 v6 s. K1 k# L. z1 J6 D# mLimitNOFILE=1048576' `' m7 i: ]1 T4 K/ ^: T+ X$ q1 J
LimitNPROC=1048576* V$ ]* ?/ p/ r# K
LimitCORE=infinity
5 v& j; t3 C6 ` A$ [+ @4 h, QTimeoutStartSec=0
7 g3 v1 i5 s9 e. n1 H( s9 K) fMountFlags=slave
3 f, a( p: f/ v3 g2 b. e: u$ \Restart=on-abnormal: w$ M( e, _% z4 }
+ \* W3 m2 w/ C7 w8 f7 H& x[Install]5 f. _% b! Z' _: C# N' `, T8 L
WantedBy=multi-user.target
2 p2 J$ S' K* s, n: e5 q- J复制代码, h4 u7 ^! R: ^) q
复制代码& D; R C! A, O% J$ @& a
在执行前增加配置文件3 X2 L- w: ] I; z- N
! w" ~1 Q5 h; ~5 u Q
EnvironmentFile=-/etc/sysconfig/flanneld
& n) z0 o* f$ P. p, ]
; ]0 Z* P5 g6 |EnvironmentFile=-/run/flannel/subnet.env
6 t( ? ~) S& M; O- N, I* e7 \- h
/ A. Y. r' Y$ d& e; G执行命令增加参数 --bip=${FLANNEL_SUBNET}% w y/ ]( W) F0 q+ p
! t) }/ O7 e9 [$ R% V( K4 b
重启docker1 l) y3 V; ?* x( j
8 ]; Z7 h$ p& [0 }. f: z/ i& v' f
systemctl daemon-reload) T2 ]* Z: n# \* K7 T- Z' \( [
systemctl restart docker
/ `3 `8 r/ v& k) k6 B 8 G" Z0 F/ p0 O
! e/ L' n# l7 J0 Y8 Y4 k Q3.6 问题( L3 G2 t1 M( r$ w% `
1、Failed to retrieve network config: 104: Not a directory (/flannel/network/config)
$ {. _$ K% z9 ^1 H/ ?/ A7 I9 z* ~8 Q# G
问题原因:在初次配置的时候,把flannel的配置文件中的etcd-prefix-key配置成了/flannel/network/config,实际上应该是/flannel/network, q5 M7 a( g/ K. f6 b. o* }* F
! h& P! e+ {5 z {1 Y; U! Y) {( z
; U4 k2 j) B* c. j7 Z; ~
- a, h' G5 D% \$ N" F# N; O& H5 ?3 _注意:如上配置需要在集群的所有机器上执行,完成后,上述安装的各个系统的启动顺序应该是:$ R' u* Y' [; H( X
systemctl start etcd
8 ]0 X4 N5 o/ N4 P! x' b3 o0 t# E8 `) |- ~ c
systemctl start flannel
" G2 x% z7 q& ]9 I2 C/ C" d% x( L5 i! u/ h2 c1 W
systemctl start docker5 p' U& B }) g- |2 h( f
9 q. V" ?! O7 a& u6 [7 T* \3 L配置完检查:, a: ^$ ^+ l! ]2 [( J
使用ip a检查当前的网络的准备情况:- [1 j$ N" l/ J
1 U. A- J) h- c! a复制代码
. |$ M" R5 W K) D! a9 f6 p复制代码
1 F% Q c: Z3 c& q$ v[root@localhost system]# ip a
6 M! V7 a9 p1 U0 R: ^# P. ~ Y1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
2 c- p1 ]' O6 E0 W3 L; X link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:009 Z, n/ \" x, P# A7 g) T
inet 127.0.0.1/8 scope host lo# X, \# k# {. X
valid_lft forever preferred_lft forever2 c' t$ g& I& ?
inet6 ::1/128 scope host ' o9 N$ { v) f4 Q
valid_lft forever preferred_lft forever
/ F0 W# W0 z1 [! O& k0 O2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 10009 R. u6 ~5 o6 a
link/ether 00:0c:29:79:cf:e3 brd ff:ff:ff:ff:ff:ff: N/ U: V: p8 q9 ?/ g5 B
inet 192.168.37.130/24 brd 192.168.37.255 scope global dynamic eno16777736
( x, I- {! m3 n3 c valid_lft 1554sec preferred_lft 1554sec5 W, ?3 J7 r6 z# G: \ |
inet6 fe80::20c:29ff:fe79:cfe3/64 scope link
6 X, b: F7 z+ W& @* v valid_lft forever preferred_lft forever
6 G" T& D( M7 Y+ N1 o/ |/ g9: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500+ |5 r- L7 I4 w
link/none
( [" k1 v8 o6 s4 }* A inet 172.17.75.0/16 scope global flannel07 ?6 z# C9 o: O$ z' _
valid_lft forever preferred_lft forever7 Y d5 _! v* T3 x/ l
10: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
+ Q& o/ C+ Z2 a* f3 {! h link/ether 02:42:e3:f0:0d:05 brd ff:ff:ff:ff:ff:ff
) p: b3 h( p# ^3 \& o7 B( L# N8 t1 |" D inet 172.17.75.1/24 scope global docker0$ Z c, h+ U O- I
valid_lft forever preferred_lft forever
( Y$ O2 T8 |% ^$ I$ t复制代码1 ~3 g& p/ h& C4 e0 ^% W5 N
复制代码
) G% M3 v! j9 e2 h' s* ~7 k如果看到到flannel0余docker0的网段相同,则网络配置成功。
8 ]1 w' w P$ A8 @" O* e3 {" C6 L& N1 X; r( C1 D+ [
% t6 O5 J4 c ?3 @
# u. p) W( Y) P! J- i- F5 T4 j在第一次安装完3台机器集群后没有问题,后面过段时间后要加入一个新节点,就碰到很多坑了" I7 y: w" w$ n" j, s
! x2 _* x6 G% T* y* G
如http://www.mamicode.com/info-detail-2194387.html 此文说到的
2 g; Z4 V) O, l9 Y- H b8 d. |( }
- J4 H6 \/ H. V) Y4 B复制代码" R9 ^0 u9 ^1 y/ D! q) E
systemd启动etcd服务的时候出现错误:Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory
3 X2 x& ^: g. I3 A- k' h+ m0 ?* ]- W" u
解决办法:etcd.service服务配置文件中设置的工作目录WorkingDirectory=/var/lib/etcd/必须存在,否则会报以上错误, w7 u& a, ?: b2 B0 ?
, O& k1 w" D' s9 a. V6 e
systemd启动etcd服务的时候出现错误:cannot assign requested address
* k) |& o' m( x% s/ D) ^8 W' a5 Y; T6 N6 l: K) p& Y
解决办法:绑定阿里云的私网IP# L, ]% f' d- K2 B" r' S& z
复制代码" n3 l( Y0 o3 N& K
也有https://blog.csdn.net/u010087956/article/details/53670468
& d0 Z, a. ?8 @8 K0 h6 x! P4 g7 G5 ]4 ^
复制代码
& H0 G: G) o0 D& A7 }! l( L( s通过systemd托管的etcd数据备份还原无法启动服务并且报错
$ P! B; C- `2 Y- k* i. W) Y* ^4 U) z; J5 m+ I# M
error listing data dir: /var/lib/etcd/default.etcd
- x. _3 j; x; q2 E$ g1 Z/ O
) K% z: j8 R) m1 n 1( R* k7 D0 L# |# A9 d
9 L& Y$ g' P S7 ~但是单独执行启动命令可以
1 H/ f1 W) c0 ?2 W! k- W
& x% q6 _( m8 [/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
N$ t2 _3 ~1 c* N
) s6 t( J' y. N 1, g7 K8 F, L0 Y4 h' X' b
" W6 T- g! b+ w/ F. O
主要是还原目录时没有注意权限问题,systemd默认是以etcd用户执行的,这里需要修改default.etcd文件夹权限
' d; {( t* V7 ~! d* \' {0 F' o7 S+ l- i- C
chown etcd:etcd -R /var/lib/etcd/default.etcd7 T1 ] }% S+ |
, K5 Q0 R6 a2 J- {5 M- }$ e
1$ {3 P+ ]& I) S
- [* }; H) r# l, L1 A参考文档
& l) T: m1 ~7 R1 x1 E+ F, ]5 T, d/ B! D" |& j6 k
etcd can’t start due to status=1/FAILURE or status=200/CHDIR · Issue #3331 · coreos/etcd · GitHub
7 C0 T K+ c) O- T复制代码
7 R) o% b* f4 {/ t
7 Q! W" h( ~5 D8 u- o v3 X/ a* e |
|