ä»é±ãKubernetesã¹ã±ãžã¥ãŒã©ãã©ã®ããã«æ©èœãããã®è©³çŽ°ã«ã€ããŠåŠã³ãŸããããããå®éã«æ©èœãããããã®ãžã£ã³ã°ã«ã«é£ã³èŸŒãæºåãã§ããŠãã人ãšå ±æããããšæããŸãã
ããã«ããã®ã±ãŒã¹ã¯ã誰ãã®å©ããå¿ èŠãšããã«ãããã®ã·ã¹ãã ãã©ã®ããã«èšèšãããŠãããããããªããç¶æ ãããOKãåºæ¬çãªã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ãšãã®åå ãç解ããŠãããšæããã«åãæ¿ããæ¹æ³ã®æ確ãªèª¬æã§ãã£ãããšã«æ³šæããŠãã ããã
ãã®å°ããªæèã®æµãã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã ãã®ãããã¯ãæ€èšããŠããéãKubernetesã®éçºè åãã®ãã°ãããããã°ãããããã°ãããKubernetesã®ããã¥ã¡ã³ãã®å·çã³ã³ãããŒã©ãŒ ããã¥ã¡ã³ã㯠ãç§ã«ãšã£ãŠæã圹ã«ç«ã¡ãŸããã
ã¹ã±ãžã¥ãŒã©ãŒã®ç®çã¯äœã§ããïŒ
Kubernetesã¹ã±ãžã¥ãŒã©ãŒã¯ã ãããã®å²ãåœãŠãæ åœããŸãã 圌ã®äœåã®æ¬è³ªã¯æ¬¡ã®ãšããã§ãã
- äžã«äœæããŸãã
- ã¹ã±ãžã¥ãŒã©ãŒã¯ãæ°ããçåºã«ããŒããå²ãåœãŠãããŠããªãããšã«æ°ä»ããŸãã
- ã¹ã±ãžã¥ãŒã©ãŒã¯ãããããŒããå²ãåœãŠãŸãã
圌ã¯ãããã®å®éã®èµ·åã«ã€ããŠè²¬ä»»ãè² ããŸãã-ããã¯kubeletã®ä»äºã§ãã 圌ã«åºæ¬çã«å¿ èŠãªããšã¯ãåãããã«ããŒããå²ãåœãŠãããŠããããšã確èªããããšã ãã§ãã ã·ã³ãã«ã§ããïŒ
Kubernetesã¯ã³ã³ãããŒã©ãŒã®ã¢ã€ãã¢ã䜿çšããŠããŸãã ã³ã³ãããŒã©ãŒã®æäœã¯æ¬¡ã®ãšããã§ãã
- ã·ã¹ãã ã®ç¶æ ãèŠãŠãã ããã
- çŸåšã®ç¶æ ãç®çã®ç¶æ ã«å¯Ÿå¿ããŠããªãããšã«æ³šæããŠãã ããïŒããšãã°ãããã®çåºã«ããŒããå²ãåœãŠãå¿ èŠããããŸããïŒã
- ç¹°ãè¿ããŸãã
ã¹ã±ãžã¥ãŒã©ãŒ-ã³ã³ãããŒã©ãŒã®ã¿ã€ãã®1ã€ã äžè¬ã«ãå€ãã®ç°ãªãã³ã³ãããŒã©ãŒãããã誰ããç°ãªãã¿ã¹ã¯ãæã¡ããããã¯ç¬ç«ããŠå®è¡ãããŸãã
äžè¬ã«ãã¹ã±ãžã¥ãŒã©ã®äœæ¥ã¯æ¬¡ã®ãããªãµã€ã¯ã«ãšããŠè¡šãããšãã§ããŸãã
while True: pods = get_all_pods() for pod in pods: if pod.node == nil: assignNode(pod)
Kubernetesã§ã¹ã±ãžã¥ãŒã©ãã©ã®ããã«æ©èœãããã®è©³çŽ°ã«èå³ããªãå Žåã¯ãããããèšäºãèªãã ãã§ååã§ãã ãã®ãµã€ã¯ã«ã«ã¯ãå®å šã«æ£ããã¢ãã«ãå«ãŸããŠããŸãã
ã ãããç§ã¯ã¹ã±ãžã¥ãŒã©ãå®éã«ãã®ããã«åäœããããã«æããŸããããªããªã
cronjob
ã³ã³ãããŒã©ãŒã¯åãããã«åäœããããã§ã-ã³ãŒããèªãã å¯äžã®Kubernetesã³ã³ããŒãã³ãã§ãã
cronjob
ã³ã³ãããŒã©ãŒ
cronjob
ãã¹ãŠã®cronãžã§ããåŠçãããããã®ãããã«å¯ŸããŠãäœãå®è¡ããå¿ èŠããªãããšã確èªãã10ç§åŸ æ©ããŠããã®ã«ãŒããç¡éã«ç¹°ãè¿ããŸãã ãšãŠãç°¡åã§ãïŒ
ããããããã¯ãã®ããã«ã¯æ©èœããŸãã
ããããä»é±ãKubernetesã¯ã©ã¹ã¿ãŒã®è² è·ãå¢å ããåé¡ãçºçããŸããã
æã ããµããæ°žç¶çã«
Pending
ç¶æ ã®ãŸãŸã«ãªããŸãïŒããŒãããµãã«å²ãåœãŠãããŠããªãå ŽåïŒã ã¹ã±ãžã¥ãŒã©ãŒããªããŒããããšãã¹ã±ãžã¥ãŒã©ãŒã¯ãã®ç¶æ ãçµäºããŸããïŒ ããã«ãã±ããããããŸã ïŒã
ãã®åäœã¯ãKubernetesã¹ã±ãžã¥ãŒã©ãŒã®åäœã®å éšã¢ãã«ãšäžèŽããŸããã§ãããããŒãã®å²ãåœãŠãäºæ³ãããå Žåãã¹ã±ãžã¥ãŒã©ãŒã¯ãããæ€åºããŠããŒããå²ãåœãŠãå¿ èŠããããŸãã ãã®å Žåãã¹ã±ãžã¥ãŒã©ã¯åèµ·åããªãã§ãã ããïŒ
ã³ãŒãã«ç®ãåããæãæ¥ãŸããã ãããŠãããã«ç§ãèŠã€ãããã®ããããŸã-ãã€ãã®ããã«ããšã©ãŒãããå¯èœæ§ããããŸã ãã¹ãŠãéåžžã«è€éã§ãå匷ããã®ã«1é±éããããããŸããã§ããã
ã¹ã±ãžã¥ãŒã©ãŒã®ä»çµã¿ïŒã³ãŒãã®æŠèŠ
scheduler.goããå§ããŸãããã ïŒå¿ èŠãªãã¹ãŠã®ãã¡ã€ã«ãçµåããããšã¯ããã§å©çšå¯èœã§ã -å 容ãç°¡åã«ããã²ãŒãããããã«ãïŒ
ã¡ã€ã³ã¹ã±ãžã¥ãŒã©ãµã€ã¯ã«ïŒ e4551d50e5ã³ãããæ ïŒã¯æ¬¡ã®ããã«ãªããŸãã
go wait.Until(sched.scheduleOne, 0, sched.config.StopEverything)
...ã€ãŸããã
sched.scheduleOne
ãã ããã§äœãèµ·ãã£ãŠããŸããïŒ
func (sched *Scheduler) scheduleOne() { pod := sched.config.NextPod() // do all the scheduler stuff for `pod` }
OKã
NextPod()
ã¯äœãããŠããŸããïŒ è¶³ã¯ã©ãããæé·ããŸããïŒ
func (f *ConfigFactory) getNextPod() *v1.Pod { for { pod := cache.Pop(f.podQueue).(*v1.Pod) if f.ResponsibleForPod(pod) { glog.V(4).Infof("About to try and schedule pod %v", pod.Name) return pod } } }
ããŠããã¹ãŠãéåžžã«ç°¡åã§ãïŒ å²çè£ããã®ãã¥ãŒïŒ
podQueue
ïŒãããã次ã®å²çè£ãããããæ¥ãŠããŸãã
ãããããããã¯ãã®ã©ã€ã³ã«ã©ã®ããã«çµã¿èŸŒãŸããŸããïŒ é¢é£ããã³ãŒãã¯æ¬¡ã®ãšããã§ãã
podInformer.Informer().AddEventHandler( cache.FilteringResourceEventHandler{ Handler: cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { if err := c.podQueue.Add(obj); err != nil { runtime.HandleError(fmt.Errorf("unable to queue %T: %v", obj, err)) } },
ã€ãŸããæ°ããããŒã¹ãè¿œå ããããšãããããã¥ãŒã«è¿œå ããã€ãã³ããã³ãã©ããããŸãã
ã¹ã±ãžã¥ãŒã©ãŒã®ä»çµã¿ïŒå¹³æãªèšèã§
ã³ãŒãã確èªããã®ã§ã次ã®ããšãèŠçŽã§ããŸãã
- æåã¯ãã¹ã±ãžã¥ãŒã©ãå¿ èŠãšãããã¹ãŠã®ãµãããã¥ãŒã«é 眮ãããŸãã
- æ°ããããããäœæããããšããããããã¥ãŒã«è¿œå ãããŸãã
- ãã©ã³ããŒã¯ãåžžã«ãããããã¥ãŒããåãåºãããããã®èšç»ãå®è¡ããŸãã
- 以äžã§ãïŒ
ããã«èå³æ·±ã詳现ããããŸãïŒäœããã®çç±ã§ããããã©ã³ããŒã«è©²åœããªãå Žåããã©ã³ããŒã¯åœŒã®ããã«åè©Šè¡ããŸããã æœæ°ŽèŠã¯ãã¥ãŒããåé€ããããã®èšç»ã¯å®äºããŸãããããã ãã§ãã å¯äžã®ãã£ã³ã¹ã¯å€±ãããŸãïŒ ïŒã¹ã±ãžã¥ãŒã©ãŒãåèµ·åãããŸã§ããã®å Žåããã¹ãŠã®ãããããã¥ãŒã«åã³è¿œå ãããŸããïŒ
ãã¡ãããã¹ã±ãžã¥ãŒã©ã¯å®éã«ã¯ããã¹ããŒãã§ããã¹ã±ãžã¥ãŒã©ã«ãããããªãå Žåãäžè¬çãªå Žåã次ã®ãããªãšã©ãŒãã³ãã©ãåŒã³åºãããŸãã
host, err := sched.config.Algorithm.Schedule(pod, sched.config.NodeLister) if err != nil { glog.V(1).Infof("Failed to schedule pod: %v/%v", pod.Namespace, pod.Name) sched.config.Error(pod, err)
sched.config.Error
é¢æ°
sched.config.Error
åã³ãã¥ãŒã«è¿œå ããããããããã§ãåŠçãè©Šè¡ãããŸãã
ã¡ãã£ãšåŸ ã£ãŠ ãªãç§ãã¡ã®ãã¹ã¿ãã¯ãã®äžã«ããã®ã§ããïŒ
ãã¹ãŠãéåžžã«ç°¡åã§ããå®éã«ãšã©ãŒãçºçãããšãã«ããã®
Error
é¢æ°ãåžžã«åŒã³åºããããšã¯éããªãããšãããããŸããã ããããäœæããŸããïŒ ãããã¯åãå·ã§çºè¡ãããŸãã - ãããTranslã ïŒæ£ããåŒã³åºãããã«ããã®åŸã埩å ãæ£ããè¡ããå§ããŸããã ã¯ã©ã¹ïŒ
ã¹ã±ãžã¥ãŒã©ããªããã®ããã«èšèšãããŠããã®ã§ããïŒ
ããå ç¢ãªã¢ãŒããã¯ãã£ã¯æ¬¡ã®ãšããã ãšæããŸãã
while True: pods = get_all_pods() for pod in pods: if pod.node == nil: assignNode(pod)
ã§ã¯ããªããã®ã¢ãããŒãã®ä»£ããã«ããã£ãã·ã¥ããªã¯ãšã¹ããã³ãŒã«ããã¯ã«é¢ãããããã®åé¡ããã¹ãŠèŠãã®ã§ããããïŒ ã¹ããŒãªãŒãèŠããšãäž»ãªçç±ã¯çç£æ§ã§ãããšããçµè«ã«éããŸãã äŸãšããŠã¯ãKubernetes 1.6ã®ã¹ã±ãŒã©ããªãã£ã®æŽæ°ããKubernetesã¹ã±ãžã¥ãŒã©ã®ããã©ãŒãã³ã¹ã®æ¹åã«é¢ãããã®CoreOSã®åºçç©ããããŸãã åŸè ã¯ã 2äžæéãã10åæªæºãŸã§ã3äžçã®èšç»æéã®ççž®ïŒ1åããŒã-çŽTranslãïŒã«ã€ããŠè¿°ã¹ãŠããŸã ã 2æéã¯éåžžã«é·ãæéã§ãããããã©ãŒãã³ã¹ãéèŠã§ãïŒ
æ°ããå²çè£ãèšç»ãããã³ã«ã·ã¹ãã ã®3äžåãã¹ãŠã®å²çè£ã調ã¹ãã®ã¯é·ãããããšãæããã«ãªã£ããããæ¬åœã«è€éãªã¡ã«ããºã ãèãåºãå¿ èŠããããŸãã
ã¹ã±ãžã¥ãŒã©ãå®éã«äœ¿çšãããã®ïŒKubernetesã®ã€ã³ãã©ãŒããŒ
ãã¹ãŠã®Kubernetesã³ã³ãããŒã©ãŒã®ã¢ãŒããã¯ãã£ã«ãšã£ãŠéåžžã«éèŠãšæããããã1ã€ã®ããšãèšããããšæããŸãã ããããæ å ±æäŸè ãã®èãæ¹ã§ãã 幞ããªããšã«ããkubernetes informerããã°ãŒã°ã«æ€çŽ¢ããããã¥ã¡ã³ãããããŸãã
ãã®éåžžã«äŸ¿å©ãªããã¥ã¡ã³ãã¯ã Writing ControllersãšåŒã°ããã³ã³ãããŒã©ãŒãäœæãã人ïŒã¹ã±ãžã¥ãŒã©ãŒã
cronjob
ã³ã³ãããŒã©ãŒãªã©ïŒã®èšèšã«ã€ããŠèª¬æããŠããŸãã ãšãŠãã¯ãŒã«ïŒ
ãã®ææžãæåã«èŠã€ãã£ãå Žåãäœãèµ·ãããã«ã€ããŠã®ç解ãå°ãéããªã£ããšæããŸãã
ã ãããæ å ±æäŸè ïŒ ããã¥ã¡ã³ãã®å 容ã¯æ¬¡ã®ãšããã§ãã
SharedInformers
䜿çšãSharedInformers
ãSharedInformers
ã¯ãç¹å®ã®ãªãœãŒã¹ã®è¿œå ãå€æŽãåé€ã«é¢ããéç¥ãåä¿¡ããããã®ããã¯ãæäŸããŸãã ãŸããå ±æãã£ãã·ã¥ã«ã¢ã¯ã»ã¹ãããã£ãã·ã¥ã®é©çšå Žæã決å®ããããã®äŸ¿å©ãªæ©èœãæäŸããŸãã
ã³ã³ãããŒã©ãŒãèµ·åãããšã
informer
ãã©ãŒ
informer
ïŒ
pod informer
ãã©ãŒ
pod informer
ïŒãäœæãããŸãã
- ãã¹ãŠã®å²çè£ã®çµè«ïŒãŸãïŒ;
- éç¥ãå€æŽããŸãã
cronjob
ã³ã³ãããŒã©ãŒã¯æ å ±æäŸè ã䜿çšããŸããïŒããããæäœãããšãã¹ãŠãè€éã«ãªããŸããããã®å Žåãããã©ãŒãã³ã¹ã®åé¡ã¯ãŸã ãªããšæããŸãïŒããä»ã®å€ãã®ïŒã»ãšãã©ïŒïŒããã䜿çšããŸãã ç¹ã«ãã¹ã±ãžã¥ãŒã©ããããè¡ããŸãã 圌ã®æ å ±æäŸè ã®èšå®ã¯ãã®ã³ãŒãã§èŠã€ããããšãã§ããŸã ã
åãã¥ãŒã€ã³ã°
åãããã¥ã¡ã³ãïŒWriting ControllersïŒã«ãããã¥ãŒå ã®ã¢ã€ãã ã®åé 眮ãåŠçããæ¹æ³ã«é¢ããæ瀺ãå«ãŸããŠããŸãã
ä¿¡é Œã§ããåãã¥ãŒã€ã³ã°ãè¡ãã«ã¯ããšã©ãŒãäžäœã¬ãã«ã«äžããŠãã ããã åççãªããŒã«ããã¯ã䜿çšããåçŽãªå®è£ ã«ã¯ãworkqueue.RateLimitingInterface
ãããworkqueue.RateLimitingInterface
ã
åãã¥ãŒã€ã³ã°ãå¿ èŠãªå Žåãã³ã³ãããŒã©ãŒã®ã¡ã€ã³æ©èœã¯ãšã©ãŒãè¿ããŸãã ååšããªãå Žåã¯ãutilruntime.HandleError
ã䜿çšããŠnil
ãè¿ããŸãã ããã«ããããšã©ãŒåŠçã®ã±ãŒã¹ã®èª¿æ»ãå€§å¹ ã«ç°¡çŽ åãããå¿ èŠãªãšãã«ã³ã³ãããŒã©ãŒãäœãã倱ãããšããªããªããŸãã
è¯ãã¢ããã€ã¹ã®ããã«èŠããŸãããã¹ãŠã®ãšã©ãŒãæ£ããåŠçããããšã¯å°é£ãªå Žåããããããã³ãŒãã¬ãã¥ãŒã¢ããšã©ãŒãæ£ããåŠçãããŠãããã©ããã確èªããç°¡åãªæ¹æ³ãéèŠã§ãã ãã£ãããïŒ
æ å ±æäŸè ããåæãããå¿ èŠããããŸãïŒå³ïŒïŒ
ãããŠãç§ã®èª¿æ»äžã®æåŸã®èå³æ·±ã詳现ã
ã€ã³ãã©ãŒããŒã§ã¯ããåæãïŒ sync ïŒã®æŠå¿µã䜿çšãããŸãã ããã¯ããã°ã©ã ãåèµ·åãããããªãã®ã§ããç£èŠããŠãããã¹ãŠã®ãªãœãŒã¹ã®ãªã¹ããååŸããã®ã§ããã¹ãŠãå®éã«æ£ããããšã確èªã§ããŸãã åãã¬ã€ããåæã«ã€ããŠè¿°ã¹ãŠããããšã¯æ¬¡ã®ãšããã§ãã
ãŠã©ãããšã€ã³ãã©ãŒããŒã¯ãåæããããŸãã å®æçã«ãã¯ã©ã¹ã¿ãŒå ã®åé©åãªãªããžã§ã¯ããUpdate
ã¡ãœããã«é ä¿¡ããŸãã ãªããžã§ã¯ãã§è¿œå ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠãããå Žåã«é©ããŠããŸãããããã¯åžžã«å¿ èŠãªããã§ã¯ãããŸããã
èŠçŽ ãåãã¥ãŒã€ã³ã°ããå¿ èŠããªããæ°ããå€æŽããªãããšã確å®ãªå Žåã¯ãæ°ãããªããžã§ã¯ããšå€ããªããžã§ã¯ãã®ãªãœãŒã¹ããŒãžã§ã³ãæ¯èŒã§ããŸãã ããããåäžã§ããå Žåãåãã¥ãŒã€ã³ã°ãã¹ãããã§ããŸãã 泚æããŠãã ããã ãšã©ãŒã®ããã«èŠçŽ ã®ç¹°ãè¿ãé 眮ãã¹ããããããå Žåããã®èŠçŽ ã¯å€±ãããå¯èœæ§ããããŸãïŒãã¥ãŒã«åå ¥åããªãã§ãã ããïŒã
ç°¡åã«èšãã°ããåæãè¡ãå¿ èŠããããŸãã åæããªããšãã¢ã€ãã ã倱ããããã¥ãŒãžã®æ°ããè©Šè¡ãè¡ãããªãç¶æ³ãçºçããå¯èœæ§ããããŸããã ããããŸãã«ç§ãã¡ã®ã±ãŒã¹ã§èµ·ãã£ãããšã§ãïŒ
Kubernetesã¹ã±ãžã¥ãŒã©ãååæããªã
ã ãããåæã®æŠå¿µã«ç²ŸéããåŸ... Kubernetesã¹ã±ãžã¥ãŒã©ãŒã¯ããã決ããŠå®è¡ããªããšæããããšããçµè«ã«éããŸããïŒ ãã®ã³ãŒãã§ã¯ããã¹ãŠã次ã®ããã«ãªããŸãã
informerFactory := informers.NewSharedInformerFactory(kubecli, 0) // cache only non-terminal pods podInformer := factory.NewPodInformer(kubecli, 0)
ãããã®æ°å€ã0ãã¯ã ååææé ãïŒ ååææé ïŒãæå³ãããååæãçºçããªãããšè§£éããã®ãè«ççã§ãã ãããããïŒ ãªããããè¡ãããã®ã§ããïŒ ãã®åé¡ã«èªä¿¡ããªãããkubernetesã¹ã±ãžã¥ãŒã©ãŒã®ååæããã°ãŒã°ã«ã§æ€çŽ¢ãããšã ãã«ãªã¯ãšã¹ãïŒ16840 ïŒã¹ã±ãžã¥ãŒã©ãŒã®ååæãè¿œå ïŒã次ã®2ã€ã®ã³ã¡ã³ãã§èŠã€ããããšãã§ããŸããã
@brendandburns-ããã§äœãä¿®æ£ãããäºå®ã§ããïŒ ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããããããã®ãããªå°ããªååææéã«ã¯æ¬åœã«å察ã§ãã
ç§ã¯@ wojtek-tã«åæããŸãã ååæã§åé¡ã解決ã§ããå Žåã¯ãã³ãŒãã®ã©ããã«ãã°ãé ãããšããŠããããšãæå³ããŸãã ååæã¯æ£ãã解決çã§ã¯ãªããšæããŸãã
ãããžã§ã¯ãã®ã¡ã³ãããŒã¯ãååæã䜿çšããŠé衚瀺ã«ããããããã³ãŒãå ã®ãã°ããããã¢ããããŠä¿®æ£ããæ¹ããããããååæããªãããšã«æ±ºããããšãããããŸããã
ã³ãŒãèªã¿åãã®ãã³ã
ç§ãç¥ãéããå éšããã®Kubernetesã¹ã±ãžã¥ãŒã©ã®å®éã®äœæ¥ã¯ãä»ã®å€ãã®ãã®ãšåæ§ã«ãã©ãã«ãèšè¿°ãããŠããŸããã
å¿ èŠãªã³ãŒããèªãã®ã«åœ¹ç«ã€ããã€ãã®ããªãã¯ã次ã«ç€ºããŸãã
- å¿
èŠãªãã®ããã¹ãŠå€§ããªãã¡ã€ã«ã«çµåããŸãã äžèšã«ã€ããŠã¯ãã§ã«ããã«ã€ããŠæžãããŠããŸãããå®éã«ã¯ãç¹ã«ãã¹ãŠãå®å
šã«ç·šæãããŠããæ¹æ³ããŸã ããããªãå Žåããã¡ã€ã«éã®åãæ¿ãã«æ¯ã¹ãŠé¢æ°åŒã³åºãéã®åãæ¿ããã¯ããã«ç°¡åã«ãªããŸããã
- ããã€ãå ·äœçãªè³ªåããããŸãã ç§ã®å Žåãããšã©ãŒåŠçã¯ã©ã®ããã«æ©èœããŸããïŒã ãã©ã³ããŒã«å±ããªããšã©ããªããŸããïŒã è¿ãã«ã¯å€ãã®ã³ãŒãããããŸã...ãããã«å²ãåœãŠãããç¹å®ã®ããŒããéžæããæ¹æ³ããããŸãããããŸãæ°ã«ããŸããã§ããïŒãããŠããããã©ã®ããã«æ©èœããããŸã ããããŸããïŒã
Kubernetesã§ã®äœæ¥ã¯ãšãŠãã¯ãŒã«ã§ãïŒ
Kubernetesã¯æ¬åœã«æŽç·ŽããããœãããŠã§ã¢ã§ãã 皌åäžã®ã¯ã©ã¹ã¿ãŒãååŸããããã«ããAPIãµãŒããŒãã¹ã±ãžã¥ãŒã©ãŒãã³ã³ãããŒã©ãŒãããŒãžã£ãŒãflannelãkube-proxyãkubeletãªã©ã®ã³ã³ãããŒãããã¯ãŒãã³ã°ã®å°ãªããšã6ã€ã®ç°ãªãã³ã³ããŒãã³ããæ§æããå¿ èŠããããŸãã ãããã£ãŠïŒç§ã®ããã«ãå®è¡ãããœãããŠã§ã¢ãç解ãããå ŽåïŒãããããã¹ãŠã®ã³ã³ããŒãã³ããäœãããã®ããããããã©ã®ããã«çžäºäœçšããã®ãããããŠ50å åã®åæ©èœãæ§æããŠå¿ èŠãªãã®ãååŸããæ¹æ³ãç解ããå¿ èŠããããŸãã
ããããããã¥ã¡ã³ãã¯ååã«åªããŠãããäœããååã«ããã¥ã¡ã³ãåãããŠããªãå Žåãã³ãŒãã¯éåžžã«èªã¿ãããããã«ãªã¯ãšã¹ãã¯æ¬åœã«ãã¢ã¬ãã¥ãŒãããŠããããã§ãã
ãããã¥ã¡ã³ããèªã¿ãããã§ãªãå Žåã¯ã³ãŒããèªãããšããååãå®éã«ããããŠãã£ãšæ¥åžžçã«å®è·µããªããã°ãªããŸããã§ããã ãããããããã«ããŠããããã¯è¯ããªãããã®çŽ æŽãããã¹ãã«ã§ãïŒ
翻蚳è ããã®PS ã ããã°ãã芧ãã ããã
- ã å°èŠæš¡ãããžã§ã¯ãã§ã®Kubernetesã§ã®çµéš ã ïŒKubernetesã®æè¡ããã€ã¹ã®çŽ¹ä»ãå«ããããªã¬ããŒãïŒ;
- ã Kubernetesãå¿ èŠãªçç±ãšPaaSããã倧ããçç± ";
- ã Minikubeã§Kubernetesã䜿ãå§ãã ã ïŒç¿»èš³ïŒ