±¾ÎĽÚÑ¡×Ô¹¨ÕýµÈ±àÖøµÄ¡¶KubernetesȨÍþÖ¸ÄÏ¡·£¬¸Ã½ÚÖ÷Òª¶Ô³£ÓõÄKubernetesϵͳÔËά²Ù×÷ºÍ¼¼ÇɽøÐÐÏêϸ˵Ã÷¡£
NodeµÄ¸ôÀëºÍ»Ö¸´
apiVersion: v1 kind: Node metadata: name: kubernetes-minion1 labels: kubernetes.io/hostname: kubernetes-minion1 spec: unschedulable: true |
È»ºó£¬Í¨¹ýkubectl replaceÃüÁîÍê³É¶ÔNode״̬µÄÐ޸ģº
$ kubectl replace -f unschedule_node.yaml nodes/kubernetes-minion1 |
²é¿´NodeµÄ״̬£¬¿ÉÒԹ۲쵽ÔÚNodeµÄ״̬ÖÐÔö¼ÓÁËÒ»ÏîSchedulingDisabled£º

¶ÔÓÚºóÐø´´½¨µÄPod£¬ÏµÍ³½«²»»áÔÙÏò¸ÃNode½øÐе÷¶È¡£
ÁíÒ»ÖÖ·½·¨ÊDz»Ê¹ÓÃÅäÖÃÎļþ£¬Ö±½ÓʹÓÃkubectl patchÃüÁîÍê³É£º
$ kubectl patch node kubernetes-minion1 -p '{£¢spec£¢:{£¢unschedulable£¢:true}}' |
ÐèҪעÒâµÄÊÇ£¬½«Ä³¸öNodeÍÑÀëµ÷¶È·¶Î§Ê±£¬ÔÚÆäÉÏÔËÐеÄPod²¢²»»á×Ô¶¯Í£Ö¹£¬¹ÜÀíÔ±ÐèÒªÊÖ¶¯Í£Ö¹ÔÚ¸ÃNodeÉÏÔËÐеÄPod¡£
ͬÑù£¬Èç¹ûÐèÒª½«Ä³¸öNodeÖØÐÂÄÉÈ뼯Ⱥµ÷¶È·¶Î§£¬Ôò½«unschedulableÉèÖÃΪfalse£¬ÔÙ´ÎÖ´ÐÐkubectl
replace»òkubectl patchÃüÁî¾ÍÄָܻ´ÏµÍ³¶Ô¸ÃNodeµÄµ÷¶È¡£
NodeµÄÀ©ÈÝ
ÔÚʵ¼ÊÉú²úϵͳÖлᾳ£Óöµ½·þÎñÆ÷ÈÝÁ¿²»×ãµÄÇé¿ö£¬Õâʱ¾ÍÐèÒª¹ºÂòеķþÎñÆ÷£¬È»ºó½«Ó¦ÓÃϵͳ½øÐÐˮƽÀ©Õ¹À´Íê³É¶ÔϵͳµÄÀ©ÈÝ¡£
ÔÚKubernetes¼¯ÈºÖУ¬¶ÔÓÚÒ»¸öÐÂNodeµÄ¼ÓÈëÊǷdz£¼òµ¥µÄ¡£¿ÉÒÔÔÚNode½ÚµãÉϰ²×°Docker¡¢KubeletºÍkube-proxy·þÎñ£¬È»ºó½«KubeletºÍkube-proxyµÄÆô¶¯²ÎÊýÖеÄMaster
URLÖ¸¶¨Îªµ±Ç°Kubernetes¼¯ÈºMasterµÄµØÖ·£¬×îºóÆô¶¯ÕâЩ·þÎñ¡£»ùÓÚKubeletµÄ×Ô¶¯×¢²á»úÖÆ£¬ÐµÄNode½«»á×Ô¶¯¼ÓÈëÏÖÓеÄKubernetes¼¯ÈºÖУ¬Èçͼ1Ëùʾ¡£

ͼ1 нڵã×Ô¶¯×¢²áÍê³ÉÀ©ÈÝ
Kubernetes MasterÔÚ½ÓÊÜÁËÐÂNodeµÄ×¢²áÖ®ºó£¬»á×Ô¶¯½«ÆäÄÉÈ뵱ǰ¼¯ÈºµÄµ÷¶È·¶Î§ÄÚ£¬ÔÚÖ®ºó´´½¨ÈÝÆ÷ʱ£¬¾Í¿ÉÒÔÏòеÄNode½øÐе÷¶ÈÁË¡£
ͨ¹ýÕâÖÖ»úÖÆ£¬KubernetesʵÏÖÁ˼¯ÈºµÄÀ©ÈÝ¡£
Pod¶¯Ì¬À©ÈݺÍËõ·Å
ÔÚʵ¼ÊÉú²úϵͳÖУ¬ÎÒÃǾ³£»áÓöµ½Ä³¸ö·þÎñÐèÒªÀ©Èݵij¡¾°£¬Ò²¿ÉÄÜ»áÓöµ½ÓÉÓÚ×ÊÔ´½ôÕÅ»òÕß¹¤×÷¸ºÔؽµµÍ¶øÐèÒª¼õÉÙ·þÎñʵÀýÊýµÄ³¡¾°¡£´ËʱÎÒÃÇ¿ÉÒÔÀûÓÃÃüÁîkubectl
scale rcÀ´Íê³ÉÕâЩÈÎÎñ¡£ÒÔRedis-slave RCΪÀý£¬ÒѶ¨ÒåµÄ×î³õ¸±±¾ÊýÁ¿Îª2£¬Í¨¹ýÖ´ÐÐÏÂÃæµÄÃüÁredis-slave
RC¿ØÖƵÄPod¸±±¾ÊýÁ¿´Ó³õʼµÄ2¸üÐÂΪ3£º
$ kubectl scale rc redis-slave --replicas=3 scaled |
Ö´ÐÐkubectl get podsÃüÁîÀ´ÑéÖ¤PodµÄ¸±±¾ÊýÁ¿Ôö¼Óµ½3£º
$ kubectl get pods NAME READY STATUS RESTARTS AGE redis-slave-4na2n 1/1 Running 0 1h redis-slave-92u3k 1/1 Running 0 1h redis-slave-palab 1/1 Running 0 2m |
½«--replicasÉèÖÃΪ±Èµ±Ç°Pod¸±±¾ÊýÁ¿¸üСµÄÊý×Ö£¬ÏµÍ³½«»á¡°É±µô¡±Ò»Ð©ÔËÐÐÖеÄPod£¬¼´¿ÉʵÏÖÓ¦Óü¯ÈºËõÈÝ£º
$ kubectl scale rc redis-slave --replicas=1 scaled
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-slave-4na2n 1/1 Running 0 1h |
¸üÐÂ×ÊÔ´¶ÔÏóµÄLabel
Label£¨±êÇ©£©×÷ΪÓû§¿ÉÁé»î¶¨ÒåµÄ¶ÔÏóÊôÐÔ£¬ÔÚÒÑ´´½¨µÄ¶ÔÏóÉÏ£¬ÈÔÈ»¿ÉÒÔËæÊ±Í¨¹ýkubectl labelÃüÁî¶ÔÆä½øÐÐÔö¼Ó¡¢Ð޸ġ¢É¾³ýµÈ²Ù×÷¡£
ÀýÈ磬ÎÒÃÇÒª¸øÒÑ´´½¨µÄPod¡°redis-master-bobr0¡±Ìí¼ÓÒ»¸ö±êÇ©role=backend£º
$ kubectl label pod redis-master-bobr0 role=backend |
²é¿´¸ÃPodµÄLabel£º
$ kubectl get pods -Lrole NAME READY STATUS RESTARTS AGE ROLE redis-master-bobr0 1/1 Running 0 3m backend |
ɾ³ýÒ»¸öLabel£¬Ö»ÐèÔÚÃüÁîÐÐ×îºóÖ¸¶¨LabelµÄkeyÃû²¢ÓëÒ»¸ö¼õºÅÏàÁ¬¼´¿É£º
$ kubectl label pod redis-master-bobr0 role- |
ÐÞ¸ÄÒ»¸öLabelµÄÖµ£¬ÐèÒª¼ÓÉÏ--overwrite²ÎÊý£º
$ kubectl label pod redis-master-bobr0 role=master --overwrite |
½«Podµ÷¶Èµ½Ö¸¶¨µÄNode
ÎÒÃÇÖªµÀ£¬KubernetesµÄScheduler·þÎñ£¨kube-scheduler½ø³Ì£©¸ºÔðʵÏÖPodµÄµ÷¶È£¬Õû¸öµ÷¶È¹ý³Ìͨ¹ýÖ´ÐÐһϵÁи´ÔÓµÄËã·¨×îÖÕΪÿ¸öPod¼ÆËã³öÒ»¸ö×î¼ÑµÄÄ¿±ê½Úµã£¬ÕâÒ»¹ý³ÌÊÇ×Ô¶¯Íê³ÉµÄ£¬ÎÒÃÇÎÞ·¨ÖªµÀPod×îÖջᱻµ÷¶Èµ½Äĸö½ÚµãÉÏ¡£ÓÐʱÎÒÃÇ¿ÉÄÜÐèÒª½«Podµ÷¶Èµ½Ò»¸öÖ¸¶¨µÄNodeÉÏ£¬´Ëʱ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýNodeµÄ±êÇ©£¨Label£©ºÍPodµÄnodeSelectorÊôÐÔÏàÆ¥Å䣬À´´ïµ½ÉÏÊöÄ¿µÄ¡£
Ê×ÏÈ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýkubectl labelÃüÁî¸øÄ¿±êNode´òÉÏÒ»¸öÌØ¶¨µÄ±êÇ©£¬ÏÂÃæÊÇ´ËÃüÁîµÄÍêÕûÓ÷¨£º
kubectl label nodes <node-name> <label-key>=<label-value> |
ÕâÀÎÒÃÇΪkubernetes-minion1½Úµã´òÉÏÒ»¸özone=northµÄ±êÇ©£¬±íÃ÷ËüÊÇ¡°±±·½¡±µÄÒ»¸ö½Úµã£º

ÉÏÊöÃüÁîÐвÙ×÷Ò²¿ÉÒÔͨ¹ýÐÞ¸Ä×ÊÔ´¶¨ÒåÎļþµÄ·½Ê½£¬²¢Ö´ÐÐkubectl replace -f xxx.yamlÃüÁîÀ´Íê³É¡£
È»ºó£¬ÔÚPodµÄÅäÖÃÎļþÖмÓÈënodeSelector¶¨Ò壬ÒÔredis-master-controller.yamlΪÀý£º
apiVersion: v1 kind: ReplicationController metadata: name: redis-master labels: name: redis-master spec: replicas: 1 selector: name: redis-master template: metadata: labels: name: redis-master spec: containers: - name: master image: kubeguide/redis-master ports: - containerPort: 6379 nodeSelector: zone: north |
ÔËÐÐkubectl create -fÃüÁî´´½¨Pod£¬scheduler¾Í»á½«¸ÃPodµ÷¶Èµ½ÓµÓÐzone=north±êÇ©µÄNodeÉÏÈ¥¡£
ʹÓÃkubectl get pods -o wideÃüÁî¿ÉÒÔÑéÖ¤PodËùÔÚµÄNode£º

Èç¹ûÎÒÃǸø¶à¸öNode¶¼¶¨ÒåÁËÏàͬµÄ±êÇ©£¨ÀýÈçzone=north£©£¬Ôòscheduler½«»á¸ù¾Ýµ÷¶ÈËã·¨´ÓÕâ×éNodeÖÐÌôѡһ¸ö¿ÉÓõÄNode½øÐÐPodµ÷¶È¡£
ÕâÖÖ»ùÓÚNode±êÇ©µÄµ÷¶È·½Ê½Áé»îÐԺܸߣ¬±ÈÈçÎÒÃÇ¿ÉÒÔ°ÑÒ»×éNode·Ö±ðÌùÉÏ¡°¿ª·¢»·¾³¡±¡°²âÊÔÑéÖ¤»·¾³¡±¡°Óû§ÑéÊÕ»·¾³¡±ÕâÈý×é±êÇ©ÖеÄÒ»ÖÖ£¬´Ëʱһ¸öKubernetes¼¯Èº¾Í³ÐÔØÁË3¸ö»·¾³£¬Õ⽫´ó´óÌá¸ß¿ª·¢Ð§ÂÊ¡£
ÐèҪעÒâµÄÊÇ£¬Èç¹ûÎÒÃÇÖ¸¶¨ÁËPodµÄnodeSelectorÌõ¼þ£¬ÇÒ¼¯ÈºÖв»´æÔÚ°üº¬ÏàÓ¦±êÇ©µÄNodeʱ£¬¼´Ê¹»¹ÓÐÆäËû¿É¹©µ÷¶ÈµÄNode£¬Õâ¸öPodÒ²×îÖÕ»áµ÷¶Èʧ°Ü¡£
Ó¦ÓõĹö¶¯Éý¼¶
µ±¼¯ÈºÖеÄij¸ö·þÎñÐèÒªÉý¼¶Ê±£¬ÎÒÃÇÐèҪֹͣĿǰÓë¸Ã·þÎñÏà¹ØµÄËùÓÐPod£¬È»ºóÖØÐÂÀÈ¡¾µÏñ²¢Æô¶¯¡£Èç¹û¼¯Èº¹æÄ£±È½Ï´ó£¬ÔòÕâ¸ö¹¤×÷¾Í±ä³ÉÁËÒ»¸öÌôÕ½£¬¶øÇÒÏÈÈ«²¿Í£Ö¹È»ºóÖð²½Éý¼¶µÄ·½Ê½»áµ¼Ö½ϳ¤Ê±¼äµÄ·þÎñ²»¿ÉÓá£KubernetesÌṩÁËrolling-update£¨¹ö¶¯Éý¼¶£©¹¦ÄÜÀ´½â¾öÉÏÊöÎÊÌâ¡£
¹ö¶¯Éý¼¶Í¨¹ýÖ´ÐÐkubectl rolling-updateÃüÁîÒ»¼üÍê³É£¬¸ÃÃüÁî´´½¨ÁËÒ»¸öеÄRC£¬È»ºó×Ô¶¯¿ØÖƾɵÄRCÖеÄPod¸±±¾ÊýÁ¿Öð½¥¼õÉÙµ½0£¬Í¬Ê±ÐµÄRCÖеÄPod¸±±¾ÊýÁ¿´Ó0Öð²½Ôö¼Óµ½Ä¿±êÖµ£¬×îÖÕʵÏÖÁËPodµÄÉý¼¶¡£ÐèҪעÒâµÄÊÇ£¬ÏµÍ³ÒªÇóеÄRCÐèÒªÓë¾ÉµÄRCÔÚÏàͬµÄÃüÃû¿Õ¼ä£¨Namespace£©ÄÚ£¬¼´²»ÄܰѱðÈ˵Ä×ʲúÍµÍµ×ªÒÆµ½×Ô¼ÒÃûÏ¡£
ÒÔredis-masterΪÀý£¬¼ÙÉ赱ǰÔËÐеÄredis-master PodÊÇ1.0°æ±¾£¬ÔòÏÖÔÚÐèÒªÉý¼¶µ½2.0°æ±¾¡£
´´½¨redis-master-controller-v2.yamlµÄÅäÖÃÎļþÈçÏ£º
apiVersion: v1 kind: ReplicationController metadata: name: redis-master-v2 labels: name: redis-master version: v2 spec: replicas: 1 selector: name: redis-master version: v2 template: metadata: labels: name: redis-master version: v2 spec: containers: - name: master image: kubeguide/redis-master:2.0 ports: - containerPort: 6379 |
ÔÚÅäÖÃÎļþÖÐÓм¸´¦ÐèҪעÒ⣺
£¨1£©RCµÄÃû×Ö£¨name£©²»ÄÜÓë¾ÉµÄRCµÄÃû×ÖÏàͬ£»
£¨2£©ÔÚselectorÖÐÓ¦ÖÁÉÙÓÐÒ»¸öLabelÓë¾ÉµÄRCµÄLabel²»Í¬£¬ÒÔ±êʶÆäΪеÄRC¡£
±¾ÀýÖÐÐÂÔöÁËÒ»¸öÃûΪversionµÄLabel£¬ÒÔÓë¾ÉµÄRC½øÐÐÇø·Ö¡£
ÔËÐÐkubectl rolling-updateÃüÁîÍê³ÉPodµÄ¹ö¶¯Éý¼¶£º
kubectl rolling-update redis-master -f redis-master-controller-v2.yaml |
KubectlµÄÖ´Ðйý³ÌÈçÏ£º
Creating redis-master-v2 At beginning of loop: redis-master replicas: 2, redis-master-v2 replicas: 1 Updating redis-master replicas: 2, redis-master-v2 replicas: 1 At end of loop: redis-master replicas: 2, redis-master-v2 replicas: 1 At beginning of loop: redis-master replicas: 1, redis-master-v2 replicas: 2 Updating redis-master replicas: 1, redis-master-v2 replicas: 2 At end of loop: redis-master replicas: 1, redis-master-v2 replicas: 2 At beginning of loop: redis-master replicas: 0, redis-master-v2 replicas: 3 Updating redis-master replicas: 0, redis-master-v2 replicas: 3 At end of loop: redis-master replicas: 0, redis-master-v2 replicas: 3 Update succeeded. Deleting redis-master redis-master-v2 |
µÈËùÓÐеÄPodÆô¶¯Íê³Éºó£¬¾ÉµÄPodÒ²±»È«²¿Ïú»Ù£¬ÕâÑù¾ÍÍê³ÉÁËÈÝÆ÷¼¯ÈºµÄ¸üС£
ÁíÒ»ÖÖ·½·¨ÊDz»Ê¹ÓÃÅäÖÃÎļþ£¬Ö±½ÓÓÃkubectl rolling-updateÃüÁ¼ÓÉÏ--image²ÎÊýÖ¸¶¨Ð°澵ÏñÃû³ÆÀ´Íê³ÉPodµÄ¹ö¶¯Éý¼¶£º
kubectl rolling-update redis-master --image=redis-master:2.0 |
ÓëʹÓÃÅäÖÃÎļþµÄ·½Ê½²»Í¬£¬Ö´ÐеĽá¹ûÊǾɵÄRC±»É¾³ý£¬ÐµÄRCÈÔ½«Ê¹ÓþɵÄRCµÄÃû×Ö¡£
KubectlµÄÖ´Ðйý³ÌÈçÏ£º

¿ÉÒÔ¿´µ½£¬Kubectlͨ¹ýн¨Ò»¸öа汾Pod£¬Í£µôÒ»¸ö¾É°æ±¾Pod£¬Öð²½µü´úÀ´Íê³ÉÕû¸öRCµÄ¸üС£
¸üÐÂÍê³Éºó£¬²é¿´RC£º

¿ÉÒÔ¿´µ½£¬Kubectl¸øRCÔö¼ÓÁËÒ»¸ökeyΪ¡°deployment¡±µÄLabel£¨Õâ¸ökeyµÄÃû×Ö¿Éͨ¹ý--deployment-label-key²ÎÊý½øÐÐÐ޸ģ©£¬LabelµÄÖµÊÇRCµÄÄÚÈݽøÐÐHash¼ÆËãºóµÄÖµ£¬Ï൱ÓÚÇ©Ãû£¬ÕâÑù¾ÍÄܷܺ½±ãµØ±È½ÏRCÀïµÄImageÃû×Ö¼°ÆäËûÐÅÏ¢ÊÇ·ñ·¢ÉúÁ˱仯£¬ËüµÄ¾ßÌå×÷ÓÿÉÒԲμûµÚ6ÕµÄÔ´Âë·ÖÎö¡£
Èç¹ûÔÚ¸üйý³ÌÖз¢ÏÖÅäÖÃÓÐÎó£¬ÔòÓû§¿ÉÒÔÖжϸüвÙ×÷£¬²¢Í¨¹ýÖ´ÐÐKubectl rolling-update
¨CrollbackÍê³ÉPod°æ±¾µÄ»Ø¹ö£º

µ½´Ë£¬¿ÉÒÔ¿´µ½Pod»Ö¸´µ½¸üÐÂǰµÄ°æ±¾ÁË¡£
Kubernetes¼¯Èº¸ß¿ÉÓ÷½°¸
Kubernetes×÷ΪÈÝÆ÷Ó¦ÓõĹÜÀíÖÐÐÄ£¬Í¨¹ý¶ÔPodµÄÊýÁ¿½øÐÐ¼à¿Ø£¬²¢ÇÒ¸ù¾ÝÖ÷»ú»òÈÝÆ÷ʧЧµÄ״̬½«ÐµÄPodµ÷¶Èµ½ÆäËûNodeÉÏ£¬ÊµÏÖÁËÓ¦ÓòãµÄ¸ß¿ÉÓÃÐÔ¡£Õë¶ÔKubernetes¼¯Èº£¬¸ß¿ÉÓÃÐÔ»¹Ó¦°üº¬ÒÔÏÂÁ½¸ö²ãÃæµÄ¿¼ÂÇ£ºetcdÊý¾Ý´æ´¢µÄ¸ß¿ÉÓÃÐÔºÍKubernetes
Master×é¼þµÄ¸ß¿ÉÓÃÐÔ¡£
1£®etcd¸ß¿ÉÓÃÐÔ·½°¸
etcdÔÚÕû¸öKubernetes¼¯ÈºÖд¦ÓÚÖÐÐÄÊý¾Ý¿âµÄµØÎ»£¬Îª±£Ö¤Kubernetes¼¯ÈºµÄ¸ß¿ÉÓÃÐÔ£¬Ê×ÏÈÐèÒª±£Ö¤Êý¾Ý¿â²»Êǵ¥¹ÊÕϵ㡣һ·½Ã棬etcdÐèÒªÒÔ¼¯ÈºµÄ·½Ê½½øÐв¿Êð£¬ÒÔʵÏÖetcdÊý¾Ý´æ´¢µÄÈßÓà¡¢±¸·ÝÓë¸ß¿ÉÓÃÐÔ£»ÁíÒ»·½Ã棬etcd´æ´¢µÄÊý¾Ý±¾ÉíÒ²Ó¦¿¼ÂÇʹÓÿɿ¿µÄ´æ´¢É豸¡£
etcd¼¯ÈºµÄ²¿Êð¿ÉÒÔʹÓþ²Ì¬ÅäÖã¬Ò²¿ÉÒÔͨ¹ýetcdÌṩµÄREST APIÔÚÔËÐÐʱ¶¯Ì¬Ìí¼Ó¡¢Ð޸Ļòɾ³ý¼¯ÈºÖеijÉÔ±¡£±¾½Ú½«¶Ôetcd¼¯ÈºµÄ¾²Ì¬ÅäÖýøÐÐ˵Ã÷¡£¹ØÓÚ¶¯Ì¬Ð޸ĵIJÙ×÷·½·¨Çë²Î¿¼etcd¹Ù·½ÎĵµµÄ˵Ã÷¡£
Ê×ÏÈ£¬¹æ»®Ò»¸öÖÁÉÙ3̨·þÎñÆ÷£¨½Úµã£©µÄetcd¼¯Èº£¬ÔÚÿ̨·þÎñÆ÷Éϰ²×°ºÃetcd¡£
²¿ÊðÒ»¸öÓÉ3̨·þÎñÆ÷×é³ÉµÄetcd¼¯Èº£¬ÆäÅäÖÃÈç±í1Ëùʾ£¬Æä¼¯Èº²¿ÊðʵÀýÈçͼ2Ëùʾ¡£
±í1 etcd¼¯ÈºµÄÅäÖà 

ͼ2 etcd¼¯Èº²¿ÊðʵÀý
È»ºóÐÞ¸Äÿ̨·þÎñÆ÷ÉÏetcdµÄÅäÖÃÎļþ/etc/etcd/etcd.conf¡£
ÒÔetcd1Ϊ´´½¨¼¯ÈºµÄʵÀý£¬ÐèÒª½«ÆäETCD_INITIAL_CLUSTER_STATEÉèÖÃΪ¡°new¡±¡£etcd1µÄÍêÕûÅäÖÃÈçÏ£º 
Æô¶¯etcd1·þÎñÆ÷ÉϵÄetcd·þÎñ£º
Æô¶¯Íê³Éºó£¬¾Í´´½¨ÁËÒ»¸öÃûΪetcd-clusterµÄ¼¯Èº¡£
etcd2ºÍetcd3Ϊ¼ÓÈëetcd-cluster¼¯ÈºµÄʵÀý£¬ÐèÒª½«ÆäETCD_INITIAL_CLUSTER_STATEÉèÖÃΪ¡°exist¡±¡£etcd2µÄÍêÕûÅäÖÃÈçÏ£¨etcd3µÄÅäÖÃÂÔ£©£º

Æô¶¯etcd2ºÍetcd3·þÎñÆ÷ÉϵÄetcd·þÎñ£º
Æô¶¯Íê³Éºó£¬ÔÚÈÎÒâetcd½ÚµãÖ´ÐÐetcdctl cluster-healthÃüÁîÀ´²éѯ¼¯ÈºµÄÔËÐÐ״̬£º
$ etcdctl cluster-health cluster is healthy member ce2a822cea30bfca is healthy member acda82ba1cf790fc is healthy member eba209cd0012cd2 is healthy |
ÔÚÈÎÒâetcd½ÚµãÉÏÖ´ÐÐetcdctl member listÃüÁîÀ´²éѯ¼¯ÈºµÄ³ÉÔ±ÁÐ±í£º

ÖÁ´Ë£¬Ò»¸öetcd¼¯Èº¾Í´´½¨³É¹¦ÁË¡£
ÒÔkube-apiserverΪÀý£¬½«·ÃÎÊetcd¼¯ÈºµÄ²ÎÊýÉèÖÃΪ£º
--etcd-servers=http://10.0.0.1:4001,http://10.0.0.2:4001,http://10.0.0.3:4001 |
ÔÚetcd¼¯Èº³É¹¦Æô¶¯Ö®ºó£¬Èç¹ûÐèÒª¶Ô¼¯Èº³ÉÔ±½øÐÐÐ޸ģ¬ÔòÇë²Î¿¼¹Ù·½ÎĵµµÄÏêϸ˵Ã÷£ºµã»÷´Ë´¦
¶ÔÓÚetcdÖÐÐèÒª±£´æµÄÊý¾ÝµÄ¿É¿¿ÐÔ£¬¿ÉÒÔ¿¼ÂÇʹÓÃRAID´ÅÅÌÕóÁС¢¸ßÐÔÄÜ´æ´¢É豸¡¢NFSÍøÂçÎļþϵͳ£¬»òÕßʹÓÃÔÆ·þÎñÉÌÌṩµÄÍøÅÌϵͳµÈÀ´ÊµÏÖ¡£
2.Kubernetes Master×é¼þµÄ¸ß¿ÉÓÃÐÔ·½°¸
ÔÚKubernetesÌåϵÖУ¬Master·þÎñ°çÑÝ×Å×Ü¿ØÖÐÐĵĽÇÉ«£¬Ö÷ÒªµÄÈý¸ö·þÎñkube-apiserver¡¢kube-controller-mansgerºÍkube-schedulerͨ¹ý²»¶ÏÓ빤×÷½ÚµãÉϵÄKubeletºÍkube-proxy½øÐÐͨÐÅÀ´Î¬»¤Õû¸ö¼¯ÈºµÄ½¡¿µ¹¤×÷״̬¡£Èç¹ûMasterµÄ·þÎñÎÞ·¨·ÃÎʵ½Ä³¸öNode£¬Ôò»á½«¸ÃNode±ê¼ÇΪ²»¿ÉÓ㬲»ÔÙÏòÆäµ÷¶Èн¨µÄPod¡£µ«¶ÔMaster×ÔÉíÔòÐèÒª½øÐжîÍâµÄ¼à¿Ø£¬Ê¹Master²»³ÉΪ¼¯ÈºµÄµ¥¹ÊÕϵ㣬ËùÒÔ¶ÔMaster·þÎñÒ²ÐèÒª½øÐи߿ÉÓ÷½Ê½µÄ²¿Êð¡£
ÒÔMasterµÄkube-apiserver¡¢kube-controller-mansgerºÍkube-schedulerÈý¸ö·þÎñ×÷Ϊһ¸ö²¿Êðµ¥Ôª£¬ÀàËÆÓÚetcd¼¯ÈºµÄµäÐͲ¿ÊðÅäÖá£Ê¹ÓÃÖÁÉÙÈý̨·þÎñÆ÷°²×°Master·þÎñ£¬²¢ÇÒʹÓÃActive-Standby-Standbyģʽ£¬±£Ö¤ÈκÎʱºò×ÜÓÐÒ»Ì×MasterÄܹ»Õý³£¹¤×÷¡£
ËùÓй¤×÷½ÚµãÉϵÄKubeletºÍkube-proxy·þÎñÔòÐèÒª·ÃÎÊMaster¼¯ÈºµÄͳһ·ÃÎÊÈë¿ÚµØÖ·£¬ÀýÈç¿ÉÒÔʹÓÃpacemakerµÈ¹¤¾ßÀ´ÊµÏÖ¡£Í¼3չʾÁËÒ»ÖÖµäÐ͵IJ¿Êð·½Ê½¡£ 
ͼ3 Kubernetes Master¸ß¿ÉÓò¿Êð¼Ü¹¹ |