Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
CentOS 7ʵսKubernetes²¿Êð
 
×÷ÕߣºÑîÕÂÏÔ À´Ô´£ºinfoq ·¢²¼ÓÚ£º 2015-1-14
  4816  次浏览      28
 

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µÄ¹¤×÷Ô­Àí¡£

   
4816 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ