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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
KubernetesÓ¦Óò¿ÊðÄ£ÐͽâÎö£¨²¿ÊðÆª£©
 
×÷Õß ¹¨ÓÀÉú À´Ô´£ºCSDN »ðÁú¹ûÈí¼þ  ·¢²¼ÓÚ 2015-06-16
  3108  次浏览      30
 

ÕªÒª£ºÔÚ½éÉܲ¿Êð֮ǰÐèÒªÁ˽âµÄÔ­ÀíºÍ¸ÅÄîÖ®ºó£¬±¾ÎÄÒÔÒ»¸ö¼òµ¥µÄnginx·þÎñÀ´Õ¹Ê¾Á˸´ÖÆÆ÷ºÍServiceµÄʹÓã¬Ìرðͨ¹ý¶ÔServiceµÄcluster IPºÍNodePortµÄ·ÖÎö£¬Ê¹µÃ¶ÁÕßÄܹ»Á˽âÕâ¸öÄ£ÐÍÖеÄÍøÂçÌØÐÔ¡£

¡¾±àÕß°´¡¿Kubernetes¿ÉÓÃÀ´¹ÜÀíLinuxÈÝÆ÷¼¯Èº£¬¼ÓËÙ¿ª·¢ºÍ¼ò»¯ÔËά£¨¼´DevOps£©¡£µ«Ä¿Ç°ÍøÂçÉϹØÓÚKubernetesµÄÎÄÕ½éÉÜÐÔÔ¶¶àÓÚʵ¼ÊʹÓᣱ¾ÏµÁÐÎÄÕÂ×ÅÑÛÓÚʵ¼Ê²¿Ê𣬴øÄú¿ìËÙÕÆÎÕKubernetes¡£ÔÚ½éÉܲ¿Êð֮ǰÐèÒªÁ˽âµÄÔ­ÀíºÍ¸ÅÄîÖ®ºó£¬×÷ÕßÔÚ±¾ÎÄÖÐÒÔÒ»¸ö¼òµ¥µÄnginx·þÎñÀ´Õ¹Ê¾Á˸´ÖÆÆ÷ºÍServiceµÄʹÓã¬Ìرðͨ¹ý¶ÔServiceµÄcluster IPºÍNodePortµÄ·ÖÎö£¬Ê¹µÃ¶ÁÕßÄܹ»Á˽âÕâ¸öÄ£ÐÍÖеÄÍøÂçÌØÐÔ¡£

Ò»¸ö¼òµ¥µÄÓ¦ÓÃ

½²ÁËÕâô¶àµÄÔ­ÀíºÍ¸ÅÄ±¾ÕÂÎÒÃǾͲ¿ÊðÒ»¸ö¼òµ¥Ó¦ÓÃÀ´¸ÐÊÜÒ»ÏÂKubernetesµÄ²¿ÊðÄ£ÐÍ¡£

²¿ÊðKubernetes¼¯Èº

ÔÚ kubernetes githubÕ¾µã ÉÏÓÐÊýÊ®ÖÖÕë¶Ô¸÷ÖÖ»·¾³µÄ²¿ÊðÎĵµ£¬±¾ÎÄÑ¡Ôñ»ùÓÚubuntuµÄ¼¯Èº²¿Êð·½°¸¡£ÔÚûÓÐʹÓñ¾µØdocker¾µÏñµÄÇé¿öÏ£¬ÔÚ²¿Êð¹ý³ÌÖÐÐèҪȷ±£Äܹ»·ÃÎÊÕ¾µãgcr.io¡£

»ùÓÚ UbuntuµÄ¼¯Èº²¿Êð·½°¸Îĵµ дµÃ±È½ÏÏêϸ£¬°´ÕÕËüµÄ²½Ö輸ºõ²»»á³ö´í¡£ÔÚ½øÐÐÕæÕýµÄ²¿Êð֮ǰ£¬Ò»¶¨ÒªÈ·±££º

  1. ËùÓеĽڵ㰲װÁËdocker version 1.2+ ºÍ bridge-utils
  2. Èç¹ûûÓб¾µØµÄdocker registry, Ҫȷ±£½ÚµãÄÜ·ÃÎÊ»¥ÁªÍøgcr.io
  3. È·±£¹ÜÀí½ÚµãÄܹ»ssh ·ÃÎÊËùÓнڵ㡣±ÈÈçssh gongysh@192.168.0.201 ls

ÕâÀïÎÒÃǼ¯Èº½«²ÉÓÃÏÂͼÏÔʾµÄ½á¹¹¡£ÎÒÃǽ«ÔÚ¹ÜÀí½ÚµãÉÏÔËÐм¯Èº¹ÜÀíÃüÁî¡£ÎÒÃǽ«ÓÐÒ»¸ö·þÎñºÍ´úÀí»ìºÏµÄ½Úµã£¬»¹ÓÐÁ½¸ö´¿µÄ´úÀí½Úµã¡£

Ê×ÏÈÎÒÃÇÒªÏÂÔØkubernetesµÄ´úÂëµ½¹ÜÀí½ÚµãÉÏ£º

$ git clone https://github.com/GoogleCloudPlatform/kubernetes.git

È»ºó½øÐб¾µØ¹¹½¨£º

cd kubernetes
./build/run.sh hack/build-do.sh

ÐÞ¸Äconfig-default.sh¶¨Ò弯Ⱥ£¬±¾ÎÄʹÓõö¹Ø¼üÅäÖÃÈçÏÂ:

gongysh@fedora20:~/git/kubernetes/cluster/ubuntu$ cat config-default.sh
#!/bin/bash
# Define all your cluster nodes, MASTER node comes first"
# And separated with blank space like <user_1@ip_1> <user_2@ip_2> <user_3@ip_3>
export nodes="gongysh@192.168.0.201 gongysh@192.168.0.202 gongysh@192.168.0.203"
# Define all your nodes role: a(master) or i(minion)
or ai(both master and minion), must be the order same
export roles=("ai" "i" "i")
# Define minion numbers
export NUM_MINIONS=${NUM_MINIONS:-3}
# define the IP range used for service portal.
# according to rfc 1918
ref: https://tools.ietf.org/html/rfc1918 choose a private ip range here.
export SERVICE_CLUSTER_IP_RANGE=192.168.3.0/24
# define the IP range used for flannel overlay network,
should not conflict with above SERVICE_CLUSTER_IP_RANGE range
export FLANNEL_NET=172.16.0.0/16
....

×îºóÔËÐм¯Èº¹¹½¨ÃüÁ

$ cd cluster
$ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

µ±Äã¿´µ½£º

Kubernetes cluster is running.  The master is running at: 

http://192.168.0.201

... calling validate-cluster
Found 3 nodes.
1 NAME LABELS STATUS
2 192.168.0.201 <none> Ready
3 192.168.0.202 <none> Ready
4 192.168.0.203 <none> Ready
Validate output:

Cluster validation succeeded
Done, listing cluster services:

Kubernetes master is running at http://192.168.0.201:8080

±íÃ÷¼¯Èº¹¹½¨³É¹¦¡£

²¿ÊðnginxÓ¦ÓÃ

ÎÒÃÇÒÔÏÂÃæµÄͼÀ´°²×°Ò»¸ö¼òµ¥µÄ¾²Ì¬ÄÚÈݵÄnginxÓ¦Óãº

Ê×ÏÈ£¬ÎÒÃÇÓø´ÖÆÆ÷Æô¶¯Ò»¸ö2¸ö±¸·ÝµÄnginx Pod¡£È»ºóÔÚÇ°Ãæ¹ÒService£¬Ò»¸öserviceÖ»Äܱ»¼¯ÈºÄÚ²¿·ÃÎÊ£¬Ò»¸öÄܱ»¼¯ÈºÍâµÄ½Úµã·ÃÎÊ¡£ÏÂÃæËùÓеÄÃüÁî¶¼ÊÇÔÚ¹ÜÀí½ÚµãÉÏÔËÐеġ£

²¿Êðnginx pod ºÍ¸´ÖÆÆ÷

ÈçϱíËùʾ£º

$ cat nginx-rc.yaml 
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-controller
spec:
replicas: 2
selector:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80

ÎÒÃǶ¨ÒåÁËÒ»¸önginx pod¸´ÖÆÆ÷£¬¸´ÖÆ·ÝÊýΪ2£¬ÎÒÃÇʹÓÃnginx docker¾µÏñ¡£

Ö´ÐÐÏÂÃæµÄ²Ù×÷´´½¨nginx pod¸´ÖÆÆ÷:

$  kubectl -s http://192.168.0.201:8080 create -f nginx-rc.yaml

ÓÉÓÚkubernetesҪȥgcr.ioÏÂÔØgcr.io/google_containers/pause¾µÏñ£¬È»ºóÏÂÔØnginx¾µÏñ£¬ËùÒÔËù´´½¨µÄPodÐèÒªµÈ´ýһЩʱ¼ä²ÅÄÜ´¦ÓÚrunning״̬¡£

$  kubectl -s http://192.168.0.201:8080 get pods
NAME READY REASON RESTARTS AGE
nginx-controller-6zr34 1/1 Running 0 48m
nginx-controller-njlgt 1/1 Running 0 48m

ÎÒÃÇ¿ÉÒÔʹÓÃdescribe ÃüÁî²é¿´podËù·Öµ½µÄ½Úµã:

$  $ kubectl -s http://192.168.0.201:8080 describe 
pod nginx-controller-6zr34 2>/dev/null | grep Node:
Node: 192.168.0.203/192.168.0.203
$ kubectl -s http://192.168.0.201:8080 describe
pod nginx-controller-njlgt 2>/dev/null | grep Node:
Node: 192.168.0.201/192.168.0.201

´ÓÉϱí¿ÉÒÔ¿´³ö£¬Õâ¸ö¸´ÖÆÆ÷Æô¶¯ÁËÁ½¸öPod£¬·Ö±ðÔËÐÐÔÚ192.168.0.201ºÍ203´úÀí½ÚµãÖ÷»úÉÏ¡£

²¿Êð½ÚµãÄÚ²¿¿É·ÃÎʵÄnginx service

ServiceµÄtypeÓÐClusterIPºÍNodePortÖ®·Ö£¬È±Ê¡ÊÇClusterIP£¬ÕâÖÖÀàÐ͵ÄServiceÖ»ÄÜÔÚ¼¯ÈºÄÚ²¿·ÃÎÊ¡£Ï±íÊDZ¾ÎÄÓõÄÅäÖÃÎļþ£º

$ cat nginx-service-clusterip.yaml 
apiVersion: v1
kind: Service
metadata:
name: nginx-service-clusterip
spec:
ports:
- port: 8001
targetPort: 80
protocol: TCP
selector:
name: nginx

Ö´ÐÐÏÂÃæµÄÃüÁî´´½¨service:

$ kubectl -s http://192.168.0.201:8080 
create -f ./nginx-service-clusterip.yaml
services/nginx-service
$ kubectl -s http://192.168.0.201:8080 get service
NAME LABELS
kubernetes component=apiserver,
provider=kubernetes
nginx-service-clusterip <none>

SELECTOR IP(S) PORT(S)
<none> 192.168.3.1 443/TCP
name=nginx 192.168.3.91 8001/TCP

ÑéÖ¤serviceµÄ¿É·ÃÎÊÐÔ£º

ÉÏÃæµÄÊä³ö¸æËßÎÒÃÇÕâ¸öServiceµÄCluster IPÊÇ192.168.3.91£¬¶Ë¿ÚÊÇ8001¡£ÏÂÃæÎÒÃÇÑéÖ¤Õâ¸öPortalNet IPµÄ¹¤×÷Çé¿ö£º

$ ssh 192.168.0.202 curl -s 192.168.3.91:8001  
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully
installed and working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

´ÓÇ°Ãæ²¿Êð¸´ÖÆÆ÷µÄ²¿·ÖÎÒÃÇÖªµÀnginx PodÔËÐÐÔÚ201ºÍ203½ÚµãÉÏ¡£ÉÏÃæÎÒÃÇÌØÒâ´Ó202´úÀí½ÚµãÉÏ·ÃÎÊÎÒÃǵķþÎñÀ´ÌåÏÖService Cluster IPÔÚËùÓм¯Èº´úÀí½ÚµãµÄ¿Éµ½´ïÐÔ¡£

²¿ÊðÍⲿ¿É·ÃÎʵÄnginx service

ÏÂÃæÎÒÃÇ´´½¨NodePortÀàÐ͵ÄService£¬ÕâÖÖÀàÐ͵ÄServiceÔÚ¼¯ÈºÍⲿÊÇ¿ÉÒÔ·ÃÎÊ¡£Ï±íÊDZ¾ÎÄÓõÄÅäÖÃÎļþ£º

$ cat nginx-service-nodeport.yaml 
apiVersion: v1
kind: Service
metadata:
name: nginx-service-nodeport
spec:
ports:
- port: 8000
targetPort: 80
protocol: TCP
type: NodePort
selector:
name: nginx

Ö´ÐÐÏÂÃæµÄÃüÁî´´½¨service:

$ kubectl -s http://192.168.0.201:8080 create -f ./nginx-service-nodeport.yaml  
services/nginx-service-nodeport
$ kubectl -s http://192.168.0.201:8080 get service
NAME LABELS
kubernetes component=apiserver,
provider=kubernetes
nginx-service-clusterip <none>
nginx-service-nodeport <none>

SELECTOR IP(S) PORT(S)
<none> 192.168.3.1 443/TCP
name=nginx 192.168.3.91 8001/TCP
name=nginx 192.168.3.84 8000/TCP

ʹÓÃÏÂÃæµÄÃüÁî»ñµÃÕâ¸öserviceµÄ½Úµã¼¶±ðµÄ¶Ë¿Ú£º

$ kubectl -s http://192.168.0.201:8080 describe service 
nginx-service-nodeport 2>
/dev/null | grep NodePort
Type: NodePort
NodePort: <unnamed> 32606/TCP

ÑéÖ¤serviceµÄ¿É·ÃÎÊÐÔ£º

ÉÏÃæµÄÊä³ö¸æËßÎÒÃÇÕâ¸öServiceµÄ½Úµã¼¶±ð¶Ë¿ÚÊÇ32606¡£ÏÂÃæÎÒÃÇÑéÖ¤Õâ¸öServiceµÄ¹¤×÷Çé¿ö£º

$ curl 192.168.0.201:32606  
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server
is successfully installed and working.
Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

´úÀí½ÚµãÉϵÄIP tables¹æÔò½âÎö

ÏÂÃæµÄͼÊÇIPTablesÖÐÁ÷Á¿¾­¹ýµÄtableºÍchain¡£

¿ÉÒÔ¿´³ö£¬KubernetesÔÚnat±íÖвåÈëÁËÏÂÃæËÄÌõchain£º

1. KUBE-PORTALS-CONTAINER

Õâ¸öchainÖ÷ÒªÊÇ´¦ÀíËùÓÐservice¶ÔÏóµÄcluster IPºÍportµ½kube-proxy±¾µØ¶Ë¿ÚµÄÓ³Éä¡£±ÈÈçÏÂÃæ¹æÔò£º

-A KUBE-PORTALS-CONTAINER -d 192.168.3.84/32 
-p tcp -m comment --comment "default/nginx-service-nodeport:
" -m tcp --dport 8000 -j REDIRECT --to-ports 43981

¾ÍÊÇΪnginx-service-nodeport·þÎñµÄCluster IP×¼±¸µÄ¡£ÆäÖÐ192.168.3.84/32ÊǸ÷þÎñ»ñµÃµÄCluster IP£¬¶Ë¿Ú8000ÊÇÆäÔÚ¶¨ÒåÎļþÖÐÖ¸¶¨µÄspec.ports.port¡£43981ÔòÊÇkube-proxyΪÕâ¸öservice·ÖÅäµÄ±¾µØ¶Ë¿Ú¡£¹æÔòµÄÒâ˼Êǵ½192.168.3.84:8000µÄÁ÷Á¿Öض¨Ïòµ½43981¡£

2. KUBE-NODEPORT-CONTAINER

ÕâÌõchainÉÏÔò´®Á¬×ÅÀàÐÍΪNodePortµÄserviceµÄNodePort¹æÔò¡£±ÈÈçÏÂÃæ¹æÔò£º

-A KUBE-NODEPORT-CONTAINER -p tcp -m comment
--comment "default/nginx-service-nodeport:
" -m tcp --dport 32606 -j REDIRECT --to-ports 43981

¾ÍÊÇΪnginx-service-nodeport·þÎñµÄNodePort 32606×¼±¸µÄ¡£Òâ˼ÊÇ·ÃÎʱ¾µØ32606¶Ë¿ÚµÄÁ÷Á¿ÖØÐ¶¨Ïòµ½43981£¬ºóÕßÊÇkube-proxyΪÕâ¸öservice·ÖÅäµÄ±¾µØ¶Ë¿Ú¡£

3. KUBE-PORTALS-HOST

ÕâÌõchainÉÏÒ²¹ØÁª×Ÿ÷¸öserviceµÄCluster IPºÍPortµÄ¹æÔò£¬±ÈÈ磺

-A KUBE-PORTALS-HOST -d 192.168.3.84/32 -p tcp -m comment --comment "
default/nginx-service-nodeport:"
-m tcp --dport 8000 -j DNAT --to-destination 192.168.0.201:43981

ÕâÌõ¹æÔòÊǺÍKUBE-PORTALS-CONTAINERÀàËÆµÄ£¬Ö»²»¹ýÁ÷Á¿À´×ÔÓÚ±¾µØ½ø³Ì¡£

4. KUBE-NODEPORT-HOST

ÕâÌõchainÉÏÔò¹ØÁª×ÅÀàÐÍΪNodePortµÄserviceµÄNodePort¹æÔò¡£±ÈÈçÏÂÃæ¹æÔò£º

-A KUBE-NODEPORT-HOST -p tcp -m comment --comment 
"default/nginx-service-nodeport:" -m tcp --dport 30975 -j DNAT
--to-destination 192.168.0.201:43981

ÕâÌõ¹æÔòÊǺÍKUBE-NODEPORT-CONTAINERÀàËÆµÄ£¬Ö»²»¹ýÁ÷Á¿À´×ÔÓÚ±¾µØ½ø³Ì¡£

×ܽá

±ÊÕßÈÏΪDockerÒѾ­²»Êǽö´ú±íÈÝÆ÷±¾Éí£¬¶øÊÇÒ»×éÒÔÓ¦Óò¿ÊðΪÖÐÐĵļ¼Êõ£¬²úÆ·ºÍ×î¼Ñʵ¼ùÉú̬ϵͳ¡£KubernetesÒÔÆä³öÉí£¬ÎĵµµÄ³ÉÊì¶È£¬ÉçÇøµÄÖ§³ÖÔÚÕâ¸öÉú̬ϵͳÖбíÏֵñȽÏÍ»³ö¡£ÔÚ²¿ÊðKubernetesʱ£¬ÎÒÃÇÊ×ÏÈÒªÀí½âKubernetesµÄ×é¼þ½á¹¹£¬ËüÃÇÓÐÄÄЩ½ÇÉ«£¬¸÷¸ö½ÇÉ«µÄ×÷ÓÃÊÇʲôºÍËüÃÇÖ®½ÓµÄͨÐÅ¡£ÔÚÓ¦Óò¿Êðʱ£¬Á˽âKubernetesµÄÓ¦ÓÃÄ£ÐÍÊǷdz£ÖØÒªµÄ¡£±ÊÕßÈÏΪ¸´ÖÆÆ÷ºÍServiceµÄ¸ÅÄîÊÇKubernetesÄ£Ð͵ĺËÐÄ£¬¸´ÖÆÆ÷ºÍService¹²Í¬Íê³ÉÁËÓ¦Óõĸ߿ÉÓÃÐÔÒªÇó¡£×îºó±¾ÎÄÒÔÒ»¸ö¼òµ¥µÄnginx·þÎñÀ´Õ¹Ê¾Á˸´ÖÆÆ÷ºÍServiceµÄʹÓã¬Ìرðͨ¹ý¶ÔServiceµÄcluster IPºÍNodePortµÄ·ÖÎö£¬Ê¹µÃ¶ÁÕßÄܹ»Á˽âÕâ¸öÄ£ÐÍÖеÄÍøÂçÌØÐÔ¡£

×îºó¾ÍÊÇÈÝÆ÷¼¼ÊõµÄÑ¡ÐÍ£¬±¾ÎÄʹÓÃDocker×÷ΪÈÝÆ÷£¬ÆäʵKubernetesÒ²Ö§³ÖCoreOSµÄrktÈÝÆ÷¡£kubeletµÄ²ÎÊý--container_runtimeÓÃÓÚÑ¡ÔñʹÓõÄÈÝÆ÷¼¼Êõ¡£

   
3108 ´Îä¯ÀÀ       30
 
Ïà¹ØÎÄÕÂ

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

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