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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Kubernetes³õ̽ £º×ÜÌå¸ÅÊö¼°Ê¹ÓÃʾÀý
 
×÷Õß ÕÅ¿¡£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-11-18
  2532  次浏览      27
 

KubernetesÊÇGoogle¿ªÔ´µÄÈÝÆ÷¼¯Èº¹ÜÀíϵͳ¡£Ëü¹¹½¨ÓÚdocker¼¼ÊõÖ®ÉÏ£¬ÎªÈÝÆ÷»¯µÄÓ¦ÓÃÌṩ×ÊÔ´µ÷¶È¡¢²¿ÊðÔËÐС¢·þÎñ·¢ÏÖ¡¢À©ÈÝËõÈݵÈÕûÒ»Ì×¹¦ÄÜ£¬±¾ÖÊÉϿɿ´×÷ÊÇ»ùÓÚÈÝÆ÷¼¼ÊõµÄmini-PaaSƽ̨¡£±¾ÎÄÖ¼ÔÚÊáÀíKubernetesµÄ¼Ü¹¹¡¢¸ÅÄî¼°»ù±¾¹¤×÷Á÷£¬²¢ÇÒͨ¹ýÔËÐÐÒ»¸ö¼òµ¥µÄʾÀýÓ¦ÓÃÀ´½éÉÜÈçºÎʹÓÃKubernetes¡£

ÈçÏÂͼËùʾÊÇÎÒ³õ²½ÔĶÁÎĵµºÍÔ´´úÂëÖ®ºóÕûÀíµÄ×ÜÌå¸ÅÀÀ£¬»ù±¾ÉÏ¿ÉÒÔ´ÓÈçÏÂÈý¸öά¶ÈÀ´ÈÏʶKubernetes¡£

²Ù×÷¶ÔÏó

KubernetesÒÔRESTFulÐÎʽ¿ª·Å½Ó¿Ú£¬Óû§¿É²Ù×÷µÄREST¶ÔÏóÓÐÈý¸ö£º

1.pod£ºÊÇKubernetes×î»ù±¾µÄ²¿Êðµ÷¶Èµ¥Ôª£¬¿ÉÒÔ°üº¬container£¬Âß¼­ÉϱíʾijÖÖÓ¦ÓõÄÒ»¸öʵÀý¡£±ÈÈçÒ»¸öwebÕ¾µãÓ¦ÓÃÓÉǰ¶Ë¡¢ºó¶Ë¼°Êý¾Ý¿â¹¹½¨¶ø³É£¬ÕâÈý¸ö×é¼þ½«ÔËÐÐÔÚ¸÷×ÔµÄÈÝÆ÷ÖУ¬ÄÇôÎÒÃÇ¿ÉÒÔ´´½¨°üº¬Èý¸öcontainerµÄpod¡£

2.service£ºÊÇpodµÄ·ÓÉ´úÀí³éÏó£¬ÓÃÓÚ½â¾öpodÖ®¼äµÄ·þÎñ·¢ÏÖÎÊÌâ¡£ÒòΪpodµÄÔËÐÐ״̬¿É¶¯Ì¬±ä»¯(±ÈÈçÇл»»úÆ÷ÁË¡¢ËõÈݹý³ÌÖб»ÖÕÖ¹Á˵È)£¬ËùÒÔ·ÃÎʶ˲»ÄÜÒÔдËÀIPµÄ·½Ê½È¥·ÃÎʸÃpodÌṩµÄ·þÎñ¡£serviceµÄÒýÈëÖ¼ÔÚ±£Ö¤podµÄ¶¯Ì¬±ä»¯¶Ô·ÃÎʶË͸Ã÷£¬·ÃÎʶËÖ»ÐèÒªÖªµÀserviceµÄµØÖ·£¬ÓÉserviceÀ´Ìṩ´úÀí¡£

3.replicationController£ºÊÇpodµÄ¸´ÖƳéÏó£¬ÓÃÓÚ½â¾öpodµÄÀ©ÈÝËõÈÝÎÊÌ⡣ͨ³££¬·Ö²¼Ê½Ó¦ÓÃΪÁËÐÔÄÜ»ò¸ß¿ÉÓÃÐԵĿ¼ÂÇ£¬ÐèÒª¸´Öƶà·Ý×ÊÔ´£¬²¢ÇÒ¸ù¾Ý¸ºÔØÇé¿ö¶¯Ì¬ÉìËõ¡£Í¨¹ýreplicationController£¬ÎÒÃÇ¿ÉÒÔÖ¸¶¨Ò»¸öÓ¦ÓÃÐèÒª¼¸·Ý¸´ÖÆ£¬Kubernetes½«ÎªÃ¿·Ý¸´ÖÆ´´½¨Ò»¸öpod£¬²¢ÇÒ±£Ö¤Êµ¼ÊÔËÐÐpodÊýÁ¿×ÜÊÇÓë¸Ã¸´ÖÆÊýÁ¿ÏàµÈ(ÀýÈ磬µ±Ç°Ä³¸öpodå´»úʱ£¬×Ô¶¯´´½¨ÐµÄpodÀ´Ìæ»»)¡£

¿ÉÒÔ¿´µ½£¬serviceºÍreplicationControllerÖ»Êǽ¨Á¢ÔÚpodÖ®ÉϵijéÏó£¬×îÖÕÊÇÒª×÷ÓÃÓÚpodµÄ£¬ÄÇôËüÃÇÈçºÎ¸úpodÁªÏµÆðÀ´ÄØ£¿Õâ¾ÍÒªÒýÈëlabelµÄ¸ÅÄlabelÆäʵºÜºÃÀí½â£¬¾ÍÊÇΪpod¼ÓÉÏ¿ÉÓÃÓÚËÑË÷»ò¹ØÁªµÄÒ»×ékey/value±êÇ©£¬¶øserviceºÍreplicationControllerÕýÊÇͨ¹ýlabelÀ´Óëpod¹ØÁªµÄ¡£ÈçÏÂͼËùʾ£¬ÓÐÈý¸öpod¶¼ÓÐlabelΪ"app=backend"£¬´´½¨serviceºÍreplicationControllerʱ¿ÉÒÔÖ¸¶¨Í¬ÑùµÄlabel:"app=backend"£¬ÔÙͨ¹ýlabel selector»úÖÆ£¬¾Í½«ËüÃÇÓëÕâÈý¸öpod¹ØÁªÆðÀ´ÁË¡£ÀýÈ磬µ±ÓÐÆäËûfrontend pod·ÃÎʸÃserviceʱ£¬×Ô¶¯»áת·¢µ½ÆäÖеÄÒ»¸öbackend pod¡£

¹¦ÄÜ×é¼þ

ÈçÏÂͼËùʾÊǹٷ½ÎĵµÀïµÄ¼¯Èº¼Ü¹¹Í¼£¬Ò»¸öµäÐ͵Ämaster/slaveÄ£ÐÍ¡£

masterÔËÐÐÈý¸ö×é¼þ£º

1.apiserver£º×÷ΪkubernetesϵͳµÄÈë¿Ú£¬·â×°Á˺ËÐĶÔÏóµÄÔöɾ¸Ä²é²Ù×÷£¬ÒÔRESTFul½Ó¿Ú·½Ê½Ìṩ¸øÍⲿ¿Í»§ºÍÄÚ²¿×é¼þµ÷Óá£Ëüά»¤µÄREST¶ÔÏ󽫳־û¯µ½etcd£¨Ò»¸ö·Ö²¼Ê½Ç¿Ò»ÖÂÐÔµÄkey/value´æ´¢£©¡£

2.scheduler£º¸ºÔð¼¯ÈºµÄ×ÊÔ´µ÷¶È£¬ÎªÐ½¨µÄpod·ÖÅä»úÆ÷¡£Õⲿ·Ö¹¤×÷·Ö³öÀ´±ä³ÉÒ»¸ö×é¼þ£¬Òâζ×Å¿ÉÒԺܷ½±ãµØÌæ»»³ÉÆäËûµÄµ÷¶ÈÆ÷¡£

3.controller-manager£º¸ºÔðÖ´Ðи÷ÖÖ¿ØÖÆÆ÷£¬Ä¿Ç°ÓÐÁ½Àࣺ

endpoint-controller£º¶¨ÆÚ¹ØÁªserviceºÍpod(¹ØÁªÐÅÏ¢ÓÉendpoint¶ÔÏóά»¤)£¬±£Ö¤serviceµ½podµÄÓ³Éä×ÜÊÇ×îеġ£

replication-controller£º¶¨ÆÚ¹ØÁªreplicationControllerºÍpod£¬±£Ö¤replicationController¶¨ÒåµÄ¸´ÖÆÊýÁ¿Óëʵ¼ÊÔËÐÐpodµÄÊýÁ¿×ÜÊÇÒ»Öµġ£

slave(³Æ×÷minion)ÔËÐÐÁ½¸ö×é¼þ£º

1.kubelet£º¸ºÔð¹Ü¿ØdockerÈÝÆ÷£¬ÈçÆô¶¯/Í£Ö¹¡¢¼à¿ØÔËÐÐ״̬µÈ¡£Ëü»á¶¨ÆÚ´Óetcd»ñÈ¡·ÖÅäµ½±¾»úµÄpod£¬²¢¸ù¾ÝpodÐÅÏ¢Æô¶¯»òÍ£Ö¹ÏàÓ¦µÄÈÝÆ÷¡£Í¬Ê±£¬ËüÒ²»á½ÓÊÕapiserverµÄHTTPÇëÇ󣬻㱨podµÄÔËÐÐ״̬¡£

2.proxy£º¸ºÔðΪpodÌṩ´úÀí¡£Ëü»á¶¨ÆÚ´Óetcd»ñÈ¡ËùÓеÄservice£¬²¢¸ù¾ÝserviceÐÅÏ¢´´½¨´úÀí¡£µ±Ä³¸ö¿Í»§podÒª·ÃÎÊÆäËûpodʱ£¬·ÃÎÊÇëÇó»á¾­¹ý±¾»úproxy×öת·¢¡£

¹¤×÷Á÷

ÉÏÎÄÒѾ­Ìáµ½ÁËKubernetesÖÐ×î»ù±¾µÄÈý¸ö²Ù×÷¶ÔÏó£ºpod, replicationController¼°service¡£ ÏÂÃæ·Ö±ð´ÓËüÃǵĶÔÏó´´½¨³ö·¢£¬Í¨¹ýʱÐòͼÀ´ÃèÊöKubernetes¸÷¸ö×é¼þÖ®¼äµÄ½»»¥¼°Æä¹¤×÷Á÷¡£

ʹÓÃʾÀý

×îºó£¬ÈÃÎÒÃǽøÈëʵսģʽ£¬ÕâÀïÅÜÒ»¸ö×î¼òµ¥µÄµ¥»úʾÀý(ËùÓÐ×é¼þÔËÐÐÔÚһ̨»úÆ÷ÉÏ)£¬Ö¼ÔÚ´òͨ»ù±¾Á÷³Ì¡£

´î½¨»·¾³

µÚÒ»²½£¬ÎÒÃÇÐèÒªKuberntes¸÷×é¼þµÄ¶þ½øÖÆ¿ÉÖ´ÐÐÎļþ¡£ÓÐÒÔÏÂÁ½ÖÖ·½Ê½»ñÈ¡£º

ÏÂÔØÔ´´úÂë×Ô¼º±àÒ룺

git clone https://github.com/GoogleCloudPlatform/kubernetes.git  cd kubernetes/build  ./release.sh  

Ö±½ÓÏÂÔØÈ˼ÒÒѾ­±àÒë´ò°üºÃµÄtarÎļþ£º

wget https://storage.googleapis.com/kubernetes/binaries.tar.gz  

×Ô¼º±àÒëÔ´ÂëÐèÒªÏȰ²×°ºÃgolang£¬±àÒëÍêÖ®ºóÔÚkubernetes/_output/release-tarsÎļþ¼ÐÏ¿ÉÒԵõ½´ò°üÎļþ¡£Ö±½ÓÏÂÔØµÄ·½Ê½²»ÐèÒª°²×°ÆäËûÈí¼þ£¬µ«¿ÉÄܵò»µ½×îеİ汾¡£

µÚ¶þ²½£¬ÎÒÃÇ»¹ÐèÒªetcdµÄ¶þ½øÖÆ¿ÉÖ´ÐÐÎļþ£¬Í¨¹ýÈçÏ·½Ê½»ñÈ¡£º

wget https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz 
 tar xvf etcd-v0.4.6-linux-amd64.tar.gz

µÚÈý²½£¬¾Í¿ÉÒÔÆô¶¯¸÷¸ö×é¼þÁË£º

etcd

cd etcd-v0.4.6-linux-amd64  
./etcd

apiserver

./apiserver \  
-address=127.0.0.1 \
-port=8080 \
-portal_net="172.0.0.0/16" \
-etcd_servers=http://127.0.0.1:4001 \
-machines=127.0.0.1 \
-v=3 \
-logtostderr=false \
-log_dir=./log

scheduler

./scheduler -master 127.0.0.1:8080 \  
-v=3 \
-logtostderr=false \
-log_dir=./log

controller-manager

./controller-manager -master 127.0.0.1:8080 \  
-v=3 \
-logtostderr=false \
-log_dir=./log

kubelet

./kubelet \  
-address=127.0.0.1 \
-port=10250 \
-hostname_override=127.0.0.1 \
-etcd_servers=http://127.0.0.1:4001 \
-v=3 \
-logtostderr=false \
-log_dir=./log

´´½¨pod

´îºÃÁËÔËÐл·¾³ºó£¬¾Í¿ÉÒÔÌá½»podÁË¡£Ê×ÏȱàдpodÃèÊöÎļþ£¬±£´æÎªredis.json£º

{  
"id": "redis",
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "redis",
"containers": [{
"name": "redis",
"image": "dockerfile/redis",
"imagePullPolicy": "PullIfNotPresent",
"ports": [{
"containerPort": 6379,
"hostPort": 6379
}]
}]
}
},
"labels": {
"name": "redis"
}
}

È»ºó£¬Í¨¹ýÃüÁîÐй¤¾ßkubecfgÌá½»£º

./kubecfg -c redis.json create /pods 

Ìá½»Íêºó£¬Í¨¹ýkubecfg²é¿´pod״̬£º

# ./kubecfg list /pods  
ID Image(s) Host Labels Status
---------- ---------- ---------- ---------- ----------
redis dockerfile/redis 127.0.0.1/ name=redis Running

StatusÊÇRunning±íʾpodÒѾ­ÔÚÈÝÆ÷ÀïÔËÐÐÆðÀ´ÁË£¬¿ÉÒÔÓÃ"docker ps"ÃüÁîÀ´²é¿´ÈÝÆ÷ÐÅÏ¢£º

# docker ps  
CONTAINER ID        IMAGE                     COMMAND                CREATED      
  STATUS              PORTS                    NAMES  
ae83d1e4b1ec        dockerfile/redis:latest   "redis-server /etc/r   19 seconds ago      Up 19 seconds
    k8s_redis.caa18858_redis.default.etcd_1414684622_1b43fe35 

´´½¨replicationController

{  
"id": "redisController",
"apiVersion": "v1beta1",
"kind": "ReplicationController",
"desiredState": {
"replicas": 1,
"replicaSelector": {"name": "redis"},
"podTemplate": {
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "redisController",
"containers": [{
"name": "redis",
"image": "dockerfile/redis",
"imagePullPolicy": "PullIfNotPresent",
"ports": [{
"containerPort": 6379,
"hostPort": 6379
}]
}]
}
},
"labels": {"name": "redis"}
}},
"labels": {"name": "redis"}
}

È»ºó£¬Í¨¹ýÃüÁîÐй¤¾ßkubecfgÌá½»£º

./kubecfg -c redisController.json create /replicationControllers

Ìá½»Íêºó£¬Í¨¹ýkubecfg²é¿´replicationController״̬£º

# ./kubecfg list /replicationControllers  
ID Image(s) Selector Replicas
---------- ---------- ---------- ----------
redisController dockerfile/redis name=redis 1

ͬʱ£¬1¸öpodÒ²½«±»×Ô¶¯´´½¨³öÀ´£¬¼´Ê¹ÎÒÃǹÊÒâɾ³ý¸Ãpod£¬replicationControllerÒ²½«±£Ö¤´´½¨1¸öÐÂpod¡£

   
2532 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

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

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
Èí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Åàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ