马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
edis和docker这两个词语会自动被修改为首字母大写并链接到知识库,所以在这里先写一遍,后面就不会被改写了。 0、具体操作见 (vmware中搭建k8s),virtulbox也是相同的流程。' }( m6 c! ?1 r* p; B. f1 @' g
1、学习k8s,读的是这本书《KUBERNETES权威指南 从DOCKET到KURBERNETES实践全接触.pdf》 2、这边书刚开始讲的是在单机上搭建一个k8s的hello world,用的是centos7. 于是我也在virtulbox中安装了centos7,并成功运行hello world。 3、然后,开始尝试集群了。在网上找了个教程,比较简单,很快就成功了,kubectl get nodes能看到各node了。 但是,应用跑的不正常,有的节点可以访问,有的节点不可以。而且从不同节点访问,查到的数据不相同,似乎是多个独立的系统。怀疑是iptables中cluster ip的规则有问题。 r% _' l2 N1 e
接着,集群坏了,k8s的基础服务都启动不了。怀疑是不是因为我创建这些虚机时,用的是链接式拷贝,是不是原始的虚机安装了其它软件,导致k8s集群启动不了。 4、删掉重来,用完全拷贝的方式建立虚机。 一切正常,但是在启动redis-master-controller.yaml时,docker中无法建立容器, 用kubectl describe pod redis-master命令排查,发现下拉不了镜像。其实这些镜像已经存在于docker中了(搭建单机k8s时,自动pull的)。只是镜像名字前面多加了docker.io/ 我修改了redis-master-controller.yaml中镜像的名字,仍然pull失败。奇怪。 5、今天定位了网络问题(见virtualbox虚拟机无法上网),网络搞通后,hello world终于正常运行了。 之前的一些疑问,有答案了 1、随便访问哪个node的ip(比如http://192.168.56.251:30001/,http://192.168.56.252:30001/)(http://192.168.56.250:30001/是不行的),都可以访问到服务的(proxy自动转的) 2、在内部时,访问真实端口也是可以的。 [root@centm ~]# kubectl get svc
* E$ ?+ \( T# i+ u- W; xNAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
" n* r+ C- C) A' zfrontend 10.254.218.57 <nodes> 80/TCP 5m
) ~* s! _7 m, t0 Hkubernetes 10.254.0.1 <none> 443/TCP 15d* w# t9 ?) ?3 \4 A
redis-master 10.254.142.174 <none> 6379/TCP 8m
+ j* h" ]6 w$ \$ _" k3 s: wredis-slave 10.254.201.123 <none> 6379/TCP 6m3 U0 Q1 P8 v1 T- {0 |7 p8 ~
curl 10.254.218.57:80 可以通。 ping 10.254.218.57 不通 3、node中多了一个127.0.0.1 ,不知道为什么
7 a, b! ]. _1 o8 e7 G4 s+ X# ] [root@centm ~]# kubectl get nodes; @, t9 X! F+ B/ r3 f: M" k+ j
NAME STATUS AGE
/ u& Q3 S5 n- U2 G. e! i; i& v127.0.0.1 NotReady 15d
" @# z& x- s; Q$ f0 N( x' ncents1 Ready 1d
- l% I6 {# U5 E* X6 S2 C( Z) wcents2 Ready 1d5 b) I) Z4 ]4 `9 K" B7 M
[root@centm ~]# ps -ef|grep kube" V6 ]7 J% i* C- o u6 T3 a* h
kube 578 1 0 Jan20 ? 00:15:55 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=http://127.0.0.1:80806 k7 d0 Y) X( A8 t2 K
kube 588 1 0 Jan20 ? 00:01:09 /usr/bin/kube-scheduler --logtostderr=true --v=0 --master=http://127.0.0.1:80803 e4 B/ w" K1 H- E# Q% A/ |
kube 2079 1 0 Jan20 ? 00:08:11 /usr/bin/kube-apiserver --logtostderr=true --v=0 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --allow-privileged=false --service-cluster-ip-range=10.254.0.0/16 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota7 @$ h1 v- [& Z8 Z- b6 P. p9 ?! r
4、clusterip是一个虚ip,实际是iptables中的几个转发规则。 [root@cents2 ~]# ip a% E- R- }+ B' b$ N
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 10 T& Z# R4 d- |4 ]
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:007 L0 C) f5 [! J! z( E# q
inet 127.0.0.1/8 scope host lo
/ Y) k$ G) n5 u, Z- L valid_lft forever preferred_lft forever3 s$ @9 n2 A) K q6 n2 Q
inet6 ::1/128 scope host
4 E8 \6 L& _ _0 C8 q valid_lft forever preferred_lft forever8 W( `' o9 ^ C$ ?8 h
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
0 t% I, d3 |- f& g) c' k) |9 K/ w link/ether 08:00:27:58:5d:6e brd ff:ff:ff:ff:ff:ff
! P8 Z9 ]7 M$ R5 ] inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3# Y/ n, _3 j. U
valid_lft 82058sec preferred_lft 82058sec
; d8 F- b7 O3 h% [ inet6 fe80::b171:84d0:5173:de63/64 scope link
" c; N9 J8 W4 Y% \% {2 r valid_lft forever preferred_lft forever4 K6 p1 q7 i3 f0 v% Q
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000' |( V/ m/ z3 J" A7 }6 V6 d' V
link/ether 08:00:27:7a:24:14 brd ff:ff:ff:ff:ff:ff9 _, t4 j' v6 z" U5 D
inet 192.168.56.252/24 brd 192.168.56.255 scope global enp0s8
2 r2 c$ _# i( l0 H2 v' ~- C& v valid_lft forever preferred_lft forever; D0 C! @8 u" h9 @1 s4 v. E
inet6 fe80::a00:27ff:fe7a:2414/64 scope link
4 d! ^. @7 w, x7 H" ^ valid_lft forever preferred_lft forever2 ^2 s% N( x' E1 C0 `
4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN
: p4 U. k# t0 r+ t+ Q4 G0 b% g' d link/ether fa:5a:c7:c5:aa:e5 brd ff:ff:ff:ff:ff:ff
+ n8 D$ B- [1 |' T! R2 e inet 172.16.80.0/16 scope global flannel.12 F5 l% _" D& T
valid_lft forever preferred_lft forever( A5 n/ V$ ^! c, L3 S$ v3 `& _+ c
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP
; S0 K$ U, a. {6 `% ]" d link/ether 02:42:72:2f:1f:ae brd ff:ff:ff:ff:ff:ff8 N; G- _2 w( I) |+ b
inet 172.16.80.1/24 scope global docker0
/ S r. \8 V5 o. i valid_lft forever preferred_lft forever3 C/ I# T3 ~+ S* J
inet6 fe80::42:72ff:fe2f:1fae/64 scope link
9 V$ M5 W" s* k* { valid_lft forever preferred_lft forever! g4 S: [1 b) o7 N2 o( |) w
7: vethc56c1d4@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master docker0 state UP
+ L* k8 r& g+ T' b! r) l7 ` link/ether 92:c8:3d:3f:b9:49 brd ff:ff:ff:ff:ff:ff link-netnsid 0
2 A( p- F8 ^, d Z7 _% o% r inet6 fe80::90c8:3dff:fe3f:b949/64 scope link( Y! l4 f/ P( p3 D
valid_lft forever preferred_lft forever
- p z G- R+ B9: vethf961994@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master docker0 state UP: ]& l2 L7 O0 w2 Q
link/ether d6:be:4b:6e:26:81 brd ff:ff:ff:ff:ff:ff link-netnsid 1) R* N% I) @$ z* X% r
inet6 fe80::d4be:4bff:fe6e:2681/64 scope link
2 \' a, t; I; P2 N& v7 m- y' { valid_lft forever preferred_lft forever W B1 o1 ?) _' \5 y' {! A
11: vethe4cd28e@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master docker0 state UP
9 W$ P9 e" U1 T& p Z# Z link/ether ee:55:55:df:4e:50 brd ff:ff:ff:ff:ff:ff link-netnsid 2$ M1 @6 M. r$ S$ K# g, g6 d: J7 y
inet6 fe80::ec55:55ff:fedf:4e50/64 scope link. [. C8 Z/ m8 R" j/ ?* u& o
valid_lft forever preferred_lft forever
0 _) R9 F" D$ N$ K' f
; [2 g+ Q/ J% Y+ n6 x) X( E1 y! m+ @[root@cents2 ~]# iptables-save
0 D6 I0 w/ u d c- C# Generated by iptables-save v1.4.21 on Sun Jan 22 00:41:01 2017 }3 H" q/ F& Q; e; w
*filter
0 @% [1 f, l q4 A:INPUT ACCEPT [27:4324]5 G) x2 Z% w0 N& o3 ]* J6 e
:FORWARD ACCEPT [0:0]: w* a5 C* f Y
:OUTPUT ACCEPT [25:2821]
. q! \- d$ [ _' Z4 E:DOCKER - [0:0]
& \7 F ^+ M; W& l:DOCKER-ISOLATION - [0:0]
4 D/ B9 {4 ~: U l:KUBE-SERVICES - [0:0]- i) F8 b$ H% Q K" u
-A FORWARD -j DOCKER-ISOLATION
9 M. L- m% R: k( l1 n. N" C8 b-A FORWARD -o docker0 -j DOCKER5 R$ ]+ N8 x/ i7 G7 U
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT, C) |. R' a1 o0 y7 V# L6 X
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT& W/ |4 F* s4 O) N9 Q/ K
-A FORWARD -i docker0 -o docker0 -j ACCEPT
, b/ C9 [: L1 `3 F& D% `-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
. j6 {0 z) G" j/ G/ @ A' e* n-A DOCKER-ISOLATION -j RETURN! [) Z* Z+ D# x' \. |; R
COMMIT
$ ~! F3 j Z; e8 m9 W d# Completed on Sun Jan 22 00:41:01 2017" V& S, o8 W4 D! I: \, m, i- r1 P2 ~9 M
# Generated by iptables-save v1.4.21 on Sun Jan 22 00:41:01 2017
6 L+ O4 N) w8 h6 T) c/ K( M*nat
! u' x0 S! h# B; w3 ~8 n7 T- k:PREROUTING ACCEPT [0:0]' s8 j% Q( K7 N
:INPUT ACCEPT [0:0]9 {: v6 M+ z$ j$ ~
:OUTPUT ACCEPT [2:119]' V( }' `% c7 [5 [# v. i
:POSTROUTING ACCEPT [2:119]$ R: R2 s$ ?8 c: K. ]9 s% W
:DOCKER - [0:0]4 u: _3 [+ H# @( P/ d# U* i
:KUBE-MARK-MASQ - [0:0]
# o4 q4 A Z+ z8 q, U. Y T:KUBE-NODEPORTS - [0:0]
6 o( I$ l: h* Z:KUBE-POSTROUTING - [0:0]
# r6 x5 f: F5 e- x:KUBE-SEP-63GTHXGNEQIFF6GY - [0:0]4 m: B% W" t8 E
:KUBE-SEP-77PLGVXVTAKNHL2K - [0:0]/ S7 ^4 W8 B) o3 r
:KUBE-SEP-7R2ESD4YYXMXFEFZ - [0:0]
5 j1 I& _5 h5 Y9 g5 o:KUBE-SEP-GIMIRAR4ZAKGMA2Q - [0:0]! e m8 ], u5 V8 M
:KUBE-SEP-LYGBYJFMWSAWPLXU - [0:0]# J; f }+ M |2 H. L1 u4 y: v7 F6 A3 v N
:KUBE-SEP-Y7WMR7EBCL4N3QJX - [0:0]
- B7 [, I5 W3 S& O+ T+ Z" x$ a:KUBE-SEP-ZDWRYP3AMCRYOGNR - [0:0]
# J( w/ s, b8 ~, H:KUBE-SERVICES - [0:0]5 E4 u! [. d0 ^4 `: F0 e0 B
:KUBE-SVC-7GF4BJM3Z6CMNVML - [0:0]& F/ x4 L9 `- G
:KUBE-SVC-AGR3D4D4FQNH4O33 - [0:0]# S5 n$ f' l. v* ]! k
:KUBE-SVC-GYQQTB6TY565JPRW - [0:0]
2 i* `3 _0 X! [" E- `:KUBE-SVC-NPX46M4PTMTKRN6Y - [0:0]4 o; i1 f* _' @1 t: b2 t6 k+ g
-A PREROUTING -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
7 \( `2 D) n* x7 ?. E9 G-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
$ g$ B* d; i I) H8 r6 ~-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES" a& B' |* h0 ^, k" `) s+ o
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER- y/ v6 y# T" q, ~: r
-A POSTROUTING -s 172.16.80.0/24 ! -o docker0 -j MASQUERADE
- y) t! ?. i$ A/ W) M5 v-A POSTROUTING -m comment --comment "kubernetes postrouting rules" -j KUBE-POSTROUTING
8 e+ m) A- j7 P-A DOCKER -i docker0 -j RETURN
3 y: F; _' Y ^; c-A KUBE-MARK-MASQ -j MARK --set-xmark 0x4000/0x40004 v! x* u* E$ @' {9 |+ [+ T* G
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/frontend:" -m tcp --dport 30001 -j KUBE-MARK-MASQ
% a" |' w) }) p% N( d! d+ Z-A KUBE-NODEPORTS -p tcp -m comment --comment "default/frontend:" -m tcp --dport 30001 -j KUBE-SVC-GYQQTB6TY565JPRW) g: ]& K9 x+ j) l
-A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT" -m mark --mark 0x4000/0x4000 -j MASQUERADE4 O p" O+ Q& O, N. }# i
-A KUBE-SEP-63GTHXGNEQIFF6GY -s 172.16.62.4/32 -m comment --comment "default/frontend:" -j KUBE-MARK-MASQ' t3 x7 x3 B9 D
-A KUBE-SEP-63GTHXGNEQIFF6GY -p tcp -m comment --comment "default/frontend:" -m tcp -j DNAT --to-destination 172.16.62.4:80
& W% }% M1 V8 w-A KUBE-SEP-77PLGVXVTAKNHL2K -s 172.16.80.3/32 -m comment --comment "default/frontend:" -j KUBE-MARK-MASQ
8 P4 y/ [/ u% ]5 J4 {6 [-A KUBE-SEP-77PLGVXVTAKNHL2K -p tcp -m comment --comment "default/frontend:" -m tcp -j DNAT --to-destination 172.16.80.3:80
% T7 x7 x" T% f6 W-A KUBE-SEP-7R2ESD4YYXMXFEFZ -s 172.16.80.2/32 -m comment --comment "default/redis-slave:" -j KUBE-MARK-MASQ4 }9 O' l( n) [* V4 }3 i9 C
-A KUBE-SEP-7R2ESD4YYXMXFEFZ -p tcp -m comment --comment "default/redis-slave:" -m tcp -j DNAT --to-destination 172.16.80.2:6379( u. x) ]9 K, D" @8 c4 ^
-A KUBE-SEP-GIMIRAR4ZAKGMA2Q -s 192.168.56.250/32 -m comment --comment "default/kubernetes:https" -j KUBE-MARK-MASQ
" J8 z# `& {. r* g9 M9 s-A KUBE-SEP-GIMIRAR4ZAKGMA2Q -p tcp -m comment --comment "default/kubernetes:https" -m recent --set --name KUBE-SEP-GIMIRAR4ZAKGMA2Q --mask 255.255.255.255 --rsource -m tcp -j DNAT --to-destination 192.168.56.250:6443* l/ W6 I$ O9 t" {
-A KUBE-SEP-LYGBYJFMWSAWPLXU -s 172.16.62.3/32 -m comment --comment "default/redis-slave:" -j KUBE-MARK-MASQ
% |! F* G1 O9 u% \2 \-A KUBE-SEP-LYGBYJFMWSAWPLXU -p tcp -m comment --comment "default/redis-slave:" -m tcp -j DNAT --to-destination 172.16.62.3:6379
, E) K! ^0 _' t. [6 \( V-A KUBE-SEP-Y7WMR7EBCL4N3QJX -s 172.16.62.2/32 -m comment --comment "default/redis-master:" -j KUBE-MARK-MASQ) j0 E" `+ T) l# h1 H
-A KUBE-SEP-Y7WMR7EBCL4N3QJX -p tcp -m comment --comment "default/redis-master:" -m tcp -j DNAT --to-destination 172.16.62.2:6379! K, d- A) T. w: V. a: O5 c7 Y
-A KUBE-SEP-ZDWRYP3AMCRYOGNR -s 172.16.80.4/32 -m comment --comment "default/frontend:" -j KUBE-MARK-MASQ$ P9 w; x0 f2 E \
-A KUBE-SEP-ZDWRYP3AMCRYOGNR -p tcp -m comment --comment "default/frontend:" -m tcp -j DNAT --to-destination 172.16.80.4:80
, Q# `8 h4 l8 ]2 L-A KUBE-SERVICES -d 10.254.218.57/32 -p tcp -m comment --comment "default/frontend: cluster IP" -m tcp --dport 80 -j KUBE-SVC-GYQQTB6TY565JPRW5 d0 {; s$ k) G
-A KUBE-SERVICES -d 10.254.0.1/32 -p tcp -m comment --comment "default/kubernetes:https cluster IP" -m tcp --dport 443 -j KUBE-SVC-NPX46M4PTMTKRN6Y
: x* h3 L4 f9 k+ C' K-A KUBE-SERVICES -d 10.254.142.174/32 -p tcp -m comment --comment "default/redis-master: cluster IP" -m tcp --dport 6379 -j KUBE-SVC-7GF4BJM3Z6CMNVML' a/ Q$ \/ x8 P, I
-A KUBE-SERVICES -d 10.254.201.123/32 -p tcp -m comment --comment "default/redis-slave: cluster IP" -m tcp --dport 6379 -j KUBE-SVC-AGR3D4D4FQNH4O33
; P' L& m; f* [-A KUBE-SERVICES -m comment --comment "kubernetes service nodeports; NOTE: this must be the last rule in this chain" -m addrtype --dst-type LOCAL -j KUBE-NODEPORTS9 j% l( p; b9 c: w1 I! q/ A D
-A KUBE-SVC-7GF4BJM3Z6CMNVML -m comment --comment "default/redis-master:" -j KUBE-SEP-Y7WMR7EBCL4N3QJX
. x$ r9 J" g. }' X+ w-A KUBE-SVC-AGR3D4D4FQNH4O33 -m comment --comment "default/redis-slave:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-LYGBYJFMWSAWPLXU$ e& J+ Y9 Y3 p$ k
-A KUBE-SVC-AGR3D4D4FQNH4O33 -m comment --comment "default/redis-slave:" -j KUBE-SEP-7R2ESD4YYXMXFEFZ! x/ b; }9 ]1 v( d6 ~- C
-A KUBE-SVC-GYQQTB6TY565JPRW -m comment --comment "default/frontend:" -m statistic --mode random --probability 0.33332999982 -j KUBE-SEP-63GTHXGNEQIFF6GY
2 ]) Z/ x8 H0 e-A KUBE-SVC-GYQQTB6TY565JPRW -m comment --comment "default/frontend:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-77PLGVXVTAKNHL2K8 `2 E! K1 X& p% P3 c/ h4 h
-A KUBE-SVC-GYQQTB6TY565JPRW -m comment --comment "default/frontend:" -j KUBE-SEP-ZDWRYP3AMCRYOGNR1 @, U; y+ ~3 G/ l6 R9 j' w: [% p
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -m recent --rcheck --seconds 180 --reap --name KUBE-SEP-GIMIRAR4ZAKGMA2Q --mask 255.255.255.255 --rsource -j KUBE-SEP-GIMIRAR4ZAKGMA2Q& b+ I) `6 ]9 q' q3 F& @ z' y
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -j KUBE-SEP-GIMIRAR4ZAKGMA2Q
! C' ? G9 W0 l+ c, P: eCOMMIT) Y4 n$ T6 G0 ^5 c$ P) W
# Completed on Sun Jan 22 00:41:01 2017
. H' t6 `- e, Z* [* ~# B; Y7 r9 G& Y
---------------------------------------------------- 尝试了本地卷 [root@centm ~]# cat redis-master-controller_with_volume.yaml& h. k+ l' _8 n3 g C9 `: [7 V
apiVersion: v1
6 U, F. i+ _# a. ^8 h& n: D8 Xkind: ReplicationController & f: W! R+ g2 i9 P9 i& W
metadata: , F0 L* ^6 D/ J+ A& E; ]5 Z: }# V
labels:edis-master
, J) _3 w5 ~, z. Q name: redis-master
3 N3 }9 Y p) ]; I1 |spec:9 F3 q' K _+ S6 B
replicas: 14 w. z, s8 V) i, }% N8 d
selector: I* }" I* g* ?4 p
name: redis-master0 D% H# O+ c% @9 I4 |
template: ; X& p+ }4 m! r: Q
metadata:
* ^2 t7 o% d8 v' n+ p labels:
4 g! K. b2 e: M- Y3 U4 W name: redis-master0 R: r0 K4 Q& Z0 k% {2 O4 ~( H
spec:8 t& x5 ?1 Y- ^; z3 R: t0 q- s
volumes:; ?' C: [0 H6 s) Z
- name: "gf-dir1"9 M6 w% ~+ z/ \2 ?; p/ [
hostPath:
L& r! X% a# g4 p path: "/tmp"
6 T5 E6 u) Q4 y% \ _( \* s
) ~+ e# K1 p& H containers:
! \" {- G& l3 }3 B5 Q - name: master
7 Z3 G( v3 l; L/ b: h+ [: h ports:: docker.io/kubeguide/redis-master:latest
! F* h. x' ^4 O; m - containerPort : 6379 8 t0 z# w( s( X( A& N
volumeMounts:
7 W* p7 f- G- L o u - name: "gf-dir1"# b1 `# ^4 |7 U5 J; w0 a1 c
mountPath: "/gf1" |