1. ǰÑÔ
ÉÏÒ»½ÚÎÒÃDzûÊöÁËKubernetesµÄϵͳ¼Ü¹¹£¬Èôó¼Ò¶ÔKubernetesÓÐÒ»¶¨µÄ³õ²½Á˽⣬µ«ÊǾÍÈçºÎʹÓÃKubernetes£¬ Ò²Ðí´ó¼Ò»¹²»ÖªÈçºÎÏÂÊÖ¡£±¾ÎÄ×÷Õß½«´øÁì´ó¼ÒÈçºÎÔÚ±¾µØ²¿Êð¡¢ÅäÖÃKubernetes¼¯ÈºÍøÂç»·¾³ÒÔ¼°Í¨¹ýʵÀýÑÝʾ¿ç»úÆ÷·þÎñ¼äµÄͨÐÅ£¬Ö÷Òª°üÀ¨ÈçÏÂÄÚÈÝ£º
1. ²¿Êð»·¾³½éÉÜ
2. Kubernetes¼¯ÈºÂß¼¼Ü¹¹
3. ²¿ÊðOpen vSwitch¡¢Kubernetes¡¢Etcd×é¼þ
4. ÑÝʾKubernetes¹ÜÀíÈÝÆ÷
2. ²¿Êð»·¾³
1.VMware Workstation£º10.0.3
2.VMware WorkstationÍøÂçģʽ£ºNAT
3.²Ù×÷ϵͳÐÅÏ¢£ºCentOS 7 64λ
4. Open vSwitch°æ±¾ÐÅÏ¢£º2.3.0
5.Kubernetes°æ±¾ÐÅÏ¢£º0.5.2
6.Etcd°æ±¾ÐÅÏ¢£º0.4.6
7.Docker°æ±¾ÐÅÏ¢£º1.3.1
8.·þÎñÆ÷ÐÅÏ¢:
| Role | Hostname | IP Address |
|:---------:|:----------:|:----------: |
|APIServer |kubernetes |192.168.230.3|
|Minion | minion1 |192.168.230.4|
|Minion | minion2 |192.168.230.5|
|
3.Kubernetes¼¯ÈºÂß¼¼Ü¹¹
ÔÚÏêϸ½éÉܲ¿ÊðKubernetes¼¯ÈºÇ°£¬Ïȸø´ó¼Òչʾϼ¯ÈºµÄÂß¼¼Ü¹¹¡£´ÓÏÂͼ¿ÉÖª£¬Õû¸öϵͳ·ÖΪÁ½²¿·Ö£¬µÚÒ»²¿·ÖÊÇKubernetes APIServer£¬ÊÇÕû¸öϵͳµÄºËÐÄ£¬³Ðµ£¼¯ÈºÖÐËùÓÐÈÝÆ÷µÄ¹ÜÀí¹¤×÷£»µÚ¶þ²¿·ÖÊÇminion£¬ÔËÐÐContainer Daemon£¬ÊÇËùÓÐÈÝÆ÷ÆÜÏ¢Ö®µØ£¬Í¬Ê±ÔÚminionÉÏÔËÐÐOpen vSwitch³ÌÐò£¬Í¨¹ýGRE Tunnel¸ºÔðminionÖ®¼äPodµÄÍøÂçͨÐŹ¤×÷¡£

4. ²¿ÊðOpen vSwitch¡¢Kubernetes¡¢Etcd×é¼þ
4.1 °²×°Open vSwitch¼°ÅäÖÃGRE
ΪÁ˽â¾ö¿çminionÖ®¼äPodµÄͨÐÅÎÊÌ⣬ÎÒÃÇÔÚÿ¸öminionÉϰ²×°Open vSwtich£¬²¢Ê¹ÓÃGRE»òÕßVxLANʹµÃ¿ç»úÆ÷Ö®¼äPodÄÜÏ໥ͨÐÅ£¬±¾ÎÄʹÓÃGRE£¬¶øVxLANͨ³£ÓÃÔÚÐèÒª¸ôÀëµÄ´ó¹æÄ£ÍøÂçÖС£¶ÔÓÚOpen vSwitchµÄ¾ßÌå°²×°²½Ö裬¿É²Î¿¼ÕâÆª²©¿Í£¬ÎÒÃÇÔÚÕâÀï¾Í²»ÔÙÏêϸ½éÉܰ²×°²½ÖèÁË¡£°²×°ÍêOpen vSwitchºó£¬½ÓÏÂÀ´±ã½¨Á¢minion1ºÍminion2Ö®¼äµÄËíµÀ¡£Ê×ÏÈÔÚminion1ºÍminion2ÉϽ¨Á¢OVS Bridge,
[root@minion1 ~]# ovs-vsctl add-br obr0 |
½ÓÏÂÀ´½¨Á¢gre£¬²¢½«Ð½¨µÄgre0Ìí¼Óµ½obr0£¬ÔÚminion1ÉÏÖ´ÐÐÈçÏÂÃüÁ
[root@minion1 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.5 |
ÔÚminion2ÉÏÖ´ÐÐ,
[root@minion2 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.4 |
ÖÁ´Ë£¬minion1ºÍminion2Ö®¼äµÄËíµÀÒѾ½¨Á¢¡£È»ºóÎÒÃÇÔÚminion1ºÍminion2ÉÏ´´½¨LinuxÍøÇÅkbr0Ìæ´úDockerĬÈϵÄdocker0£¨ÎÒÃǼÙÉèminion1ºÍminion2¶¼ÒѰ²×°Docker£©£¬ÉèÖÃminion1µÄkbr0µÄµØÖ·Îª172.17.1.1/24£¬ minion2µÄkbr0µÄµØÖ·Îª172.17.2.1/24£¬²¢Ìí¼Óobr0Ϊkbr0µÄ½Ó¿Ú£¬ÒÔÏÂÃüÁîÔÚminion1ºÍminion2ÉÏÖ´ÐС£
[root@minion1 ~]# brctl addbr kbr0 //´´½¨linux bridge
[root@minion1 ~]# brctl addif kbr0 obr0 //Ìí¼Óobr0Ϊkbr0µÄ½Ó¿Ú
[root@minion1 ~]# ip link set dev docker0 down //ÉèÖÃdocker0Ϊdown״̬
[root@minion1 ~]# ip link del dev docker0 //ɾ³ýdocker0 |
ΪÁËʹн¨µÄkbr0ÔÚÿ´ÎÏµÍ³ÖØÆôºóÈÎÈ»ÓÐЧ£¬ÎÒÃÇÔÚ/etc/sysconfig/network-scripts/Ŀ¼ÏÂн¨minion1µÄifcfg-kbr0ÈçÏ£º£¬
DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no |
ͬÑùÔÚminion2ÉÏн¨ifcfg-kbr0£¬Ö»ÐèÐÞ¸ÄipaddrΪ172.17.2.1ºÍgatewayΪ172.17.2.0¼´¿É£¬È»ºóÖ´ÐÐsystemctl restart networkÖØÆôÏµÍ³ÍøÂç·þÎñ£¬ÄãÄÜÔÚminion1ºÍminion2ÉÏ·¢ÏÖkbr0¶¼ÉèÖÃÁËÏàÓ¦µÄIPµØÖ·¡£ÎªÁËÑéÖ¤ÎÒÃÇ´´½¨µÄËíµÀÊÇ·ñÄÜͨÐÅ£¬ÎÒÃÇÔÚminion1ºÍminion2ÉÏÏ໥ping¶Ô·½kbr0µÄIPµØÖ·£¬´ÓÏÂÃæµÄ½á¹û·¢ÏÖÊDz»Í¨µÄ£¬¾²éÕÒÕâÊÇÒòΪÔÚminion1ºÍminion2ÉÏȱÉÙ·ÃÎÊ172.17.1.1ºÍ172.17.2.1µÄ·ÓÉ£¬Òò´ËÎÒÃÇÐèÒªÌí¼Ó·Óɱ£Ö¤±Ë´ËÖ®¼äÄÜͨÐÅ¡£
[root@minion1 network-scripts]# ping 172.17.2.1
PING 172.17.2.1 (172.17.2.1) 56(84) bytes of data.
^C
--- 172.17.2.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
[root@minion2 ~]# ping 172.17.1.1
PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
^C
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms |
ÓÉÓÚͨ¹ýip route addÌí¼ÓµÄ·ÓÉ»áÔÚÏ´ÎÏµÍ³ÖØÆôºóʧЧ£¬Îª´ËÎÒÃÇÔÚ/etc/sysconfig/network-scriptsĿ¼ÏÂн¨Ò»¸öÎļþroute-eth0´æ´¢Â·ÓÉ£¬ÕâÀïÐèҪעÒâµÄÊÇroute-eth0ºÍifcfg-eth0µÄºÚÌ岿·Ö±ØÐë±£³ÖÒ»Ö£¬·ñÔò²»Äܹ¤×÷£¬ÕâÑùÌí¼ÓµÄ·ÓÉÔÚÏ´ÎÖØÆôºó²»»áʧЧ¡£ÎªÁ˱£Ö¤Á½Ì¨minionµÄkbr0ÄÜÏ໥ͨÐÅ£¬ÎÒÃÇÔÚminion1µÄroute-eth0ÀïÌí¼Ó·ÓÉ172.17.2.0/24 via 192.168.230.5 dev eno16777736£¬eno16777736ÊÇminion1µÄÍø¿¨£¬Í¬ÑùÔÚminion2µÄroute-eth0ÀïÌí¼Ó·ÓÉ172.17.1.0/24 via 192.168.230.4 dev eno16777736¡£ÖØÆôÍøÂç·þÎñºóÔÙ´ÎÑéÖ¤£¬±Ë´Ëkbr0µÄµØÖ·¿ÉÒÔpingͨ£¬È磺
[root@minion2 network-scripts]# ping 172.17.1.1
PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data.
64 bytes from 172.17.1.1: icmp_seq=1 ttl=64 time=2.49 ms
64 bytes from 172.17.1.1: icmp_seq=2 ttl=64 time=0.512 ms
^C
--- 172.17.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.512/1.505/2.498/0.993 ms |
µ½ÏÖÔÚÎÒÃÇÒѾ½¨Á¢ÁËÁ½minionÖ®¼äµÄËíµÀ£¬¶øÇÒÄÜÕýÈ·µÄ¹¤×÷¡£ÏÂÃæÎÒÃǽ«½éÉÜÈçºÎ°²×°Kubernetes APIServer¼°kubelet¡¢proxyµÈ·þÎñ¡£
4.2 °²×°Kubernetes APIServer
ÔÚ°²×°APIServer֮ǰ£¬ÎÒÃÇÏÈÏÂÔØKubernetes¼°Etcd£¬×öһЩ׼±¸¹¤×÷¡£ÔÚkubernetesÉϵľßÌå²Ù×÷ÈçÏ£º
[root@kubernetes ~]# mkdir /tmp/kubernetes
[root@kubernetes ~]# cd /tmp/kubernetes/
[root@kubernetes kubernetes]# wget https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.5.2/kubernetes.tar.gz
[root@kubernetes kubernetes]# wget https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz |
È»ºó½âѹÏÂÔØµÄkubernetesºÍetcd°ü£¬²¢ÔÚkubernetes¡¢minion1¡¢minion2ÉÏ´´½¨Ä¿Â¼/opt/kubernetes/bin£¬
[root@kubernetes kubernetes]# mkdir -p /opt/kubernetes/bin
[root@kubernetes kubernetes]# tar xf kubernetes.tar.gz
[root@kubernetes kubernetes]# tar xf etcd-v0.4.6-linux-amd64.tar.gz
[root@kubernetes kubernetes]# cd ~/kubernetes/server
[root@kubernetes server]# tar xf kubernetes-server-linux-amd64.tar.gz
[root@kubernetes kubernetes]# /tmp/kubernetes/kubernetes/server/kubernetes/server/bin |
¸´ÖÆkube-apiserver£¬kube-controller-manager£¬kube-scheduler£¬kubecfgµ½kubernetesµÄ/opt/kubernetes/binĿ¼Ï£¬¶økubelet£¬kube-proxyÔò¸´ÖƵ½minion1ºÍminion2µÄ/opt/kubernetes/bin£¬²¢È·±£¶¼ÊÇ¿ÉÖ´Ðеġ£
[root@kubernetes amd64]# cp kube-apiserver kube-controller-manager kubecfg kube-scheduler /opt/kubernetes/bin
[root@kubernetes amd64]# scp kube-proxy kubelet root@192.168.230.4:/opt/kubernetes/bin
[root@kubernetes amd64]# scp kube-proxy kubelet root@192.168.230.5:/opt/kubernetes/bin |
ΪÁ˼òµ¥ÎÒÃÇÖ»²¿Êðһ̨etcd·þÎñÆ÷£¬Èç¹ûÐèÒª²¿ÊðetcdµÄ¼¯Èº£¬Çë²Î¿¼¹Ù·½Îĵµ£¬ÔÚ±¾ÎÄÖн«Æä¸úKubernetes APIServer²¿Êðͬһ̨»úÆ÷ÉÏ£¬¶øÇÒ½«etcd·ÅÖÃÔÚ/opt/kubernetes/binÏ£¬etcdctl¸úectdͬһĿ¼¡£
[root@kubernetes kubernetes]# cd /tmp/kubernetes/etcd-v0.4.6-linux-amd64
[root@kubernetes etcd-v0.4.6-linux-amd64]# cp etcd etcdctl /opt/kubernetes/bin |
Ðè×¢ÒâµÄÊÇkubernetesºÍminionÉÏ/opt/kubernetes/binĿ¼ÏµÄÎļþ¶¼±ØÐëÊÇ¿ÉÖ´Ðеġ£µ½Ä¿Ç°£¬ÎÒÃÇ×¼±¸¹¤×÷ÒѾ²î²»¶à£¬ÏÖÔÚ¿ªÊ¼¸øapiserver£¬controller-manager£¬scheduler£¬etcdÅäÖÃunitÎļþ¡£Ê×ÏÈÎÒÃÇÓÃÈçϽű¾etcd.shÅäÖÃetcdµÄunitÎļþ£¬
#!/bin/sh
ETCD_PEER_ADDR=192.168.230.3:7001
ETCD_ADDR=192.168.230.3:4001
ETCD_DATA_DIR=/var/lib/etcd
ETCD_NAME=kubernetes
! test -d $ETCD_DATA_DIR && mkdir -p $ETCD_DATA_DIR
cat </usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
[Service]
ExecStart=/opt/kubernetes/bin/etcd \\
-peer-addr=$ETCD_PEER_ADDR \\
-addr=$ETCD_ADDR \\
-data-dir=$ETCD_DATA_DIR \\
-name=$ETCD_NAME \\
-bind-addr=0.0.0.0
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd |
¶ÔʣϵÄapiserver,controller-manager,schedulerµÄunitÎļþÅäÖõĽű¾£¬¿ÉÒÔÔÚgithub ÉÏGetStartingKubernetesÕÒµ½£¬Ôڴ˾Ͳ»Ò»Ò»Áо١£ÔËÐÐÏàÓ¦µÄ½Å±¾ºó£¬ÔÚAPIServerÉÏetcd, apiserver, controller-manager, scheduler·þÎñ¾ÍÄÜÕý³£ÔËÐС£
4.3 °²×°Kubernetes Kubelet¼°Proxy
¸ù¾ÝKubernetesµÄÉè¼Æ¼Ü¹¹£¬ÐèÒªÔÚminionÉϲ¿Êðdocker, kubelet, kube-proxy£¬ÔÚ4.2½Ú²¿ÊðAPIServerʱ£¬ÎÒÃÇÒѾ½«kubeletºÍkube-proxyÒѾ·Ö·¢µ½Á½minionÉÏ£¬ËùÒÔÖ»ÐèÅäÖÃdocker,kubelet,proxyµÄunitÎļþ£¬È»ºóÆô¶¯·þÎñ¾Í¼´¿É£¬¾ßÌåÅäÖüûGetStartingKubernetes¡££¬
5. ÑÝʾKubernetes¹ÜÀíÈÝÆ÷
ΪÁË·½±ã£¬ÎÒÃÇʹÓÃKubernetesÌṩµÄÀý×ÓGuestbookÀ´ÑÝʾKubernetes¹ÜÀí¿ç»úÆ÷ÔËÐеÄÈÝÆ÷£¬ÏÂÃæÎÒÃǸù¾ÝGuestbookµÄ²½Öè´´½¨ÈÝÆ÷¼°·þÎñ¡£ÔÚÏÂÃæµÄ¹ý³ÌÖÐÈç¹ûÊǵÚÒ»´Î²Ù×÷£¬¿ÉÄÜ»áÓÐÒ»¶¨µÄµÈ´ýʱ¼ä£¬×´Ì¬´¦ÓÚpending£¬ÕâÊÇÒòΪµÚÒ»´ÎÏÂÔØimagesÐèÒªÒ»¶Îʱ¼ä¡£
5.1 ´´½¨redis-master PodºÍredis-master·þÎñ
[root@kubernetes ~]# cd /tmp/kubernetes/kubernetes/examples/guestbook
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 -c redis-master.json create pods
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 -c redis-master-service.json create services |
Íê³ÉÉÏÃæµÄ²Ù×÷ºó£¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÈçÏÂredis-master Pod±»µ÷¶Èµ½192.168.230.4¡£
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list pods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
redis-master dockerfile/redis 192.168.230.4/ name=redis-master Running |
µ«³ýÁË·¢ÏÖredis-masterµÄ·þÎñÖ®Í⣬»¹ÓÐÁ½¸öKubernetesϵͳĬÈϵķþÎñkubernetes-roºÍkubernetes¡£¶øÇÒÎÒÃÇ¿ÉÒÔ¿´µ½Ã¿¸ö·þÎñ¶¼ÓÐÒ»¸ö·þÎñIP¼°ÏàÓ¦µÄ¶Ë¿Ú£¬¶ÔÓÚ·þÎñIP£¬ÊÇÒ»¸öÐéÄâµØÖ·£¬¸ù¾ÝapiserverµÄportal_netÑ¡ÏîÉèÖõÄCIDR±íʾµÄIPµØÖ·¶ÎÀ´Ñ¡È¡£¬ÔÚÎÒÃǵļ¯ÈºÖÐÉèÖÃΪ10.10.10.0/24¡£Îª´Ëÿд´½¨Ò»¸ö·þÎñ£¬apiserver¶¼»áÔÚÕâ¸öµØÖ·¶ÎÖÐËæ»úÑ¡ÔñÒ»¸öIP×÷Ϊ¸Ã·þÎñµÄIPµØÖ·£¬¶ø¶Ë¿ÚÊÇÊÂÏÈÈ·¶¨µÄ¡£¶Ôredis-master·þÎñ£¬Æä·þÎñµØÖ·Îª10.10.10.206£¬¶Ë¿ÚΪ6379¡£
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list services
Name Labels Selector IP Port
---------- ---------- ---------- ---------- ----------
kubernetes-ro component=apiserver,provider=kubernetes 10.10.10.207 80
redis-master name=redis-master name=redis-master 10.10.10.206 6379
kubernetes component=apiserver,provider=kubernetes 10.10.10.161 443 |
5.2 ´´½¨redis-slave PodºÍredis-slave·þÎñ
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 -c redis-slave-controller.json create replicationControllers
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 -c redis-slave-service.json create services |
È»ºóͨ¹ýlistÃüÁî¿É֪н¨µÄredis-slave Pod¸ù¾Ýµ÷¶ÈËã·¨µ÷¶Èµ½Á½Ì¨minionÉÏ£¬·þÎñIPΪ10.10.10.92£¬¶Ë¿ÚΪ6379
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list pods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
redis-master dockerfile/redis 192.168.230.4/ name=redis-master Running
8c0ddbda-728c-11e4-8233-000c297db206 brendanburns/redis-slave 192.168.230.5/ name=redisslave,uses=redis-master Running
8c0e1430-728c-11e4-8233-000c297db206 brendanburns/redis-slave 192.168.230.4/ name=redisslave,uses=redis-master Running
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list services
Name Labels Selector IP Port
---------- ---------- ---------- ---------- ----------
redisslave name=redisslave name=redisslave 10.10.10.92 6379
kubernetes component=apiserver,provider=kubernetes 10.10.10.161 443
kubernetes-ro component=apiserver,provider=kubernetes 10.10.10.207 80
redis-master name=redis-master name=redis-master 10.10.10.206 6379 |
|
5.3 ´´½¨Frontend PodºÍFrontend·þÎñ
ÔÚ´´½¨Ö®Ç°ÐÞ¸Äfrontend-controller.jsonµÄReplicasÊýÁ¿Îª2£¬ÕâÊÇÒòΪÎÒÃǵļ¯ÈºÖÐÖ»ÓÐ2̨minion£¬Èç¹û°´ÕÕfrontend-controller.jsonµÄReplicasĬÈÏÖµ3£¬ÄǻᵼÖÂÓÐ2¸öPod»áµ÷¶Èµ½Í¬Ò»Ì¨minionÉÏ£¬²úÉú¶Ë¿Ú³åÍ»£¬ÓÐÒ»¸öPod»áÒ»Ö±´¦ÓÚpending״̬£¬²»Äܱ»µ÷¶È¡£
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 -c frontend-controller.json create replicationControllers
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 -c frontend-service.json create services |
ͨ¹ý²é¿´¿ÉÖªFrontend PodÒ²±»µ÷¶Èµ½Á½Ì¨minion£¬·þÎñIPΪ10.10.10.220£¬¶Ë¿ÚÊÇ80¡£
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list pods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
redis-master dockerfile/redis 192.168.230.4/ name=redis-master Running
8c0ddbda-728c-11e4-8233-000c297db206 brendanburns/redis-slave 192.168.230.5/ name=redisslave,uses=redis-master Running
8c0e1430-728c-11e4-8233-000c297db206 brendanburns/redis-slave 192.168.230.4/ name=redisslave,uses=redis-master Running
a880b119-7295-11e4-8233-000c297db206 brendanburns/php-redis 192.168.230.4/ name=frontend,uses=redisslave,redis-master Running
a881674d-7295-11e4-8233-000c297db206 brendanburns/php-redis 192.168.230.5/ name=frontend,uses=redisslave,redis-master Running
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list services
Name Labels Selector IP Port
---------- ---------- ---------- ---------- ----------
kubernetes-ro component=apiserver,provider=kubernetes 10.10.10.207 80
redis-master name=redis-master name=redis-master 10.10.10.206 6379
redisslave name=redisslave name=redisslave 10.10.10.92 6379
frontend name=frontend name=frontend 10.10.10.220 80
kubernetes component=apiserver,provider=kubernetes 10.10.10.161 443 |
³ý´ËÖ®Í⣬Äã¿ÉÒÔɾ³ýPod¡¢Service¼°¸üÐÂReplicationControllerµÄReplicasÊýÁ¿µÈ²Ù×÷£¬Èçɾ³ýFrontend·þÎñ£º
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 delete services/frontend
Status
----------
Success |
»¹¿ÉÒÔ¸üÐÂReplicationControllerµÄReplicasµÄÊýÁ¿£¬ÏÂÃæÊǸüÐÂReplicas֮ǰReplicationControllerµÄÐÅÏ¢¡£
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list replicationControllers
Name Image(s) Selector Replicas
---------- ---------- ---------- ----------
redisSlaveController brendanburns/redis-slave name=redisslave 2
frontendController brendanburns/php-redis name=frontend 2 |
ÏÖÔÚÎÒÃÇÏë°ÑfrontendControllerµÄReplicas¸üÐÂΪ1£¬ÔòÕâÐÐÈçÏÂÃüÁȻºóÔÙͨ¹ýÉÏÃæµÄÃüÁî²é¿´frontendControllerÐÅÏ¢£¬·¢ÏÖReplicasÒѱäΪ1¡£
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 resize frontendController 1
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list replicationControllers
Name Image(s) Selector Replicas
---------- ---------- ---------- ----------
redisSlaveController brendanburns/redis-slave name=redisslave 2
frontendController brendanburns/php-redis name=frontend 1 |
5.4 ÑÝʾ¿ç»úÆ÷·þÎñͨÐÅ
Íê³ÉÉÏÃæµÄ²Ù×÷ºó£¬ÎÒÃÇÀ´¿´µ±Ç°Kubernetes¼¯ÈºÖÐÔËÐÐ×ŵÄPodÐÅÏ¢¡£
[root@kubernetes guestbook]# kubecfg -h http://192.168.230.3:8080 list pods
Name Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
a881674d-7295-11e4-8233-000c297db206 brendanburns/php-redis 192.168.230.5/ name=frontend,uses=redisslave,redis-master Running
redis-master dockerfile/redis 192.168.230.4/ name=redis-master Running
8c0ddbda-728c-11e4-8233-000c297db206 brendanburns/redis-slave 192.168.230.5/ name=redisslave,uses=redis-master Running
8c0e1430-728c-11e4-8233-000c297db206 brendanburns/redis-slave 192.168.230.4/ name=redisslave,uses=redis-master Running |
ͨ¹ýÉÏÃæµÄ½á¹û¿ÉÖªµ±Ç°Ìṩǰ¶Ë·þÎñµÄPHPºÍÌṩÊý¾Ý´æ´¢µÄºó¶Ë·þÎñRedis masterµÄPod·Ö±ðÔËÐÐÔÚ192.168.230.5ºÍ192.168.230.4ÉÏ£¬¼´ÈÝÆ÷ÔËÐÐÔÚ²»Í¬Ö÷»úÉÏ£¬»¹ÓÐRedis slaveÒ²ÔËÐÐÔÚÁ½Ì¨²»Í¬µÄÖ÷»úÉÏ£¬Ëü»á´ÓRedis masterͬ²½Ç°¶ËдÈëRedis masterµÄÊý¾Ý¡£ÏÂÃæÎÒÃÇ´ÓÁ½·½ÃæÑéÖ¤KubernetesÄÜÌṩ¿ç»úÆ÷¼äÈÝÆ÷µÄͨÐÅ£º
ÔÚä¯ÀÀÆ÷´ò¿ªhttp://${IPAddress}:8000£¬IPAddressΪPHPÈÝÆ÷ÔËÐеÄminionµÄIPµØÖ·£¬Æä±©Â©µÄ¶Ë¿ÚΪ8000£¬ÕâÀïIP_AddressΪ192.168.230.5¡£´ò¿ªä¯ÀÀÆ÷»áÏÔʾÈçÏÂÐÅÏ¢£º

ÓÉÓÚǰ¶ËPHPÈÝÆ÷ºÍºó¶ËRedis masterÈÝÆ÷·Ö±ðÔÚÁ½Ì¨minionÉÏ£¬Òò´ËPHPÔÚ·ÃÎÊRedis master·þÎñʱһ¶¨µÃ¿ç»úÆ÷ͨÐÅ£¬¿É¼ûKubernetesµÄʵÏÖ·½Ê½±ÜÃâÁËÓÃlinkÖ»ÄÜÔÚͬһÖ÷»úÉÏʵÏÖÈÝÆ÷¼äͨÐŵÄȱÏÝ£¬¶ÔÓÚKubernetes¿ç»úÆ÷ͨÐŵÄʵÏÖ·½·¨£¬ÒÔºóÎÒ»áÏêϸ½éÉÜ¡£
´ÓÉÏÃæµÄ½á¹û£¬¿ÉµÃÖªÒѾʵÏÖÁË¿ç»úÆ÷µÄͨÐÅ£¬ÏÖÔÚÎÒÃÇ´Óºó¶ËÊý¾Ý²ãÑéÖ¤²»Í¬»úÆ÷ÈÝÆ÷¼äµÄͨÐÅ¡£¸ù¾ÝÉÏÃæµÄÊä³ö½á¹û·¢ÏÖRedis slaveºÍRedis master·Ö±ðµ÷¶Èµ½Á½Ì¨²»Í¬µÄminionÉÏ£¬ÔÚ192.168.230.4Ö÷»úÉÏÖ´ÐÐdocker exec -ti c41711cc8971 /bin/sh£¬c41711cc8971ÊÇRedis masterµÄÈÝÆ÷ID£¬½øÈëÈÝÆ÷ºóͨ¹ýredis-cliÃüÁî²é¿´´Óä¯ÀÀÆ÷ÊäÈëµÄÐÅÏ¢ÈçÏ£º

Èç¹ûÎÒÃÇÔÚ192.168.230.5ÉÏÔËÐеÄRedis slaveÈÝÆ÷Àï²éµ½¸úRedis masterÈÝÆ÷ÀïÏàͬµÄÐÅÏ¢£¬ÄÇ˵Ã÷Redis masterºÍRedis slaveÖ®¼äµÄÊý¾Ýͬ²½Õý³£¹¤×÷£¬ÏÂÃæÊÇ´Ó192.168.230.5ÉÏÔËÐеÄRedis slaveÈÝÆ÷²éѯµ½µÄÐÅÏ¢£º

Óɴ˿ɼûRedis masterºÍRedis slaveÖ®¼äÊý¾Ýͬ²½Õý³££¬OVS GREËíµÀ¼¼ÊõʹµÃ¿ç»úÆ÷¼äÈÝÆ÷Õý³£Í¨ÐÅ¡£
6. ½áÂÛ
±¾ÎÄÖ÷Òª½éÉÜÈçºÎÔÚ±¾µØ»·¾³²¿ÊðKubernetes¼¯ÈººÍÑÝʾÈçºÎͨ¹ýKubernetes¹ÜÀí¼¯ÈºÖÐÔËÐеÄÈÝÆ÷£¬²¢Í¨¹ýOVS¹ÜÀí¼¯Èº²»Í¬minionµÄPodÖ®¼äµÄÍøÂçͨÐÅ¡£½ÓÏÂÀ´»á¶ÔKubernetes¸÷¸ö×é¼þÔ´Âë½øÐÐÏêϸ·ÖÎö£¬²ûÊöKubernetesµÄ¹¤×÷ÔÀí¡£
|