PSäœæè ãåç §ããè¡çªå·ã®é¢é£æ§ãé·æéä¿æãããããã«ããã¹ã¿ãŒãã©ã³ãã®ã³ãŒããžã®å ã®ãªã³ã¯ã®äžéšã¯ç¿»èš³æã«ææ°ã®ãã®ã«çœ®ãæããããŸããã
![](https://habrastorage.org/web/38e/151/72f/38e15172f88348718c88b4fcc87585b6.png)
Kubernetesã¯ã©ã¹ã¿ãŒã«nginxããããã€ãããšããŸãã ã¿ãŒããã«ã«æ¬¡ã®ãããªãã®ãå ¥åããŸãã
kubectl run --image=nginx --replicas=3
...ãããŠEnterãæŒããŸãã æ°ç§ã§ããã¹ãŠã®äœæ¥ããŒãã«nginxãåæ£ããã3ã€ã®ãããã衚瀺ãããŸãã ããã¯åäœããŸã-ãŸãã§éæ³ã®ããã«ãããã¯çŽ æŽãããã§ãïŒ ããããå®éã«äœãèµ·ããã®ã§ããããïŒ
Kubernetesã®åªããæ©èœã®1ã€ã¯ããã®ã·ã¹ãã ããŠãŒã¶ãŒãã¬ã³ããªãŒãªAPIãéããŠã€ã³ãã©ã¹ãã©ã¯ãã£å ã®ã¯ãŒã¯ããŒãã®å±éãåŠçããæ¹æ³ã§ãã ãã¹ãŠã®è€éãã¯ãåçŽãªæœè±¡åã«ãã£ãŠé ãããŠããŸãã ãã ããK8ããããã䟡å€ãå®å šã«å®çŸããã«ã¯ãå éšã®ãããã³ãç解ããããšã圹ç«ã¡ãŸãã ãã®èšäºã§ã¯ãã¯ã©ã€ã¢ã³ãããkubeletãžã®ãªã¯ãšã¹ãã®ã©ã€ããµã€ã¯ã«å šäœã玹ä»ããŸããå¿ èŠã«å¿ããŠããœãŒã¹ã³ãŒããåç §ããŠäœãèµ·ããŠãããã説æããŸãã
ããã¯çããææžã§ãã æ¹åãŸãã¯æžãæããå¿ èŠãªå Žåã¯ãå€æŽãæè¿ããŸãïŒ ïŒãã¡ããã GitHubã®å ã®è±èªã®èšäºã«ã€ããŠ-çŽTranslãïŒ
kubectl
æ€èšŒãšãžã§ãã¬ãŒã¿ãŒ
ããã§ã¯å§ããŸãããã ã¿ãŒããã«ã§EnterããŒãæŒãã ãã§ãã ãããŠä»äœïŒ
ãŸããkubectlã¯ã¯ã©ã€ã¢ã³ãåŽã®æ€èšŒãå®è¡ããŸãã 圌ã¯ãæ©èœããŠããªããªã¯ãšã¹ãïŒãµããŒããããŠããªããªãœãŒã¹ã®äœæã ééã£ãååã®ç»åã®äœ¿çšãªã©ïŒãããã«äžæãããkube-apiserverã«éä¿¡ãããªãããã«ããŸãã ããã«ãããäžèŠãªã¯ãŒã¯ããŒããåæžãããã·ã¹ãã ã®ããã©ãŒãã³ã¹ãåäžããŸãã
æ€èšŒåŸãkubectlã¯kube-apiserverã«éä¿¡ãããHTTPãªã¯ãšã¹ãã®äœæãéå§ããŸãã Kubernetesã·ã¹ãã ã§ç¶æ ã«ã¢ã¯ã»ã¹ãŸãã¯å€æŽããããšãããã¹ãŠã®è©Šã¿ã¯ãAPIãµãŒããŒãééããAPIãµãŒããŒã¯etcdãšéä¿¡ããŸãã kubectlãäŸå€ã§ã¯ãããŸããã HTTPãªã¯ãšã¹ããäœæããããã«ãkubectlã¯ãããããžã§ãã¬ãŒã¿ãŒã䜿çšããŸããããã¯ãã·ãªã¢ã«åãå®è£ ããæœè±¡åã§ãã
ããã§ã¯ã
kubectl run
䜿çšãããšãDeploymentsã ãã§ãªããå€ãã®ã¿ã€ãã®ãªãœãŒã¹ãæå®ã§ããããšã¯æããã§ã¯ãªããããããŸããã ãããæ©èœããããã« ããžã§ãã¬ãŒã¿åã
--generator
ãã©ã°ã§ç¹ã«æå®ãããŠããªãéããkubectlã¯ãªãœãŒã¹ã®ã¿ã€ããèšç®ããŸãã
ããšãã°ã
--restart-policy=Always
ãªãœãŒã¹ã¯å±éãšããŠæ±ããã
--restart-policy=Never
ãªãœãŒã¹ã¯ããããšèŠãªãããŸãã Kubectlã¯ãã³ãã³ãã®èšé²ïŒããŒã«ã¢ãŠããŸãã¯ç£æ»ïŒãªã©ãä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠããããã©ãããããã³ãã®ã³ãã³ããïŒ
--dry-run
ãã©ã°ã®ååšã«ããïŒãã¹ãå®è¡ã§ãããã©ããã確èªããŸãã
Deploymentãäœæããããšãããã£ãã®ã§ãkubectlã¯
DeploymentV1Beta1
ãžã§ãã¬ãŒã¿ãŒã䜿çšããŠãæäŸããããã©ã¡ãŒã¿ãŒããã©ã³ã¿ã€ã ãªããžã§ã¯ããäœæããŸãã ã©ã³ã¿ã€ã ãªããžã§ã¯ãã¯ããªãœãŒã¹ã®ç·ç§°ã§ãã
APIã°ã«ãŒããšããŒãžã§ã³ç®¡ç亀æž
å ã«é²ãåã«ãKubernetesã¯APIã°ã«ãŒãããšã«åé¡ãããããŒãžã§ã³ç®¡çãããAPIã䜿çšããŠããããšã«æ³šæããããšãéèŠã§ãã APIã°ã«ãŒãã¯ãåæ§ã®ãªãœãŒã¹ãåé¡ããããããšã®ããåãã容æã«ããããã«èšèšãããŠããŸãã ããã«ãåäžã®ã¢ããªã·ãã¯APIã®ä»£æ¿ãšããŠãé©ããŠããŸãã Deploymentã®APIã°ã«ãŒãã¯
apps
ãšåŒã°ããææ°ããŒãžã§ã³ã¯
v1beta2
ã§ãã ããã¯ãDeploymentïŒ
apiVersion: apps/v1beta2
ã®æäžéšã§æå®ãã
apiVersion: apps/v1beta2
ã
ïŒ æ³šã®ç¿»èš³ ïŒ Kubernetes 1.8ã®çºè¡šã§èª¬æããããã«ããããžã§ã¯ãã¯çŸåšããã¯ãŒã¯ããŒããã«é¢é£ãããããã€ã¡ã³ãããã®ä»ã®APIãå«ãæ°ããã¯ãŒã¯ããŒãAPIã°ã«ãŒãã®äœæã«åãçµãã§ããŸããïŒ
äžè¬ã«ãkubectlã¯ã©ã³ã¿ã€ã ãªããžã§ã¯ããçæããåŸã察å¿ããAPIã°ã«ãŒããšããŒãžã§ã³ã®æ€çŽ¢ãéå§ã ãç®çã®ããŒãžã§ã³ã®ã¯ã©ã€ã¢ã³ããåéããŸã-ãªãœãŒã¹ã®ããŸããŸãªRESTã»ãã³ãã£ã¯ã¹ãèæ ®ããŸãã ã ããŒãžã§ã³ããŽã·ãšãŒã·ã§ã³ ããšåŒã°ãããã®æ€åºãã§ãŒãºã§ã¯ããªã¢ãŒãAPIã®
/apis
ã®ã³ã³ãã³ããã¹ãã£ã³ããŠãå¯èœãªãã¹ãŠã®APIã°ã«ãŒããååŸããŸãã kube-apiserverã¯ãã®ãã¹ïŒ
/apis
ïŒã«æ²¿ã£ãŠæ§é ããã¥ã¡ã³ãïŒOpenAPI圢åŒïŒãçæãããããã¯ã©ã€ã¢ã³ãã¯ç°¡åã«æ€åºãå®è¡ã§ããŸãã
ããã©ãŒãã³ã¹ãåäžãããããã«ãkubectl 㯠OpenAPIã¹ããŒã ã
~/.kube/schema
ãã£ã¬ã¯ããªã«ãã£ãã·ã¥ã
~/.kube/schema
ã å®éã®APIæ€åºã確èªããã«ã¯ããã®ãã£ã¬ã¯ããªãåé€ãã
-v
ãã©ã°ã®æ倧å€ãæå®ããŠã³ãã³ããå®è¡ããŠã¿ãŠãã ããã APIããŒãžã§ã³ãèŠã€ããããšããŠãããã¹ãŠã®HTTPãªã¯ãšã¹ãã衚瀺ãããŸãã ãããŠããããã¯ãããããããŸãïŒ
æåŸã®ã¹ãããã¯ã HTTPãªã¯ãšã¹ããéä¿¡ããããšã§ãã ãããå®äºããæ£åžžãªå¿çãåä¿¡ããããšãkubectlã¯åªå åºå圢åŒãèæ ®ããŠæ£åžžãªã¡ãã»ãŒãžã衚瀺ããŸãã
ã¯ã©ã€ã¢ã³ãèªèšŒ
æåŸã®ã¹ãããã§ã¯ãã¯ã©ã€ã¢ã³ãèªèšŒã«èšåããŸããã§ããïŒHTTPèŠæ±ãéä¿¡ããåã«çºçããŸãïŒ-ãããèæ ®ããŸãã
kubectlãªã¯ãšã¹ããæ£åžžã«éä¿¡ããã«ã¯ãèªèšŒããå¿ èŠããããŸãã ãŠãŒã¶ãŒè³æ Œæ å ±ã¯ãã»ãšãã©ã®å Žåãã£ã¹ã¯ã«ä¿åãããŠãã
kubeconfig
ãã¡ã€ã«ã«ä¿åãããŸãããå¥ã®å Žæã«é 眮ããããšãã§ããŸãã ãããæ€çŽ¢ããããã«ãkubectlã¯æ¬¡ã®ããšãè¡ããŸãã
- ãã©ã°
--kubeconfig
ã--kubeconfig
-䜿çšããŸãã - ç°å¢å€æ°
$KUBECONFIG
ã$KUBECONFIG
-ããã䜿çšããŸãã - ãã以å€ã®å Žåã
~/.kube
ãªã©ã®ç®çã®ããŒã ãã£ã¬ã¯ããªããã§ãã¯ããèŠã€ãã£ãæåã®ãã¡ã€ã«ã䜿çšããŸãã
ãã¡ã€ã«ã®è§£æåŸãçŸåšã®ã³ã³ããã¹ããçŸåšã®ã¯ã©ã¹ã¿ãŒãããã³çŸåšã®ãŠãŒã¶ãŒã®èªèšŒæ å ±ã決å®ãããŸãã ãŠãŒã¶ãŒããã©ã°ãéããŠç¹å¥ãªå€ïŒ
--username
ãªã©ïŒãæå®ããå Žåããããã«åªå é äœãäžãããã
kubeconfig
æå®ãããå€ãäžæžãããŸãã æ å ±ãåä¿¡ããããšãkubectlã¯ã¯ã©ã€ã¢ã³ãæ§æãã»ããã¢ããããHTTPãªã¯ãšã¹ãã®ããŒãºã«é©ãããã®ã«ããŸãã
- x509蚌ææžã¯
tls.TLSConfig
ãä»ããŠéä¿¡ããtls.TLSConfig
ïŒã«ãŒãCAãããã«å«ãŸããŠããŸãïŒã - ã¯ã©ã€ã¢ã³ãããŒã¯ã³ã¯
Authorization
HTTPããããŒã§éä¿¡ãããŸãã - ãŠãŒã¶ãŒãšãã¹ã¯ãŒãã¯ãåºæ¬çãªHTTPèªèšŒãéããŠéä¿¡ãããŸãã
- OpenIDãä»ããèªèšŒããã»ã¹ã¯ããŠãŒã¶ãŒãæåã§äºåã«å®è¡ããŸãããã®çµæãããŒã¯ã³ã衚瀺ãããäžèšã®å¯Ÿå¿ããã¢ã€ãã ãšåæ§ã«éä¿¡ãããŸãã
kube-apiserver
èªèšŒ
ãªã¯ãšã¹ããéä¿¡ãããŸããã 次ã¯ïŒ Kube-apiserverãç»å ŽããŸãã åè¿°ã®ããã«ãkube-apiserverã¯ãã¯ã©ã€ã¢ã³ããšã·ã¹ãã ã³ã³ããŒãã³ããã¯ã©ã¹ã¿ãŒã®ç¶æ ãä¿åããã³ååŸããããã«äœ¿çšããã¡ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã§ãã ãã®æ©èœãå®è¡ããã«ã¯ãèŠæ±å ãæ€èšŒããèŠæ±å ãšäžèŽããããšã確èªããå¿ èŠããããŸãã ãã®ããã»ã¹ã¯èªèšŒãšåŒã°ããŸãã
apiserverã¯ãªã¯ãšã¹ããã©ã®ããã«èªèšŒããŸããïŒ ãµãŒããŒã¯æåã«èµ·åãããšãã«ããŠãŒã¶ãŒãæäŸãããã¹ãŠã®ã³ã³ãœãŒã«ãã©ã°ããã§ãã¯ããé©åãªèªèšŒã·ã¹ãã ã®ãªã¹ããåéããŸãã äŸã«ã€ããŠèããŠã¿ãŸãããïŒ
--client-ca-file
ãæž¡ãããå Žåã
--client-ca-file
ãªãŒã»ã³ãã£
--client-ca-file
ãè¿œå ãããŸãã
--token-auth-file
ãæå®ãããŠããå ŽåãããŒã¯ã³èªèšŒã·ã¹ãã ããªã¹ãã«è¿œå ãããŸãã èŠæ±ãåä¿¡ããããã³ã«ãèªèšŒè ã®ãã§ãŒã³ã1ã€æ£åžžã«æ©èœãããŸã§å®è¡ãããŸãã
- x509ãã³ãã©ãŒã¯ãHTTPèŠæ±ã蚌ææ©é¢ã®ã«ãŒã蚌ææžã«ãã£ãŠçœ²åãããTLSããŒã§æå·åãããŠããããšã確èªããŸãã
- ããŒã¯ã³ãã³ãã©ãŒã¯ãæäŸãããããŒã¯ã³ïŒ
Authorization
HTTPããããŒã§å®çŸ©ãããŠããïŒã--token-auth-file
ãã£ã¬ã¯ãã£ãã§æå®ããããã£ã¹ã¯äžã®ãã¡ã€ã«ã«ååšããããšã確èªããŸãã - åæ§ã«ãbasicauthãã³ãã©ãŒã¯ ãHTTPèŠæ±ã®åºæ¬èªèšŒã®è³æ Œæ å ±ãããŒã«ã«ããŒã¿ãšäžèŽããããšã確èªããŸãã
ã©ã®èªèšŒåãæåããªãã£ãå ŽåãèŠæ±ã¯å€±æããéçŽãšã©ãŒãè¿ãããŸãã èªèšŒãæåãããšã
Authorization
ããããŒããªã¯ãšã¹ãããåé€ããããŠãŒã¶ãŒæ å ±ããã®ã³ã³ããã¹ãã«è¿œå ãããŸãã ããã«ãããåŸç¶ã®æé ïŒæ¿èªããã³èš±å¯ã³ã³ãããŒã©ãŒãªã©ïŒã§ä»¥åã«ç¢ºç«ããããŠãŒã¶ãŒIDã«ã¢ã¯ã»ã¹ã§ããŸãã
ãã°ã€ã³
ããŠããªã¯ãšã¹ããéä¿¡ãããŸãããkube-apiserverã¯ãèªåã玹ä»è ã§ããããšã確èªããŸããã ãªããŠå®å¿ïŒ ãã ããããã ãã§ã¯ãããŸããã ç§ãã¡ã¯èªåèªèº«ã玹ä»ãã人ãããããŸãããããã®æäœãå®è¡ããæš©å©ã¯ãããŸããïŒ IDãšã¢ã¯ã»ã¹æš©ã¯åããã®ã§ã¯ãããŸããã ç¶è¡ããã«ã¯ãkube-apiserverãæ¿èªããå¿ èŠããããŸãã
kube-apiserverãèªèšŒãå®è¡ããæ¹æ³ã¯èªèšŒã«éåžžã«äŒŒãŠããŸãããã©ã°å€ãããåçä¿¡èŠæ±ã«äœ¿çšãããèªèšŒè ã®ãã§ãŒã³ãåéããŸãã ãã¹ãŠã®æ¿èªè ããªã¯ãšã¹ããæåŠãããšããªã¯ãšã¹ãã¯
Forbidden
ã¬ã¹ãã³ã¹ã§çµäºããããã§åæ¢ããŸãã å°ãªããšã1人ã®æ¿èªè ããªã¯ãšã¹ããæ¿èªãããšãããã«å ã«é²ã¿ãŸãã
Kubernetes v1.8ãªãªãŒã¹ã«å«ãŸããæ¿èªè ã®äŸïŒ
- K8sã¯ã©ã¹ã¿ãŒå€ã®HTTPïŒSïŒãµãŒãã¹ãšå¯Ÿè©±ããwebhookã
- éçãã¡ã€ã«ããããªã·ãŒãå®è£ ããABAC ã
- RBAC ãRBAC ïŒããŒã«ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡- çŽTranslã ïŒã®åœ¹å²ãå®è£ ãã管çè ã«ãã£ãŠKubernetesãªãœãŒã¹ãšããŠè¿œå ãããŸããã
- Node㯠ãã¯ã©ã¹ã¿ãŒããŒãã®ã¯ã©ã€ã¢ã³ãïŒkubeletãªã©ïŒãèªåã§ãªãœãŒã¹ã«ã®ã¿ã¢ã¯ã»ã¹ã§ããããšã確èªããŸãã
ããããã®
Authorize
ã¡ãœãããèŠãŠãã©ã®ããã«æ©èœãããã確èªããŠãã ããã
ã¢ã¯ã»ã¹å¶åŸ¡
OKãkube-apiserverã«ãã£ãŠèªèšŒããã³æ¿èªãããŠããŸãã æ®ã£ãŠãããã®ã¯äœã§ããïŒ Kube-apiserverèªäœãç§ãã¡ãä¿¡é Œããç¶ç¶ããããšãèš±å¯ããŸãããKubernetesã®ã·ã¹ãã ã®ä»ã®éšåã«ã¯ãèš±å¯ãããŠãããã®ãšèš±å¯ãããŠããªããã®ã«ã€ããŠã®ç¬èªã®æ·±ã確信ããããããããŸããã ãããã¢ãããã·ã§ã³ã³ã³ãããŒã©ãŒã®åºçªã§ãã
ãŠãŒã¶ãŒãæš©å©ãæã£ãŠãããã©ããã®è³ªåã«æ¿èªãçããå Žåãã¢ãããã·ã§ã³ã³ã³ãããŒã©ãŒã¯ãã¯ã©ã¹ã¿ãŒå ã®ããåºãç¯å²ã®æåŸ ãšã«ãŒã«ãžã®æºæ ã®èŠæ±ããã§ãã¯ããŸãã ãããã¯ããªããžã§ã¯ããetcdã«è»¢éãããåã®æåŸã®å¶åŸ¡ã®èŠå¡ã§ãããã·ã¹ãã å ã®æ®ãã®ãã§ãã¯ãæ åœããŸããããã¯ãã¢ã¯ã·ã§ã³ãäºæããªãçµæãŸãã¯ãã¬ãã£ããªçµæããããããªãããšã確èªããããšãç®çãšããŠããŸãã
ãããã®ã³ã³ãããŒã©ãŒã®åäœåçã¯ãªãŒã»ã³ãã£ã±ãŒã¿ãŒãšãªãŒãœã©ã€ã¶ãŒã«äŒŒãŠããŸããã1ã€ã®éãããããŸãïŒã¢ãããã·ã§ã³ã³ã³ãããŒã©ãŒã®å Žåãã³ã³ãããŒã©ãŒãã§ãŒã³ã®åäžã®é害ã§ãã®ãã§ãŒã³ãäžæãããªã¯ãšã¹ãã倱æãšããŠèªèã§ããŸãã
ã¢ãããã·ã§ã³ã³ã³ãããŒã©ã®ã¢ãŒããã¯ãã£ã¯ãæ¡åŒµæ§ã®ä¿é²ã«éç¹ã眮ããŠããŸãã åã³ã³ãããŒã©ãŒã¯
plugin/pkg/admission
ãã£ã¬ã¯ããªã«
plugin/pkg/admission
ãšããŠä¿åãããå°ããªã€ã³ã¿ãŒãã§ã€ã¹ã®ããŒãºãæºããããã«äœæãããŸãã ãããããã¡ã€ã³ã®Kubernetesãã€ããªã«ã³ã³ãã€ã«ãããŸãã
éåžžãã¢ãããã·ã§ã³ã³ã³ãããŒã©ã¯ããªãœãŒã¹ç®¡çãã»ãã¥ãªãã£ãããã©ã«ãèšå®ãããã³åç §æŽåæ§ã«åé¡ãããŸãã ãªãœãŒã¹ç®¡çã³ã³ãããŒã©ãŒã®äŸã次ã«ç€ºããŸãã
-
InitialResources
ã¯ã以åã®äœ¿çšæ³ã«åºã¥ããŠã³ã³ãããªãœãŒã¹ã®ããã©ã«ãå¶éãèšå®ããŸãã -
LimitRanger
ã¯ããªã¯ãšã¹ãã®ããã©ã«ãå€ãšã³ã³ããå¶éãèšå®ããç¹å®ã®ãªãœãŒã¹ã®äžéãä¿èšŒããŸãïŒ512 MBã®ããã©ã«ãã¡ã¢ãªããã ã2 GB以äžïŒã -
ResourceQuota
ã¯ãããŒã ã¹ããŒã¹å ã®ãªããžã§ã¯ãïŒããŒã¹ãrcããµãŒãã¹ã®ããŒããã©ã³ãµãŒïŒã®æ°ãšãæ¶è²»ããããªãœãŒã¹ïŒããã»ããµãã¡ã¢ãªããã£ã¹ã¯ïŒã®åèšãã«ãŠã³ããããããã®éå°ãé²ããŸãã
etcd
ãã®æç¹ã§ãKubernetesã¯çä¿¡ãªã¯ãšã¹ããå®å šã«æ¿èªããå ã«é²ãããšãèš±å¯ããŸããã 次ã®ã¹ãããã¯ãkube-apiserverãHTTPãªã¯ãšã¹ãããã·ãªã¢ã©ã€ãºããããããã©ã³ã¿ã€ã ãªããžã§ã¯ããäœæãïŒkubectlãžã§ãã¬ãŒã¿ãŒã®åäœã®éã®ãããªãã®ïŒãããŒã¿ã¹ãã¢ãä¿åããããšã§ãã ããã詳ããèŠãŠã¿ãŸãããã
kube-apiserverã¯ããªã¯ãšã¹ããåãå ¥ãããšãã«äœããã¹ãããã©ã®ããã«ç¥ã£ãŠããŸããïŒ ãã®ãããèŠæ±ã®åŠçã®åã«ãããªãè€éãªäžé£ã®æé ãç¶ããŸãã æåããèŠãŠã¿ãŸããã-ãã€ããªãã¡ã€ã«ãæåã«èµ·åããããšãïŒ
- kube-apiserverãã€ããªãå®è¡ãããš ããµãŒããŒãã§ãŒã³ãäœæãããKubernetes apiserveréçŽãæå¹ã«ãªããŸãã ããã¯å€ãã®APIãµãŒããŒããµããŒãããããã®åºç€ã§ãïŒããã«ã€ããŠã¯å¿é ããããšã¯ã§ããŸããïŒã
- ãããçºçãããšãæ±çšAPIãµãŒããŒãäœæãããããã©ã«ãã®å®è£ ãšããŠæ©èœããŸãã
- çæãããOpenAPIã¹ããŒãã¯ãapiserveræ§æã«å ¥åãããŸãã
- 次ã«ãkube-apiserverã¯ãã¹ããŒã ã§å®çŸ©ããããã¹ãŠã®APIã°ã«ãŒããé çªã«åŠçãããããã®ããããã«å¯ŸããŠã¹ãã¬ãŒãžãããã€ããŒãã»ããã¢ãããã æ±çšã¹ãã¬ãŒãžæœè±¡åãšããŠæ©èœããŸãã Kube-apiserverã¯ããªãœãŒã¹ã®ç¶æ ã«ã¢ã¯ã»ã¹ãããããªãœãŒã¹ã®ç¶æ ãå€æŽãããšããããšå¯Ÿè©±ããŸãã
- åAPIã°ã«ãŒãã«ã€ããŠãã°ã«ãŒãã®ãã¹ãŠã®ããŒãžã§ã³ãé çªã«ãœãŒããããåHTTPã«ãŒããžã®REST察å¿ã確ç«ãããŸãã ããã«ãããkube-apiserverã¯ã¯ãšãªãç §åããçµæã«ããžãã¯ãå§ä»»ã§ããŸãã
- ç¹å®ã®ã±ãŒã¹ã§ã¯ã POSTãã³ãã©ãŒãç»é²ããããªãœãŒã¹äœæãã³ãã©ãŒã«å§ä»»ãããŸãã
ãã®æç¹ã§ãkube-apiserverã¯ã©ã®ã«ãŒããååšããããèªèãããªã¯ãšã¹ããäžèŽãããšãã«ã©ã®ãã³ãã©ãŒãšã¹ãã¬ãŒãžãããã€ããŒãåŒã³åºãå¿ èŠããããã瀺ãå éšãããã³ã°ãæã£ãŠããŸãã HTTPãªã¯ãšã¹ããåãåã£ããšããŸãïŒ
- ãã³ãã©ãŒã®ãã§ãŒã³ããªã¯ãšã¹ããšãã¿ãŒã³ã®äžèŽïŒç»é²æžã¿ã«ãŒãïŒãèŠã€ããããšãã§ããå Žåããã®ã«ãŒãã«ç»é²ãããŠããç®çã®ãã³ãã©ãŒãåŒã³åºãããŸã ãã以å€ã®å Žåã¯ããã¹ããŒã¹ã®ãã³ãã©ãŒãåŒã³åºãããŸãïŒ
/apis
åŒã³åºããããšãã«åãããšãèµ·ãããŸãïŒã ãã®ãã¹ã«ç»é²ãããŠãããã³ãã©ãŒããªãå Žåãnot foundãã³ãã©ãŒãåŒã³åºããã404ãè¿ãããŸãã - 幞ããªããšã«ã
createHandler
ãšããç»é²æžã¿ã®ã«ãŒããcreateHandler
ãŸãã 圌ã¯äœãããŠããŸããïŒ ãŸããHTTPãªã¯ãšã¹ãããã³ãŒãããæäŸãããJSONããŒã¿ãç®çã®ããŒãžã§ã³ã®APIããã®ãªãœãŒã¹ã«å¯ŸããæåŸ ãšäžèŽããããšã確èªãããªã©ãåºæ¬çãªæ€èšŒãå®è¡ããŸãã - ç£æ»ãšæçµå ¥å ŽããããŸãã
- ãªãœãŒã¹ã¯ãã¹ãã¬ãŒãžãããã€ããŒãžã®å§ä»»ã«ãã£ãŠetcdã«ä¿åãããŸãã éåžžãetcdã®ããŒã¯
<namespace>/<name>
ãšããŠè¡šãã<namespace>/<name>
ããããã¯ã«ã¹ã¿ãã€ãºå¯èœã§ãã - äœæäžã®ãšã©ãŒã¯ãã¹ãŠãã£ãããããæåŸã«ã¹ãã¬ãŒãžãããã€ããŒã
get
åŒã³åºããè¡ã£ãŠããªããžã§ã¯ããå®éã«äœæãããããšã確èªããŸãã 次ã«ãäœæåŸïŒäœæåŸïŒã«å²ãåœãŠããããã¹ãŠã®ãã³ãã©ãŒãšãè¿œå ã®ãã¡ã€ãã©ã€ãºãå¿ èŠãªå Žåã¯ãã³ã¬ãŒã¿ãŒãåŒã³åºããŸãã - HTTPãªã¯ãšã¹ããäœæãããè¿ä¿¡ãããŸãã
ããããã®ã¹ãããïŒ ãã®ãããªapiserverããã©ããŒããã®ã¯é©ãã¹ãããšã§ããå®éã«ã©ãã ãã®äœæ¥ãè¡ãããç解ããŠããããã§ãã ãã®ãããèŠçŽãããšãå±éãªãœãŒã¹ã¯etcdã«ååšããããã«ãªããŸããã ããããããã«çœ®ãã ãã§ã¯ååã§ã¯ãããŸãã-ãã®æ®µéã§ã¯ãŸã 衚瀺ãããŸãã...
åæåå
ãªããžã§ã¯ããããŒã¿ãŠã§ã¢ããŠã¹ã«æ ŒçŽããããšãapiserverã¯å®å šã«è¡šç€ºãããã åæåå ïŒ åæ ååïŒã®ã»ãããå®è¡ãããŸã§ã¹ã±ãžã¥ãŒã©ãŒã«åé¡ãããŸããã åæååã¯ããªãœãŒã¹ã®çš®é¡ã«é¢é£ä»ããããã³ã³ãããŒã©ãŒã§ããããªãœãŒã¹ãå€éšã§äœ¿çšå¯èœã«ãªãåã«ãã®ãªãœãŒã¹ã§ããžãã¯ãå®è¡ããŸãã ãªãœãŒã¹ã¿ã€ãã«åæååãç»é²ãããŠããªãå Žåããã®æé ã¯ã¹ãããããããªãœãŒã¹ã¯ããã«è¡šç€ºãããŸãã
å€ãã®ããã°ã§æžãããŠããããã«ãããã¯äžè¬çãªããŒãã¹ãã©ããæäœãå®è¡ã§ãã匷åãªæ©èœã§ãã äŸã¯æ¬¡ã®ãšããã§ãã
- ãããã·ãµã€ãã«ãŒã³ã³ããããéããŠããããŒã80ã®äžã«æ¿å ¥ããããç¹å®ã®æ³šéãä»ããŠæ¿å ¥ããŸãã
- ç¹å®ã®åå空éã®ãã¹ãŠã®ãããã«ãã¹ã蚌ææžä»ãã®ããªã¥ãŒã ãæ¿å ¥ããŸãã
- é·ãã20æåæªæºã®ã·ãŒã¯ã¬ããã®äœæã®é²æ¢ïŒããšãã°ããã¹ã¯ãŒãã®å ŽåïŒã
initializerConfiguration
ãªããžã§ã¯ãã䜿çšãããšãç¹å®ã®ã¿ã€ãã®ãªãœãŒã¹ã«å¯ŸããŠå®è¡ããã€ãã·ã£ã©ã€ã¶ãŒã決å®ã§ããŸãã å²çè£ãäœæãããã³ã«ã€ãã·ã£ã©ã€ã¶ãå®è¡ããããšæ³åããŠãã ããã 次ã«ã次ã®ãããªããšãè¡ããŸãã
apiVersion: admissionregistration.k8s.io/v1alpha1 kind: InitializerConfiguration metadata: name: custom-pod-initializer initializers: - name: podimage.example.com rules: - apiGroups: - "" apiVersions: - v1 resources: - pods
ãã®æ§æãäœæããåŸã
custom-pod-initializer
ãåãããã®åŸ æ©ãã£ãŒã«ãïŒ
metadata.initializers.pending
ïŒã«è¿œå ãããŸãã åæåã³ã³ãããŒã©ãŒã¯æ¢ã«ãããã€ãããŠãããæ°ãããããã®ã¯ã©ã¹ã¿ãŒãå®æçã«ã¹ãã£ã³ãå§ããŸãã åæååã¯ãåŸ æ©ãã£ãŒã«ãã«ãã®ååïŒã€ãŸããåæååïŒãçºèŠãããšããã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã å®äºãããšã圌ã¯ååããŠã§ã€ãã£ã³ã°ãªã¹ãããåé€ããŸãã ãªã¹ãã®æåã«ååãããã€ãã·ã£ã©ã€ã¶ãŒã®ã¿ããªãœãŒã¹ã管çã§ããŸãã ãã¹ãŠã®åæååãå®äºããåŸ æ©ãªã¹ãã空ã«ãªããšããªããžã§ã¯ãã¯åæåããããšèŠãªãããŸãã
ã»ãšãã©ã®èªè ã¯ãæœåšçãªåé¡ã«æ°ä»ããŠãããããããŸããã kube-apiserverããŸã ãªãœãŒã¹ã衚瀺ããŠããªãå ŽåããŠãŒã¶ãŒç©ºéã®ã³ã³ãããŒã©ãŒã¯ã©ã®ããã«ãªãœãŒã¹ãåŠçã§ããŸããïŒ ãã®ããã«ãkube-apiserverã«ã¯ç¹å¥ãªãªã¯ãšã¹ããã©ã¡ãŒã¿ãŒ
?includeUninitialized
ããããåæåãããŠããªããªããžã§ã¯ããå«ããã¹ãŠã®ãªããžã§ã¯ããè¿ãããšãã§ããŸãã
翻蚳è ããã®PS
ããã°ãã芧ãã ããã
- â kubectlã®å®è¡ãéå§ããããšKubernetesã§äœãèµ·ãããŸããïŒ ããŒã2 ";
- ã å°èŠæš¡ãããžã§ã¯ãã§ã®Kubernetesã§ã®çµéš ã ïŒKubernetesã®æè¡ããã€ã¹ã®çŽ¹ä»ãå«ããããªã¬ããŒãïŒ;
- ã Kubernetesã¹ã±ãžã¥ãŒã©ã¯å®éã«ã©ã®ããã«æ©èœããŸããïŒã ";
- ã æé ãªäŸ¡æ Œã®ãµãŒãã¹ãšããŠKubernetesã䜿çšããã€ã³ãã©ã¹ãã©ã¯ã㣠ã
- Kubernetes 1.8ïŒäž»èŠãªã€ãããŒã·ã§ã³ã®æŠèŠ