ã泚æ perevã ïŒçŽ æã®ç¿»èš³ã®2çªç®ãšæåŸã®éšåã§ãã... Kubernetesçããã€èµ·ããã®ãïŒã nginx
æåã®éšåãkubectlãkube-apiserverãetcdãããã³åæååã®äœæ¥ã«åœãŠãããŠããå Žåã¯ãDeployments and ReplicaSetsã³ã³ãããŒã©ãŒãæ å ±æäŸè ãã¹ã±ãžã¥ãŒã©ãŒãããã³kubeletã«ã€ããŠèª¬æããŸãã ãŠãŒã¶ãŒã«ãã£ãŠïŒkubectlãä»ããŠïŒéä¿¡ããããªã¯ãšã¹ããKubernetesã§æ¿èªããã³å®è¡ãããæ°ãããªããžã§ã¯ãïŒãªãœãŒã¹ïŒãäœæãããŠããŒã¿ããŒã¹ïŒetcdïŒã«ä¿åãããåŸã«åæ¢ããããšãæãåºããŠãã ããapiserverã®å ŽåïŒã
å¶åŸ¡ãµã€ã¯ã«
ãããã€ã¡ã³ãã³ã³ãããŒã©ãŒ
ãã®æç¹ã§ãDeploymentãšã³ããªã¯etcdã«ååšãããã¹ãŠã®åæåããžãã¯ã¯å®äºããŠããŸãã 次ã®æé ã¯ãKubernetesã䜿çšãããªãœãŒã¹ããããžãæ§æããããã®ãã®ã§ãã èããŠã¿ããšãDeploymentã¯æ¬åœã«ReplicaSetã®ã³ã¬ã¯ã·ã§ã³ã§ãããReplicatSetã¯å²çè£ã®ã³ã¬ã¯ã·ã§ã³ã§ãã åäžã®HTTPãªã¯ãšã¹ããããã®éå±€ãäœæããããã«Kubernetesã§äœãèµ·ãããŸããïŒ ããã§ã¯ãçµ±åãããK8sã³ã³ãããŒã©ãŒãããžãã¹ã«ãªããŸãã
Kubernetesã¯ãã·ã¹ãã å šäœã§ãã³ã³ãããŒã©ãŒããåºç¯å²ã«äœ¿çšããŠããŸãã ã³ã³ãããŒã©ãŒã¯ãKubernetesã·ã¹ãã ã®çŸåšã®ç¶æ ãç®çã®ç¶æ ãšæ¯èŒããéåæã¹ã¯ãªããã§ãã åã³ã³ãããŒã©ãŒã¯ãã®å°ããªéšåãæ åœãã
kube-controller-manager
ã³ã³ããŒãã³ãã«ãã£ãŠèµ·åãããŸãã ããžãã¹ã«åå ¥ããæåã®äŒæ¥ã§ããDeployment Controllerã玹ä»ããŸãããã
Deploymentãå«ãã¬ã³ãŒããetcdã«ä¿åãããŠåæåããããšãkube-apiserverã«è¡šç€ºãããŸãã æ°ãããªãœãŒã¹ã衚瀺ããããšã察å¿ããã¬ã³ãŒãïŒå±éïŒéã®å€æŽã远跡ããã¿ã¹ã¯ãå±éã³ã³ãããŒã©ãŒã«ãã£ãŠæ€åºãããŸãã ãã®å Žåãã³ã³ãããŒã©ãŒã¯ãæ å ±æäŸè ãä»ããŠäœæã€ãã³ãçšã®ç¹å¥ãªã³ãŒã«ããã¯ãç»é²ããŸãïŒè©³çŽ°ã«ã€ããŠã¯ã以äžãåç §ããŠãã ããïŒã
ãã®ãã³ãã©ãŒã¯ãDeploymentãæåã«å©çšå¯èœã«ãªã£ããšãã«åŒã³åºãããå éšãã¥ãŒã«ãªããžã§ã¯ããè¿œå ããããšã§äœæ¥ãéå§ããŸãã ãã®ãªããžã§ã¯ãã®åŠçã«å°éãããŸã§ã«ãã³ã³ãããŒã©ãŒã¯Deploymentãæ€æ»ã ãReplicaSetã¬ã³ãŒããšããŒã¹ãé¢é£ä»ããããŠããªãããšãèªèããŸãã 圌ã¯ã©ãã«ã»ã¬ã¯ã¿ãŒã«ãã£ãŠkube-apiserverãããŒãªã³ã°ããããšã§ãã®æ å ±ãåãåããŸãïŒè©³çŽ°ã«ã€ããŠã¯ã Kubernetesã®ããã¥ã¡ã³ã - ãããTranslããåç §ããŠãã ããïŒã ãã®åæããã»ã¹ã¯ç¶æ ã«ã€ããŠäœãç¥ããªãïŒç¶æ ã«äŸåããªãïŒããšã«æ³šæããŠãã ãããæ¢åã®ã¬ã³ãŒããšåãæ¹æ³ã§æ°ããã¬ã³ãŒãããã§ãã¯ããŸãã
å¿ èŠãªã¬ã³ãŒããååšããªãããšãããããšãã³ã³ãããŒã©ãŒã¯ã¹ã±ãŒãªã³ã°ããã»ã¹ãéå§ããŠãäºæ³ãããç¶æ ã«å°éããŸãã ãã®ããã»ã¹ã¯ãReplicaSetãªãœãŒã¹ãããŒã«ã¢ãŠãïŒäœæãªã©ïŒããããã«ã©ãã«ã»ã¬ã¯ã¿ãŒãå²ãåœãŠãæåã®ãªããžã§ã³ãå²ãåœãŠãããšã§å®è¡ãããŸãã ReplicaSetã®PodSpecããã³ãã®ä»ã®ã¡ã¿ããŒã¿ã¯ãå±éãããã§ã¹ãããã³ããŒãããŸãã ãã®åŸãå±éã¬ã³ãŒãã®æŽæ°ãå¿ èŠã«ãªãå ŽåããããŸãïŒããšãã°ãé²è¡æéãèšå®ãããŠããå Žåã ã€ãŸããä»æ§ãã£ãŒã«ã
.spec.progressDeadlineSeconds
ã
.spec.progressDeadlineSeconds
- çŽTranslã ïŒã
ãã®åŸãã¹ããŒã¿ã¹ãæŽæ°ãã ãåã調æŽãµã€ã¯ã«ãéå§ãããå±éãç®çã®å®äºç¶æ ãšæ¯èŒããŸãã ã³ã³ãããŒã©ãŒã¯ReplicaSetã®äœæã®ã¿ãèªèããŠããããã調æŽã¹ããŒãžã¯ReplicaSetãæ åœãã次ã®ã³ã³ãããŒã©ãŒã§ç¶è¡ãããŸãã
ReplicaSetsã³ã³ãããŒã©ãŒ
åã®æé ã§ãå±éã³ã³ãããŒã©ãŒãå±éçšã®æåã®ReplicaSetãäœæããŸãããããŸã çã¯ãããŸããã ãããReplicaSetsã³ã³ãããŒã©ãŒã®å©ããšãªããŸãã ãã®ã¿ã¹ã¯ã¯ãReplicaSetsããã³äŸåãªãœãŒã¹ïŒããŒã¹ïŒã®ã©ã€ããµã€ã¯ã«ãç£èŠããããšã§ãã ä»ã®ã»ãšãã©ã®ã³ã³ãããŒã©ãŒãšåæ§ã«ãããã¯ç¹å®ã®ã€ãã³ãã®ããªã¬ãŒã®ãã³ãã©ãŒã«ãããã®ã§ãã
ç§ãã¡ãèå³ãæã£ãŠããã€ãã³ãã¯åµé ã§ãã ïŒå±éã³ã³ãããŒã©ãŒã®çµæãšããŠïŒReplicaSetãäœæããããšãRSã³ã³ãããŒã©ãŒã¯æ°ããReplicaSetã®ç¶æ ãæ€æ»ããååšãããã®ãšå¿ èŠãªãã®ã®éã«éããããããšãèªèããŸãã ãããã£ãŠã圌ã¯ReplicaSetã«å±ããçåºãå±éããããšã§ç¶æ ãä¿®æ£ããŸãã ããããäœæããããã»ã¹ã¯ãReplicaSetããŒã¹ãïŒèŠªDeploymentããç¶æ¿ïŒã®æ°ã«å¯Ÿå¿ããŠãã¡ããšè¡ãããŸãã
å²çè£ã®äœææäœããããã§å®è¡ãããŸã
SlowStartInitialBatchSize
ããéå§ãããã¹ããŒã¹ã¿ãŒããæäœã®å埩ãæåãããã³ã«ãã®å€ã
SlowStartInitialBatchSize
ããŸãã ãã®ã¢ãããŒãã¯ãé »ç¹ãªããŒã¹ããŒããšã©ãŒïŒããšãã°ããªãœãŒã¹ã¯ã©ãŒã¿ã«ããïŒã®å Žåã«ãkube-apiserverãäžèŠãªHTTPèŠæ±ãã¹ããŒãããªã¹ã¯ãæžããããã«èšèšãããŠããŸãã 倱æããå Žåã¯ãã·ã¹ãã ã®æ®ãã®éšåãžã®åœ±é¿ãæå°éã«æããŠãããå®è¡ããŸãã
Kubernetesã¯ãææè ãææè åç §ïŒèŠªIDãåç §ããåãªãœãŒã¹ã®ãã£ãŒã«ãïŒãžã®ãªã³ã¯ãä»ããŠãªããžã§ã¯ãã®éå±€ãå®è£ ããŸãã ããã«ãããã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãã³ã³ãããŒã©ãŒç®¡çã®ãªãœãŒã¹ãåé€ïŒã«ã¹ã±ãŒãåé€ïŒããããšãã«ãã¹ãŠã®åãªãœãŒã¹ã確å®ã«èŠã€ããã ãã§ãªãã芪ãåã®ããã«æŠããªãããã®å¹æçãªæ¹æ³ãæäŸããŸãïŒåãåã«ãã£ãŠïŒã
Owner Referencesã䜿çšããã¢ãŒããã¯ãã£ã®ãã1ã€ã®å©ç¹ã¯ãã¹ããŒããã«ã§ãããšããããšã§ããã³ã³ãããŒã©ããªããŒãããå¿ èŠãããå ŽåããªãœãŒã¹ããããžã¯ã³ã³ãããŒã©ããç¬ç«ããŠããããããã®ã·ã³ãã«ã¯ã·ã¹ãã ã®ä»ã®éšåã«åœ±é¿ããŸããã åé¢ã«çŠç¹ãåœãŠãããŠããã®ã¯ãã³ã³ãããŒã©ãŒèªäœã®ã¢ãŒããã¯ãã£ãŒã«æµžéããŠããããã§ããã³ã³ãããŒã©ãŒã¯ãæ瀺çã«ææããŠããªããªãœãŒã¹ã§ã¯æ©èœããŸããã éã«ãã³ã³ãããŒã©ã¯ã å¹²æžãéå ±æã§ã¯ãªãããªãœãŒã¹ãææãããšãã䞻匵ã«ãããŠéžæçã§ãªããã°ãªããŸããã
ããããææè ã®ãªã³ã¯ã«æ»ããŸãã ãå€ç«ããããªãœãŒã¹ãã·ã¹ãã ã«è¡šç€ºãããããšããããŸã-éåžžãããã¯æ¬¡ã®çç±ã«ãããã®ã§ãã
- 芪ã¯åé€ãããŸãããåäŸã¯åé€ãããŸããã
- ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããªã·ãŒã¯ãåã®åé€ãçŠæ¢ããŸãã
ãããçºçãããšãã³ã³ãããŒã©ãŒã¯ãå€ç«ãã芪ãæ°ãã芪ã«ãã£ãŠæ¡çšãããããšã確èªããŸãã å€ãã®èŠªã¯åãç³è«ã§ããŸãããæåããã®ã¯ãã®ãã¡ã®1人ã ãã§ãïŒæ®ãã¯æ€èšŒãšã©ãŒãåãåããŸãïŒã
æ å ±æäŸè
ãæ°ã¥ããããããŸããããRBACãDeploymentsãªã©ã®ã³ã³ãããŒã©ãŒã®æäœã§ã¯ãã¯ã©ã¹ã¿ãŒã®ç¶æ ãååŸããå¿ èŠããããŸãã RBACãªãŒãœã©ã€ã¶ãŒã䜿çšããäŸã«æ»ããšãèŠæ±ãå°çãããšããªãŒã»ã³ãã£ã±ãŒã¿ãŒã¯ãŠãŒã¶ãŒã®ç¶æ ã®åæè¡šçŸãå°æ¥ã®äœ¿çšã®ããã«ä¿åããããšãããããŸãã åŸã§ãæ¿èªè ã¯ããã䜿çšããŠããŠãŒã¶ãŒã«é¢é£ä»ããããŠãããã¹ãŠã®ããŒã«ãšããŒã«ãã€ã³ãã£ã³ã°ãetcdããååŸããŸãã ã³ã³ãããŒã©ãŒã¯ããã®ãããªãªãœãŒã¹ãã©ã®ããã«èªã¿åããå€æŽããå¿ èŠããããŸãã ããã¯äžè¬çãªäœ¿çšäŸã§ãããã€ã³ãã©ãŒããŒã®å©ããåããŠKubernetesã§è§£æ±ºãããããšãããããŸããã
æ å ±æäŸè ã¯ãã³ã³ãããŒã©ãŒããªããžããªãŒããã€ãã³ãããµãã¹ã¯ã©ã€ãããé¢å¿ã®ãããªãœãŒã¹ã®ãªã¹ããååŸã§ããããã«ãããã¿ãŒã³ã§ãã 䜿ããããæœè±¡åãæäŸããããšã«å ããŠããã£ãã·ã³ã°ãªã©ã®å€ãã®åºæ¬çãªã¡ã«ããºã ãå®è£ ããŸãïŒkube-apiserverãžã®æ¥ç¶æ°ãšããµãŒããŒããã³ã³ã³ãããŒã©ãŒåŽã§ã®åã·ãªã¢ã©ã€ãºã®å¿ èŠæ§ãæžãããããéèŠã§ãïŒã ããã«ããã®ã¢ãããŒãã«ãããã³ã³ãããŒã©ãŒã¯ã誰ãã®è¶³ãèžãããšãæããããšãªãã ã¹ã¬ããã»ãŒããã£ãšå¯Ÿè©±ã§ããŸãã
ãã®ããã°æçš¿ã§ãã€ã³ãã©ãŒããŒãã³ã³ãããŒã©ãŒã«é¢ããŠã©ã®ããã«æ©èœãããã«ã€ããŠè©³ãããèªã¿ãã ããã ïŒ æ³štranslãïŒæ å ±æäŸè ã®ä»äºã¯ãããã°ã®ãã®ç¿»èš³ãããèšäºã§ã説æãããŠããŸããïŒ
ãã©ã³ããŒ
ãã¹ãŠã®ã³ã³ãããŒã©ãŒãããŸããã£ãåŸãDeploydãReplicaSetãããã³3ã€ã®ããããetcdã«ä¿åãããkube-apiserverã§äœ¿çšå¯èœã«ãªããŸãã ãã ãããããã¯ãŸã ãµã€ãã«ã¹ã±ãžã¥ãŒã«/å²ãåœãŠãããŠããªãããã
Pending
ç¶æ ã®ãŸãŸã§ãã ã¹ã±ãžã¥ãŒã©ãŒã¯ããããè¡ãæåŸã®ã³ã³ãããŒã©ãŒã§ãã
ã¹ã±ãžã¥ãŒã©ã¯ãã³ã³ãããŒã«ãã¬ãŒã³ã®ç¬ç«ããã³ã³ããŒãã³ããšããŠèµ·åããä»ã®ã³ã³ãããŒã©ãŒãšåæ§ã«åäœããŸããã€ãã³ãã远跡ããç¶æ ãç®çã®ç¶æ ã«ããããšããŸãã ãã®å ŽåãPodSpecã®
NodeName
ãã£ãŒã«ãã空ã®ããããéžæããå²ãåœãŠå¯èœãªé©åãªããŒããèŠã€ããããšããŸãã é©åãªããŒããèŠã€ããããã«ãç¹å¥ãªèšç»ã¢ã«ãŽãªãºã ã䜿çšãããŸãã ããã©ã«ãã§ã¯ã次ã®ããã«æ©èœããŸãã
- ã¹ã±ãžã¥ãŒã©ãŒãéå§ãããšãããã©ã«ãã®è¿°éšãã§ãŒã³ããã°ã«èšé²ãããŸã ã ãããã®è¿°èªã¯åºæ¬çã«ãåŒã³åºããããšãã«çåºãé 眮ããã®ã«é©ããããŒããé€å€ããé¢æ°ã§ãã ããšãã°ãCPUãŸãã¯RAMãªãœãŒã¹ã®æ瀺çãªèŠä»¶ãPodSpecã§èšå®ãããŠãããããŒãããªãœãŒã¹äžè¶³ã®ããã«ãã®ãããªèŠä»¶ãæºãããŠããªãå Žåããã®ããŒãã¯çåºçšã«éžæãããŸããïŒããŒãã®ãªãœãŒã¹å®¹éã¯ããã®å®¹éã§å®è¡ãããŠããã³ã³ããã®èŠæ±ãªãœãŒã¹ã®åèšãåŒãããã®ãšèŠãªãããŸãïŒç¬éïŒã
- é©åãªããŒããéžæããããšãæãé©åãªããŒããéžæããŠã©ã³ã¯ä»ãããããã«ãäžé£ã®åªå æ©èœãèµ·åãããŸãã ããšãã°ãã·ã¹ãã å šäœã«ã¯ãŒã¯ããŒããããé©åã«åæ£ããããã«ãèŠæ±ããããã¹ãŠã®ãªãœãŒã¹ãããå°ãªãããŒãã«åªå é äœãäžããããŸãïŒããã¯ãã¯ãŒã¯ããŒããå°ããããšã®ææšãšããŠæ©èœããããã§ãïŒã ãããã®æ©èœãèµ·åãããšãåããŒãã«æ°å€è©äŸ¡ãå²ãåœãŠãããŸãã æé«ã®è©äŸ¡ãæã€ããŒããèšç»ïŒäºå®ïŒã®ããã«éžæãããŸãã
ã¢ã«ãŽãªãºã ãããŒãã決å®ãããšãã¹ã±ãžã¥ãŒã©ã¯
Name
ãš
UID
å€ãããŒã¹ã«å¯Ÿå¿ããBindingãªããžã§ã¯ããäœæã ã
ObjectReference
ãã£ãŒã«ãã«ã¯éžæããããŒãã®ååãå«ãŸããŸãã POSTèŠæ±ãä»ããŠapiserverã«éä¿¡ãããŸãã
kube-apiserverãBindingãªããžã§ã¯ããåãåããšãã¬ãžã¹ããªã¯ãããéã·ãªã¢ã«åããããŒã¹ãªããžã§ã¯ãã®æ¬¡ã®ãã£ãŒã«ããæŽæ°ããŸãïŒ
PodScheduled
ãã
NodeName
ãèšå®ãã察å¿ãã泚éãè¿œå ã ã
PodScheduled
ã¹ããŒã¿ã¹ã
True
èšå®ã
True
ã
ã¹ã±ãžã¥ãŒã©ãŒãããŒãããããã«å²ãåœãŠããšããã®ãããã«ããã¯ãŒãã¬ãããäœæ¥ãéå§ããŸãã
ã¹ã±ãžã¥ãŒã©ã®ã«ã¹ã¿ãã€ãºã«é¢ãã泚æ ïŒèå³æ·±ãããšã«ãè¿°èªãšåªå 床ã®äž¡æ¹ã®æ©èœãæ¡åŒµãããŠããã
--policy-config-file
ãã©ã°ã§æ±ºå®ã§ã
--policy-config-file
ã ããã«ãããããçšåºŠã®æè»æ§ãåŸãããŸãã 管çè ã¯ãåã ã®ãããã€ã¡ã³ãã«å¯ŸããŠã¹ã±ãžã¥ãŒã©ãŒïŒä»»æã®åŠçããžãã¯ãåããã³ã³ãããŒã©ãŒïŒãå®è¡ããããšãã§ããŸãã PodSpecã«
schedulerName
ãå«ãŸ
schedulerName
å ŽåãKubernetesã¯ãã®ãããã®ã¹ã±ãžã¥ãŒãªã³ã°ãé©åãªååã§ç»é²ãããŠãããã¹ãŠã®ã¹ã±ãžã¥ãŒã©ãŒã«æž¡ããŸãã
ãã¥ãã¬ãã
ããŒã¹åæ
ããŠãã¡ã€ã³ã³ã³ãããŒã©ãŒã«ãŒãã¯å®äºã§ãã èŠçŽãããšãHTTPãªã¯ãšã¹ãã¯èªèšŒãæ¿èªãã¢ã¯ã»ã¹å¶åŸ¡ã®æ®µéãééããŸããã etcdã§ã¯ãDeploymentãReplicaSetãããã³3ã€ã®ããããäœæãããŸããã åæååã®ã»ãããæºãããŸããã æåŸã«ãåãããã«é©åãªããŒããå²ãåœãŠãããŸããã ãããããããŸã§ãç§ãã¡ã«ãã£ãŠè°è«ãããç¶æ ã¯etcdã«ã®ã¿ååšããŠããŸããã 次ã®ã¹ãããã«ã¯ãKubernetesã®ãããªåæ£ã·ã¹ãã ã®äž»èŠãªãã€ã³ãã§ããäœæ¥ããŒãå šäœã«ãã®ã¹ããŒã¿ã¹ãåºããããšãå«ãŸããŸãã ããã¯ãkubeletãšåŒã°ããã³ã³ããŒãã³ããä»ããŠçºçããŸãã è¡ããïŒ
Kubeletã¯ãKubernetesã¯ã©ã¹ã¿ãŒå ã®ãã¹ãŠã®ããŒãã§å®è¡ããããšãŒãžã§ã³ãã§ããããšããããçã®ã©ã€ããµã€ã¯ã«ãç¶æãã責任ããããŸãã ãããã£ãŠããããŒã¹ãæœè±¡åïŒæ¬è³ªçã«ã¯Kubernetesã®æŠå¿µã«ãããŸããïŒããã®ãã«ãã£ã³ã°ãããã¯ïŒã³ã³ããïŒã«è§£éããããžãã¯å šäœã«åœ¹ç«ã¡ãŸãã ãŸããããªã¥ãŒã ã®ããŠã³ããã³ã³ããã®ãã°ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãããã³ãã®ä»å€ãã®éèŠãªããšã«é¢é£ãããã¹ãŠã®ããžãã¯ãåŠçããŸãã
Kubeletã¯ã³ã³ãããŒã©ãŒãšããŠåã³äŸ¿å©ã«è¡šç€ºãããŸãã 圌ã¯20ç§ããšã«kube-apiserverã§ããããããŒãªã³ã°ããŸãïŒããã¯æ§æå¯èœã§ãïŒ [Kubernetesã®åæ§ã®ééã¯ã ãã®ããã°æçš¿ã§èª¬æãããŠããŸã- çŽ perevã ] ãkubeletãå®è¡ãããŠããããŒãã®ååãšäžèŽãã
NodeName
å€ãæã€ãã®ãé€å€ããŸãã å²çè£ã®ãªã¹ããåãåã£ã圌ã¯ããããå éšãã£ãã·ã¥ãšæ¯èŒããæ°ããè£å ãçºèŠããå·®ç°ãååšããå Žåã¯ç¶æ ã®åæãéå§ããŸãã ãã®åæããã»ã¹ãã©ã®ããã«èŠãããèŠãŠã¿ãŸãããïŒ
- æœæ°ŽèŠãäœæãããå ŽåïŒç§ãã¡ã®å ŽåïŒãkubelet ã¯åæã¡ããªãã¯ãç»é²ããŸããããã¯ãçã®é 延ã远跡ããããã«Prometheusã«ãã£ãŠäœ¿çšãããŸãã
- çŸåšã®çåºãã§ãŒãºã®ç¶æ
ãè¡šã
PodStatus
ãªããžã§ã¯ããPodStatus
ãŸãã çåºæ®µéã¯ããã®ã©ã€ããµã€ã¯ã«ã«ãããçåºã®äœçœ®ã®é«ã¬ãã«ã®æå®ã§ãã äŸïŒPending
ãRunning
ãSucceeded
ãFailed
ããã³Unknown
ã å®çŸ©ããã®ã¯ããã»ã©ç°¡åã§ã¯ãªãã®ã§ãæ£ç¢ºã«äœãèµ·ãããèŠãŠã¿ãŸãããã
- ãŸãã
PodSyncHandlers
ãã§ãŒã³ãPodSyncHandlers
åŒã³åºãããŸãã åãã³ãã©ãŒã¯ãããŒãäžã«underãæ®ããã©ããããã§ãã¯ããŸãã ããã§äœãããå¿ èŠããªããšå€æããå ŽåãããŒã¹ã®ãã§ãŒãºã¯PodFailed
ã«å€ãã ãããŒã¹ã¯ããŒãããåé€ãããŸãã ããšãã°ãactiveDeadlineSeconds
ã®å€ãactiveDeadlineSeconds
ïŒãžã§ãäžã«äœ¿çšïŒãactiveDeadlineSeconds
ããŒãããåé€ããå¿ èŠããããŸãã - 次ã«ãçåºæ®µéã¯ãã®åæã³ã³ãããšå®éã®ã³ã³ããã®ç¶æ
ã«ãã£ãŠæ±ºå®ãããŸãã ãã®ã±ãŒã¹ã®ã³ã³ããã¯ãŸã èµ·åãããŠããªãããããåŸ
æ©äžã ïŒ åŸ
æ©äž ïŒãšããŠåé¡ãããŸãã ä¿çäžã®ã³ã³ãããæã€äººã¯èª°ã§ã
Pending
ã§ãã - æåŸã«ãçåºã®ç¶æ
ã¯ã³ã³ããã®ç¶æ
ã«ãã£ãŠæ±ºãŸããŸãã ã³ã³ããã©ã³ã¿ã€ã ã«ãã£ãŠã³ã³ããããŸã äœæãããŠããªãããã
PodReady
æ¡ä»¶ã¯False
ã«èšå®ãããŸãã
- ãŸãã
-
PodStatus
äœæããããšãPodç¶æ ãããŒãžã£ãŒã«éä¿¡ãããapiserverãä»ããŠetcdã®ãšã³ããªãéåæã«æŽæ°ãããŸãã - 次ã«ãäžé£ã®ã¢ã¯ã»ã¹ãã³ãã©ãŒãèµ·åãããããã«æ£ããã»ãã¥ãªãã£æš©éãããããšã確èªããŸãã ç¹ã«ãAppArmorããã³
NO_NEW_PRIVS
ãããã¡ã€ã«ãé©çšãããŸãã ãã®æ®µéã§å€±æãããããã¯ãç¡æéã«Pending
ç¶æ ã®ãŸãŸã«ãªããŸãã - å®è¡æãã©ã°
cgroups-per-qos
å Žåãkubeletã¯çåºã®cgroupãäœæãããªãœãŒã¹ãã©ã¡ãŒã¿ãŒãé©çšããŸãã ããã¯ãçåºã®ãµãŒãã¹å質ïŒQoSïŒã®æé©ãªå®è£ ãå¯èœã«ããããã«è¡ãããŸãã - å²çè£ããŒã¿ãå«ããã£ã¬ã¯ããªãäœæãããŸãã ãããã«ã¯ãããŒã¹ã®ãã£ã¬ã¯ããªïŒéåžžã¯
/var/run/kubelet/pods/<podID>
ïŒããã®ããªã¥ãŒã ïŒ<podDir>/volumes
ïŒãããã³ãã©ã°ã€ã³ïŒ<podDir>/plugins
ïŒãå«ãŸããŸãã - ããªã¥ãŒã ãããŒãžã£ãŒã¯ã
Spec.Volumes
ã§å®çŸ©ãããŠãããã¹ãŠã®å¿ èŠãªããªã¥ãŒã ãæ¥ç¶ããããããåŸ ã¡ãŸãã äžéšã®ãããã¯ãããŠã³ããããããªã¥ãŒã ã®ã¿ã€ãïŒã¯ã©ãŠãããªã¥ãŒã ãŸãã¯NFSããªã¥ãŒã ãªã©ïŒã«ãã£ãŠã¯æéããããå ŽåããããŸãã - Spec.ImagePullSecretsã§æå®ããããã¹ãŠã®ã·ãŒã¯ã¬ããã¯apiserverããååŸããããããã³ã³ãããŒã«ããã«æ¿å ¥ã§ããŸãã
- ãã®åŸãã³ã³ããã©ã³ã¿ã€ã ãã³ã³ãããèµ·åããŸãïŒä»¥äžã§è©³ãã説æããŸãïŒã
CRIããã³äžæåæ¢ã³ã³ãããŒ
ããã§ãæºåã®äž»èŠéšåãå®äºããã³ã³ãããæã¡äžããæºåãã§ãã段éã«ãªããŸããã ãããå®è¡ãããœãããŠã§ã¢ã¯ã ã³ã³ããã©ã³ã¿ã€ã ãšåŒã°ããŸãïŒäŸïŒ
rkt
ãŸãã¯
rkt
ã
æ¡åŒµæ§ãé«ããããã«ãkubeletã¯ããŒãžã§ã³1.5.0ããCRIïŒContainer Runtime InterfaceïŒãšåŒã°ããæŠå¿µã䜿çšããŠãç¹å®ã®ã³ã³ãããŒã©ã³ã¿ã€ã ãšå¯Ÿè©±ããŸããã èŠããã«ãCRIã¯kubeletãšã©ã³ã¿ã€ã ã®ç¹å®ã®å®è£ ãšã®éã®æœè±¡åãæäŸããŸãã çžäºäœçšã¯ã ãããã³ã«ãããã¡ãŒ ïŒããé«éãªJSONãªã©ïŒãšgRPC API ïŒKubernetesã§ã®æäœã®å®è¡ã«é©ããAPIã¿ã€ãïŒãä»ããŠè¡ãããŸãã ããã¯éåžžã«ã¯ãŒã«ãªã¢ã€ãã¢ã§ããkubeletãšã©ã³ã¿ã€ã ã®éã§åæãããåæã䜿çšããå Žåãã³ã³ãããŒãã©ã®ããã«ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããããã®å®è£ ã®å®éã®è©³çŽ°ã¯éèŠæ§ã倱ãããã§ãã ãã®åæã®ã¿ãéèŠã§ãã ãã®ã¢ãããŒãã§ã¯ãã³ã¢Kubernetesã³ãŒããå€æŽããå¿ èŠããªããããæå°éã®ãªãŒããŒãããã§æ°ããã©ã³ã¿ã€ã ãè¿œå ã§ããŸãã
ïŒ æ³š ïŒ ç¿»èš³ ïŒKubernetesã®CRIããã³CRI-Oã®å®è£ ã«ã€ããŠã ãã®èšäºã§è©³ãã説æããŸãã ãïŒ
ååãªåæ çãªäœè«-ã³ã³ããã®å±éã«æ»ã... kubelet ãåããŠèµ·åãããšãkubelet ã¯ãªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ïŒRPCïŒ
RunPodSandbox
ãŸãã ãã®ååã®ããµã³ãããã¯ã¹ããšããèšèã¯ãã³ã³ããã®ã»ãããè¡šãCRIçšèªã§ãããKubernetesã§ã¯ãããªããæšæž¬ãããšããã§ãã ãã®çšèªã¯ãã³ã³ãã以å€ãå®éã«äœ¿çšã§ããä»ã®ã©ã³ã¿ã€ã ç°å¢ïŒããµã³ãããã¯ã¹ããä»®æ³ãã·ã³ã§ãããã€ããŒãã€ã¶ãŒããŒã¹ã®å®è¡å¯èœç°å¢ãæ³åããŠãã ããïŒã®æå³ã倱ããªãããã«ãæå³çã«éåžžã«åºçŸ©ã§ãã
ãã®äŸã§ã¯ãDockerã䜿çšããŸãã ãã®å®è¡å¯èœç°å¢ã§ã¯ããµã³ãããã¯ã¹åã«ã¯ãäžæåæ¢ãã³ã³ããã®äœæãå«ãŸããŸãã äžæåæ¢ã³ã³ããã¯ãçå ã®ä»ã®ãã¹ãŠã®ã³ã³ããã®èŠªãšããŠæ©èœããããŒããããã³ã³ããã䜿çšããçåºã¬ãã«ã®ãªãœãŒã¹ã®å€ãããã¹ãããŸãã ãããã®ããªãœãŒã¹ãã¯ãLinuxåå空éïŒIPCããããã¯ãŒã¯ãPIDïŒã§ãã ã³ã³ãããŒãLinuxã§ã©ã®ããã«æ©èœãããããããããªãå Žåã¯ããã®æ å ±ããã°ããæŽæ°ããŸãããã Linuxã«ãŒãã«ã«ã¯åå空éã®æŠå¿µãããããã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãç¹å®ã®ãªãœãŒã¹ã»ããïŒCPUãã¡ã¢ãªãªã©ïŒãååŸãããã®ãªãœãŒã¹ã»ãããæ¶è²»ããå¯äžã®ãªãœãŒã¹ã§ãããã®ããã«ããã»ã¹ã«å²ãåœãŠãããšãã§ããŸãã Linuxã¯ãªãœãŒã¹ã®å²ãåœãŠã管çããæ¹æ³ã§ãããããCgroupãéèŠã§ãïŒèŠå®ããªãœãŒã¹ã®äœ¿çšãå¶åŸ¡ããã®ã«äŒŒãŠããŸãïŒã Dockerã¯ããããã®ã«ãŒãã«æ©èœã®äž¡æ¹ã䜿çšããŠããªãœãŒã¹ãä¿èšŒãããåé¢ãæäŸãããããã»ã¹ããã¹ãããŸãã Linuxxã³ã³ããã®ä»çµã¿ã«é¢ãã詳现ã¯ããã®ãã°ãããb0rkåºçç©ã«ãããŸãã ãã
äžæåæ¢ã³ã³ãããŒã¯ãããããã¹ãŠã®åå空éãé 眮ããæ¹æ³ãæäŸããåã³ã³ãããŒãããããå ±æã§ããããã«ããŸãã åäžã®ãããã¯ãŒã¯åå空éã®äžéšãšããŠãåãçåºã®ã³ã³ããã¯ãlocalhostãä»ããŠäºãã«ã¢ã¯ã»ã¹ã§ããŸãã äžæåæ¢ã³ã³ããã®2çªç®ã®åœ¹å²ã¯ãPIDåå空éã®æ©èœã«é¢é£ããŠããŸãã ãã®ã¿ã€ãã®åå空éã§ã¯ãããã»ã¹ãéå±€ããªãŒã圢æããæäžäœããã»ã¹ã®ãinitãããããããã»ã¹ã®ãæœåºããæ åœããŸãïŒãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ããã»ã¹ããŒãã«ãããšã³ããªãåé€ããŸã- ãããTranslã ïŒ ã ãã®ä»çµã¿ã®è©³çŽ°ã«ã€ããŠã¯ã ãã®åªããèšäºãã芧ãã ãã ã äžæåæ¢ã³ã³ãããäœæããããšããã£ã¹ã¯äžã«ãã§ãã¯ãã€ã³ããäœæãããŠéå§ãããŸãã
CNIããã³ããããããã¯ãŒã¯
å²çè£ã«ã¹ã±ã«ãã³ãåºçŸããŸãããå²çè£ã®å éšã§ã®ããåããå¯èœã«ããããã«ããã¹ãŠã®åå空éãä¿è·ããäžæåæ¢ã³ã³ããã§ãã ãããããããã¯ãŒã¯ã¯ã©ã®ããã«æ©èœããæ§æãããŠããã®ã§ããããïŒ
kubeletã¯ãå²çè£ã®ãããã¯ãŒã¯ãæ§æãããšãã«ããã®ã¿ã¹ã¯ãCNIãã©ã°ã€ã³ã«å§ä»»ããŸãã CNIã¯Container Network Interfaceã®ç¥ã§ãContainer Runtime Interfaceãšåæ§ã®æ¹æ³ã§æ©èœããŸãã , CNI â , . , kubelet JSON (
/etc/cni/net.d
), CNI (
/opt/cni/bin
) stdin. JSON:
{ "cniVersion": "0.3.1", "name": "bridge", "type": "bridge", "bridge": "cnio0", "isGateway": true, "ipMasq": true, "ipam": { "type": "host-local", "ranges": [ [{"subnet": "${POD_CIDR}"}] ], "routes": [{"dst": "0.0.0.0/0"}] } }
â , â
CNI_ARGS
.
CNI â
bridge
:
- Linux- .
- ( veth-) pause-, . veth- : , â , .
- pause- IP . IP-. IP IPAM-, JSON-.
- IPAM : . IP/ , , . IPAM-
host-local
IP- . , IP- .
- IPAM : . IP/ , , . IPAM-
- DNS kubelet IP- DNS- CNI,
resolv.conf
.
, kubelet JSON, .
( . . : CNI .)
, , ? , , .
(overlay networking) , . Flannel. â L3 IPv4- . Flannel , ( , CNI), . etcd. UDP-, . CoreOS .
. ? .
, kubelet . init-, PodSpec, â . :
- . , PodSpec.
- CRI .
ContainerConfig
( , , , , , ..) PodSpec protobufs CRI. Docker Daemon API payload . (, , , ID ). - CPU Manager â , 1.8 alpha CPU
UpdateContainerResources
CRI. - .
- - (post-start) , .
Exec
( )HTTP
( HTTP- endpoint ). , ,Running
.
ãŸãšã
ããã£ã ã§ãã çµããã
3 , . , kubelet CRI.
翻蚳è ããã®PS
ããã°ãã芧ãã ããã
- â kubectlã®å®è¡ãéå§ããããšKubernetesã§äœãèµ·ãããŸããïŒ 1 »;
- ã å°èŠæš¡ãããžã§ã¯ãã§ã®Kubernetesã§ã®çµéš ã ïŒKubernetesã®æè¡ããã€ã¹ã®çŽ¹ä»ãå«ããããªã¬ããŒãïŒ;
- ã Kubernetesã¹ã±ãžã¥ãŒã©ã¯å®éã«ã©ã®ããã«æ©èœããŸããïŒã ";
- ã æé ãªäŸ¡æ Œã®ãµãŒãã¹ãšããŠKubernetesã䜿çšããã€ã³ãã©ã¹ãã©ã¯ã㣠ã
- ã CRI-O-Kubernetesã§ã³ã³ãããèµ·åããããã®Dockerã®ä»£æ¿å ã;
- « Container Networking Interface (CNI) â Linux- »;
- Kubernetes 1.8ïŒäž»èŠãªã€ãããŒã·ã§ã³ã®æŠèŠ