docker exec
ãkubectl exec
ã®ããã¯ãšã³ããšããŠäœ¿çšãããŠããããã§ãã docker exec
ã«ã¯--user
ãã©ã°ããããç¹å®ã®ãŠãŒã¶ãŒãšããŠã³ãã³ããå®è¡ã§ããŸãã ãããšåãæ©èœã¯Kubernetesã«ã¯ååšããŸããã
ç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã¯ãããããèµ·åããä¿¡é Œã§ããªãã³ãŒããå®è¡ããããšã§ãã ãã ããããããäœæããåŸãã«ãŒãã¢ã¯ã»ã¹ãå¿ èŠãªããã°ã©ã ãå®è¡ããå¿ èŠãããå ŽåããããŸãïŒç¹æš©ããŒããªã©ã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãïŒã
ä¿¡é Œã§ããªãã³ãŒããã³ã³ããå ã®rootãšããŠå®è¡ããããªãããããã¹ãŠã®ããã°ã©ã ã®ã¢ã¯ã»ã¹èš±å¯ããšã¹ã«ã¬ãŒãããããšãã§ããŸããã
ãã®åé¡ãžã®åç §ãæ¢ããŸããããæšå¹Žã®StackOverflowã®åçããèŠã€ãããŸããã§ãã-http ://stackoverflow.com/questions/33293265/execute-command-into-kubernetes-pod-as-other-user ã
ããã«ã¯ããã€ãã®åé¿çããããŸããããšãã°ãã³ãã³ããåãåãã³ã³ããã«ãµãŒããŒãèšå®ããããããã©ã«ãã§rootã«ããŸãããä¿¡é Œã§ããªãã³ãŒããå®è¡ããåã«å¥ã®ãŠãŒã¶ãŒã«ããããããŸãã ãã ãããããã®åé¿çã¯ãKubernetes / Dockerã®åªããæœè±¡åãç Žããã»ãã¥ãªãã£ããŒã«ããããããŸãã
SGTMã @ kubernetes / kubectlããã«ã€ããŠäœãèãã¯ãããŸããïŒ
äžåçã§ã¯ãããŸãããããŠãŒã¶ãŒå ¥åãå¶åŸ¡ããããã«ãããã»ãã¥ãªãã£ããªã·ãŒãå¿ èŠã§ãããããããååã§ãŠãŒã¶ãŒãçŠæ¢ããå¿ èŠããããŸãïŒã³ã³ããã§ã¯èš±å¯ãããŠããªããããUIDãæå®ããå¿ èŠããããŸãïŒã
@stttsããã³@ncdcreexec
æ£åœãªãŠãŒã¹ã±ãŒã¹
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ
ç§ã®ã¢ããªã³ã³ããã€ã¡ãŒãžã¯ããã«ãããã¯ã䜿çšããŠãã«ããããŠããŸãã ã·ã§ã«ãéãããã®ã§ããã ç§ããããããšããç§ã¯ã«ãŒãã§ããããã¹ãŠã®envå€æ°ãèšå®ãããŸãã ãããããã«ãããã¯ã§çæãããç°å¢ã¯ãããŸããã ã¢ããªãŠãŒã¶ãŒã®ãã°ã€ã³ã·ã§ã«ïŒ su -l u22055
ïŒãéããšãã¢ããªç°å¢ããããŸãããkubernetesenvvarsããããŸããã
su -l
ã¯envå€æ°ãã³ããŒããªãã£ããšæããŸãããïŒ æ瀺çã«ã³ããŒããå¿
èŠããããŸã
èªåã§ããŸãã¯å¥ã®ã³ãã³ãã䜿çšããŠãã ããã
2016幎10æ11æ¥ç«ææ¥ååŸ5æ26åãMichaelElsdörfer< [email protected]
æžããŸããïŒ
ç§ã®ã¢ããªã³ã³ããã€ã¡ãŒãžã¯ããã«ãããã¯ã䜿çšããŠãã«ããããŠããŸãã éå°ããã
ã·ã§ã«ã ç§ããããããšããç§ã¯ã«ãŒãã§ããããã¹ãŠã®envå€æ°ãèšå®ãããŸãã ããã
buildpackã§çæãããç°å¢ã¯ãããŸããã ãã°ã€ã³ã·ã§ã«ãéããš
ã¢ããªãŠãŒã¶ãŒïŒsu -l u22055ïŒç§ã¯èªåã®ã¢ããªç°å¢ãæã£ãŠããŸãããä»ã¯
kubernetesenvvarsããããŸãããâ
ããªãã¯èšåãããããŒã ã«æå±ããŠããã®ã§ããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/kubernetes/kubernetes/issues/30656#issuecomment -253085398ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/ABG_p7sIu20xnja2HsbPUUgD1m4gXqVAks5qzCksgaJpZM4Jk3n0
ã
@ miracle2k - su -m -l u22055
ãè©ŠããŸãããïŒ -m
ã¯ãç°å¢å€æ°ãä¿æããããšã«ãªã£ãŠããŸãã
@adarshaj@ smarterclaytonãã³ããããããšãã su -m
ã«ã¯ç¬èªã®åé¡ããããŸãïŒããŒã ãã£ã¬ã¯ããªãééã£ãŠããŸãïŒãããããŸã§ã¯æ©èœãããŸããã ãã ããéèŠãªã®ã¯ããkubectlexecããæ£ããããšãå®è¡ããããšãæãã§ãããšããããšã§ãã Dockerãã¡ã€ã«ã§å®çŸ©ãããŠãããŠãŒã¶ãŒã䜿çšããããšãã§ããŸãã
ãããç§ããã®æ©èœãå¿ èŠãšããæ¹æ³ã®äŸã§ãã
å ¬åŒã®Jenkinsã€ã¡ãŒãžã¯ããŠãŒã¶ãŒJenkinsãšããŠå®è¡ãããŸãã ãµã€ãºãå€æŽããå¿ èŠãããæ°žç¶ãã£ã¹ã¯ãæ¥ç¶ãããŠããŸãã kubectlã«--userãããå Žåãrootããã³resize2fsãšããŠbashããããšãã§ããŸãã æ®å¿µãªãããããããªããã°ãããã¯éåžžã«èŠçã§ãã
è¿œå ã®ãŠãŒã¹ã±ãŒã¹-ããªãã¯ã»ãã¥ãªãã£ãæèããŠããã®ã§ãã³ã³ããå ã§å®è¡ãããŠãããã¹ãŠã®ããã»ã¹ã«ç¹æš©ããããŸããã ããããä»ã¯äºæããäœããæ©èœããŠããããrootãšããŠã¢ã¯ã»ã¹ããŠãããšãã°ãããã°ãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããã©ã€ãã·ã¹ãã ã®äœãåé¡ã«ãªã£ãŠããã®ããææ¡ããããšèããŠããŸãã
ãããã°ç®çã§ã®ã€ã³ã¹ããŒã«ãç§ã®ãŠãŒã¹ã±ãŒã¹ã§ãã çŸåšãkubernetesãå®è¡ããŠããããŒãã«ssh
ãå
¥åãã docker exec
ãçŽæ¥äœ¿çšããŠããŸãã
ããã®ç¶æ³ã¯ã©ãã§ããïŒ ãã®æ©èœã¯éåžžã«äŸ¿å©ã§ã
ãã§ãã¯ããŸããã§ãããã --as
ãš--as-group
ã®ã°ããŒãã«ãã©ã°ã¯ããã§åœ¹ç«ã¡ãŸããïŒ åœŒãã¯exec
ã§ãåäœããŸããïŒ cc @liggitt
ãã§ãã¯ããŸããã§ãããã-asããã³--as-groupã°ããŒãã«ãã©ã°ã¯ããã§åœ¹ç«ã¡ãŸããïŒ åœŒãã¯execã§ããåããŸããïŒ cc @liggitt
ãããããããã¯kubernetes APIã«å¯ŸããŠèªåèªèº«ãèå¥ããããšãšé¢ä¿ããããexecåŒã³åºãã®ããã«éžæãããuidã«éç¥ããããã«ééããããšã¯ãããŸãã
ãŠãŒã¶ãŒãã©ã°ããªãã®ã¯é¢åã§ãã ãŠãŒã¹ã±ãŒã¹ã¯ãéç¹æš©ãŠãŒã¶ãŒãšããŠå®è¡ãããã³ã³ãããŒãããããã®ã³ã³ãããŒã«ããªã¥ãŒã ãããŠã³ãããŸãããããªã¥ãŒã ãã©ã«ããŒã¯ãŠãŒã¶ãŒã«ãã£ãŠææãããŠããŸããã æå®ãããæš©éã§ããªã¥ãŒã ãããŠã³ããããªãã·ã§ã³ã¯ãããŸããã ãšã³ããªãã€ã³ãã¹ã¯ãªããã䜿çšããŠã¢ã¯ã»ã¹èš±å¯ãå€æŽããããšã¯ã§ããŸãããããã¯ãéç¹æš©ãŠãŒã¶ãŒãšããŠå®è¡ãããããã§ãã ç¹æš©ã®ãªããŠãŒã¶ãŒãšããŠãå®è¡ããããããlifecycle.preStartããã¯ã䜿çšã§ããŸããã '-u'ãªãã·ã§ã³ãååšããå Žåã kubectl exec -u root
ã¯ãããè¡ãããšãã§ããŸãã
ã³ã³ãããŠãŒã¶ãŒä»¥å€ã®ãexecããèš±å¯/ãããã¯ããã«ã¯ãããã¯è¿œå ã®RBACæš©éã§ããå¿ èŠããããšæããŸãã
çæ³çã«ã¯ãlifeCycleããã¯ã¯ãã³ã³ãããŒãå®è¡ãããªãå Žåã§ããã³ã³ãããŒå ã§ã«ãŒããšããŠå®è¡ã§ããå¿ èŠããããŸãã çŸåšã®ãšãããæåã®ä»£æ¿çã¯ãããããåãããŠã³ãã«å¯ŸããŠinitã³ã³ãããå®è¡ããããšã§ãã ã³ã³ããã®èµ·åæã«rootãšããŠ1è¡ã®ã³ãã³ããå¿ èŠãªå Žåã«ãå¥ã®ã³ã³ãããèµ·åããŠããªã¥ãŒã ãããŠã³ãããããã®äžçš®ã®ãªãŒããŒãããã
/ sig cli
ãã®æ©èœã®+1ã ããããªããšããããã°ãéåžžã«å°é£ã«ãªããŸãã
ãã®æ©èœã®+1ã Dockerã³ã³ãããåæ§ç¯ããDockerãã¡ã€ã«ã®æåŸã®è¡ã«USER rootãå«ãŸããŠããããšã確èªããŠããããããã°ããŠããããããç¡å¹ã«ããå¿ èŠããããŸãã
dockerã³ãã³ãã©ã€ã³ã«--userãã©ã°ãããããã§ã
johnjjungãããŒããžã®sshã¢ã¯ã»ã¹ãããå Žåã¯ãdockerãšuserãã©ã°ã䜿çšããŠã³ã³ãããŒã«æ¥ç¶ã§ããŸããããã«ãããæéãå°ãç¯çŽã§ããå¯èœæ§ããããŸãã
ããŒããããããããè©ŠããŠã¿ãã
2017幎7æ10æ¥ã11ïŒ34 -0400ã BenAbineriBubblenotifications @github.comã¯æ¬¡ã®ããã«æžããŠããŸãã
johnjjungãããŒããžã®sshã¢ã¯ã»ã¹ãããå Žåã¯ãdockerãšuserãã©ã°ã䜿çšããŠã³ã³ãããŒã«æ¥ç¶ã§ããŸããããã«ãããæéãå°ãç¯çŽã§ããå¯èœæ§ããããŸãã
â
ã³ã¡ã³ãããã®ã§ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããããã¹ã¬ããããã¥ãŒãããŠãã ããã
+1ã¯æ¬åœã«åé¡ã§ããç§ã¯sshãå®è¡ããŠãããdockerexecãå®è¡ããå¿ èŠããããŸãã
/ cc @frobware
+1ããŠãã ããã åé¿çãšããŠdockerexec-uã䜿çšããªãã§ãã ããã
+1-kubectl execã¯ãdocker execã«æ¯ã¹ãŠå€§å¹ ãªæéã®ç¯çŽã«ãªãããããŠãŒã¶ãŒãæå®ããããã«dockerexecã«æ»ããªããã°ãªããªããã³ã«æ³£ããŸãã
èæ ®äºé ïŒ
+1ã¯ãæ®å¿µãªããç§ãã¡ãç¿æ £ã«ããŠããå®å šã§ãªãåé¿çãé²ãããã§ãïŒã€ãŸããrunAsUserãrootã«èšå®ããpublicããããã€ãããšãã«å€ãå ã«æ»ãã®ãå¿ããŸãð®ïŒã
+1
+1ç§ã«ãšã£ãŠã¯ããããã«ãã°ã€ã³ããŠãå®è¡ãŠãŒã¶ãŒãšããŠrootã䜿çšããŠã³ã³ãããŒãåãããã€ããã«å€æŽãå ããã«ã¯ã-userãã©ã°ãæ¬åœã«å¿ èŠã§ãã
ãã®åé¡ã¯ããªã匷åã«ãµããŒããããŠããããã§ãããåªå é äœãä»ããããã«ã§ããããšã¯ãããŸããïŒ ïŒã¯ããã¯ãããããã¯åãå ¥ããããŸãã:)ïŒ
å®çŸ©ããããŠãŒã¶ãŒã§å®è¡ãããã®æ©èœãæã€ãšäŸ¿å©ãª+1
ããã®å®è£ ã¯ã»ãã¥ãªãã£äžã®æžå¿µããé£ãããããããªããšæããŸããïŒ ããšãã°ãDockerfileãæåã«érootãŠãŒã¶ãŒãšããŠèšå®ãããŠããå Žåãä»ããrootãŠãŒã¶ãŒãšããŠã³ãã³ããå®è¡ã§ããããã«ããå¿ èŠããããŸããïŒ --dockerã®ãŠãŒã¶ãŒãã©ã°ã¯ãããã©ã®ããã«åŠçããŸãããïŒ åœŒãããããé©åã«åŠçããå Žåããããæž¡ãããã«kubectlexecã³ãã³ãã«ããããåœãŠãå¿ èŠããããšæããŸãã
ãããé©åãªæŠç¥ã§ãããã©ãã誰ãã«æããŠããããŸããïŒ ããããç§ã¯PRãå§ããããšãã§ããŸã
@johnjjungã¯ããããã§ã®æŠç¥ã¯ãdocker--userãã©ã°ãæž¡ãããã«kubectlexecã«ããããé©çšããããšã ãšæããŸãã
ãŸããkubectlããæ¥ç¶ããããã«GCPããã®æé»çãªèªèšŒããããããã»ãã¥ãªãã£äžã®æžå¿µã¯è»œåŸ®ãªããã§ãã
ãŸããkubectlããæ¥ç¶ããããã«GCPããã®æé»çãªèªèšŒããããããã»ãã¥ãªãã£äžã®æžå¿µã¯è»œåŸ®ãªããã§ãã
ã©ãããŠïŒ ãããä»æ§ã§èš±å¯ããããŠãŒã¶ãŒãå¶åŸ¡ã§ããŸãã execåŒã³åºãã§æå®ããããã¹ãŠã®ãŠãŒã¶ãŒIDã«å¯ŸããŠåçã®å¶åŸ¡ãæåŸ ããŸãã å ã®ã³ã³ãããå®è¡ãããªãã£ããšãã«execãrootãšããŠå®è¡ã§ãããã©ããã«ã€ããŠãåæ§ã®è³ªåããããŸãã ãããããªãããããã»ãã¥ãªãã£ã³ã³ããã¹ããšãããã»ãã¥ãªãã£ããªã·ãŒã³ã³ãããŒã«ããã®æ°ãããªãã·ã§ã³ã«ã©ã®ããã«é©çšãããããèããã«ãããå ¬éããããšã¯ã§ããŸãã
@liggittããã¯ãDockerfileèªäœã«ãŠãŒã¶ãŒãèšå®ããã®ãšåãã§ãããDockerã®ãŠãŒã¶ãŒãã©ã°ã䜿çšããŠrootãšããŠå®è¡ã§ããŸãã
Dockerã®äž»ãªé¢å¿äºã¯ã䟵害ãããå Žåã«ã_running_ã³ã³ããå ããã®ã«ãŒãã¢ã¯ã»ã¹ãé²æ¢ããããšã§ããããã§ãã ããæç¹ã§ããŠãŒã¶ãŒãããŒã«ãå®éã«éçºããŠæäœã§ããããã«ããããã«ãä¿¡é Œãäžããå¿ èŠããããŸãã
ããšãã°ãDockerfileãæåã«érootãŠãŒã¶ãŒãšããŠèšå®ãããŠããå Žåãä»ããrootãŠãŒã¶ãŒãšããŠã³ãã³ããå®è¡ã§ããããã«ããå¿ èŠããããŸããïŒ --dockerã®ãŠãŒã¶ãŒãã©ã°ã¯ãããã©ã®ããã«åŠçããŸãããïŒ
@johnjjung @ jordanwilson230ãèšãããã«ãdockerã©ã³ã¿ã€ã åŒæ°ã¯Dockerfileãã£ã¬ã¯ãã£ãããªãŒããŒã©ã€ãããŸãã ç§ã®é ããé¢ããŠãããã¯ã»ãšãã©ã®å®è¡æåŒæ°ïŒããŒãçªå·ãªã©ïŒãã©ã®ããã«æ©èœãããã§ãã
å ã®ã³ã³ããããªãã£ããšãã«execãrootãšããŠå®è¡ã§ãããã©ããã«ã€ããŠåæ§ã®è³ªåããããŸã
@liggittæ確ã«ããããã«ããããä»æ§ã§å®çŸ©ããããŠãŒã¶ãŒIDã®åœ¹å²ã¯å€æŽããããæå³ããå¹æãç¶ç¶ããŸãã ã³ã³ããïŒããã³ãã®ããã»ã¹ïŒã¯ããã®ãŠãŒã¶ãŒãšããŠèµ·åãããŸãã ããã§æèµ·ãããåé¡ã¯ãïŒãã§ã«ïŒèªèšŒããããŠãŒã¶ãŒããäž»ã«ãããã°ç®çã§ãrootãŸãã¯ä»»æã®ãŠãŒã¶ãŒã§å®è¡ããæåãªãã·ã§ã³ãèš±å¯ããããšã§ããã
ããã§æèµ·ãããåé¡ã¯ãïŒãã§ã«ïŒèªèšŒããããŠãŒã¶ãŒããäž»ã«ãããã°ç®çã§ãrootãŸãã¯ä»»æã®ãŠãŒã¶ãŒã§å®è¡ããæåãªãã·ã§ã³ãèš±å¯ããããšã§ããã
ãããŠç§ã®ãã€ã³ãã¯ããŠãŒã¶ãŒãrootãšããŠã³ã³ãããŒãå®è¡ããã®ãé²ãããã«ä»æ¥æã£ãŠããã³ã³ãããŒã«ã¯ãrootã§å®è¡ãããªãããã«ããããã«ããã§ãé©çšããå¿ èŠããããšããããšã§ãã
@liggittç³ãèš³ãããŸããããããæ確ãªæ¹æ³ã§èª¬æããæ¹æ³ãããããããŸããã äžèšã®ã³ã¡ã³ãã«é¢ããŠããããè©ŠããŠãã ããïŒ
jordan@gke-my-default-pool-dsioiaag-i9f3 ~ $ docker exec -it -u root myKafkaContainer bash
root@kafka-0:/# echo "I've exec'd into my container as $(whoami) despite defining the kafka user in pod.spec...."
I've exec'd into my container as root despite defining the kafka user in pod.spec....
root@kafka-0:/#
ãããGKEã®èŠ³ç¹ãããã§ã«å¯èœã§ããããšã確ç«ããåŸïŒéåžžã«åä»ãªæ¹æ³ã§ã¯ãããŸããïŒãã©ã®ãããªæ°ããã»ãã¥ãªãã£äžã®æžå¿µãèããŠããŸããïŒ
åé¡ã¯ãçŸåšååšããªãkubernetesAPIãä»ããŠé»åãå ¬éããããšã§ãã ãŠãŒã¶ãŒãAPIãä»ããŠã¯ãŒã¯ããŒããå®è¡ããããšãèš±å¯ãããããŒããžã®sshã¢ã¯ã»ã¹ãèš±å¯ãããªãã®ã¯éåžžã®ããšã§ãã
次ã®å Žåã«éããAPIãä»ããŠæ©èœããããšã¯çŽ æŽãããããšã§ãã
@liggitt絶察ã«æ£ããã§ãã ãããã£ãŠãã»ãã¥ãªãã£ãžã®åœ±é¿ã®ç¯å²ã_node_ã¢ã¯ã»ã¹ã«çµã蟌ãã ã®ã§ãç§ãã¡ïŒ @johnjjungãªã©ïŒã¯ã€ãã«ãã®è°è«ãå®çšçãªå®äœã«äœ¿çšãå§ããããšãã§ããŸãã GKEãã©ãããã©ãŒã ã§rootãšããŠå®è¡ããããã®kubectlãã©ã°ã€ã³ãéå§ããŸããã AWSãªã©ã«ãã©ãçããŸã§ã«ã¯å°ãæéãããããŸãã @johnjjungããªãã¯ãŸã ããªãã®åŽã§æŸãæ°ããããŸããïŒ
@liggittããªããè¡ã£ãç·šéãèŠãã ãã§ããããé²ããã®ã«åœ¹ç«ã¡ãŸãã ããããšãã
é¢é£ããè°è«ã«ã€ããŠã¯ãæ¢åã®ãããã§åå¥ã«æå®ããããŠãŒã¶ãŒIDãå«ãä»»æã®ã³ã³ãããŒãå®è¡ã§ããããã«ããææ¡ãåç §ããŠãã ãã-https://github.com/kubernetes/community/pull/1269
å®è¡ããããã®ã®ã»ãã¥ãªãã£é¢ãå ã®ã³ã³ããããé¢ããã»ã©ãä»æ§å šäœãã³ããŒã¬ã³ãã³ã³ãããšããŠæ¢åã®ã¢ãããã·ã§ã³ã¡ã«ããºã ã§æ€èšŒã§ããããšãéèŠã«ãªããŸãã
@ jordanwilson230ã³ãŒãããŒã¹ã確èªããŠãããšãkubectl execã³ãã³ãã®çµ±åã®ãã€ã³ããèŠã€ãããŸãããããã¯è¯ãåºçºç¹ã§ããä»ã®kubernetesã³ãŒãããŒã¹ã§ãDockerãèš±å¯ã§ããå Žæãå€æŽããå¿ èŠããããã©ããããããŸããã uãã©ã°ã ããã¯èšã£ãŠããã©ããããå§ããŠãã¯ã©ã¹ã¿ãŒç®¡çè ããããã®ã»ãã¥ãªãã£ããªã·ãŒãªã©ã§ãã®åé¡ã«æ»ãããšãã§ãããšæããŸã...äžåºŠã«1ã¹ããããã€ã
kubernetesãdocker --user
ãã©ã°ãå®è¡ããå Žæãå€æŽããå Žæã誰ããç¥ã£ãŠããå Žåã¯ãããã圹ç«ã¡ãŸãã
ããã«ã¡ã¯@johnjjungã æã
ïŒ<1.6ïŒãKubernetes kubelets
ã¯DockerãçŽæ¥äœ¿çšãããã®ãããªãªãã·ã§ã³ãæž¡ãããšãã§ããŸããã çŸåšãè€æ°ã®ã©ã³ã¿ã€ã ãCRIããµããŒãããããã®æšæºã€ã³ã¿ãŒãã§ãŒã¹ããããŸãã Dockerã®ããã«ãã©ã³ã¿ã€ã ã«æž¡ãããšãã§ããåœä»€ã決å®ããã®ã¯CRIã®æ©èœã§ãã
Kubernetesã¯ãããŸããŸãªã³ã³ããã©ã³ã¿ã€ã ïŒ dockershim
+ Docker + containerd
ã cri-containerd
+ containerd
ãrktãcri-oãlxdãFraktiãªã©ïŒã«äœãããããæ瀺ããŸãCRIã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããŠãã ããã cri-o
ã©ã³ã¿ã€ã å®è£
ã®å Žåã¯çŽæ¥ããŸãã¯dockershim
ãcri-containerd
ã®ãããªã·ã ãä»ããŠã ãããã£ãŠãããã§å¿
èŠãªããšãå®è¡ã§ããããã«ããã«ã¯ïŒã³ã³ãããŒãéå§ããããšããšã¯ç°ãªããŠãŒã¶ãŒãšããŠå®è¡ãããŠããæ¢åã®ã³ã³ãããŒã«ããã»ã¹ãè¿œå ããïŒãæåã«ãã®ãªãã·ã§ã³ããµããŒãããããã«CRIä»æ§ãæ¡åŒµããå¿
èŠããããŸãïŒããšãã°ã ExecSync
ã«ã¯uidãªãã·ã§ã³ãå¿
èŠã§ããã LinuxContainerSecurityContext
ã¯ãããçŠæ¢ããå¿
èŠã¯ãããŸããã @ liggittã¯äžèšãšåãããã«èšã£ããšæããŸãïŒã
次ã«ãåã³ã³ãããŒã©ã³ã¿ã€ã ãŸãã¯ã©ã³ã¿ã€ã ã·ã ã¯ãå
ã«é²ãã§ãã®ãµããŒããå®è£
ã§ããŸãã Dockerã®å Žåãããã¯CRIä»æ§/ã€ã³ã¿ãŒãã§ãŒã¹ãžã®è¿œå ããµããŒãããããã«dockershim
å®è£
ãæ¡åŒµããããšãæå³ããŸãã ãã ãã dockershim
+ Dockerã¯å»æ¢ãããä»åŸæ°åã®ãªãªãŒã¹ã§cri-containerd
+ containerd
ãåªå
ããããšäºæ³ããããããããããcri-containerd
ã«çŠç¹ãåœãŠãã»ããããã§ãããã
http://blog.kubernetes.io/2017/11/containerd-container-runtime-options-kubernetes.html
https://github.com/kubernetes/community/blob/master/contributors/devel/container-runtime-interface.md
ãããã°ã³ã³ããã®ææ¡ãšããŠããã®è°è«ã«ãé¢é£ããŠããŸãã æ°ããkubectl debug
ã³ãã³ãã䜿çšããŠãåããããã¹ããŒã¹ã§2çªç®ã®ã³ã³ããã€ã¡ãŒãžãå®è¡ã§ããããã«ããå¿
èŠããããŸãã ãããããè¿œå ã®ã³ã³ãããå¥ã®ãŠãŒã¶ãŒãšããŠå®è¡ã§ããŸããïŒ
@whereisaaronããªãã®æçš¿ã¯å€§ããªå©ãã«ãªããŸãã ããããã¹ãŠè©³ããæžããŠãããŠããããšãã
@whereisaaron詳现ãããããšãã ç§ãããªããç解ããŠãããªãããããã°ã®ææ¡ïŒãããééããå ŽåïŒã¯ããããäžæ¥ã®çµããã«çœ®ãã®ã«æé©ãªå Žæãããããªãããã§ãã äœæ¥ãæ¿èªããããã©ããã¯ããããŸããããåºæ¬çã«ã¯ãéžæããã³ã³ãããŒããã®ãããã«ã¢ã¿ããããŠããã®ãããããããã°ã§ããŸãïŒããã¯çŽ æŽããããµãŠã³ãã§ãïŒããå ã®ã³ã³ãããŒå ã§ãŠãŒã¶ãŒãå€æŽããããšã¯ã§ããŸããïŒ ãŸããcri-containerdã䜿çšããŠããããåŸ ã€ããå ã«é²ãå¿ èŠããããšããããšã§ããïŒ
ããããŸã å®è£ ãããŠããªãçç±ã®1ã€ã¯ãè€æ°ã®ã°ã«ãŒããããŸããŸãªé åã§äœæ¥ããŠããè€æ°ã®ãªããžããªããããããšæãããŸãã
@johnjjungãããã°ã³ã³ããã¯ãKubernetes 1.9ã§ãã¢ã«ãã¡ãæ©èœãšããŠå®è£ ããããšãæ¿èªãããŠãããšæããŸãïŒãã®æ©èœãæ瀺çã«æå¹ã«ããªãéãããªãã«ãªã£ãŠããŸãïŒã ã§ã1.9ã«ãªã£ããšã¯æããŸããã ãããã£ãŠããããã1.10以éã«ãªããŸã§ã¯ãããŸããã
ç§ãç解ããŠããããã«ããããã°ã³ã³ããã¯ãããããã°äžãã®ã¿ãŒã²ãããããå ã®ããã»ã¹ãšããŠå®è¡ããããããããããšåãã«ãŒãã«ã»ãã¥ãªãã£ã³ã³ããã¹ãã«ãããç¬èªã®ã³ã³ããã€ã¡ãŒãž/ãã¡ã€ã«ã·ã¹ãã ãæã£ãŠããŸãã ãããã£ãŠãä»»æã®ããã»ã¹ããããã°ãããããã«ããä»»æã®ããªã¥ãŒã ãããŠã³ãã§ããŸãã ããããããªãã¯åãã»ãã¥ãªãã£ã³ã³ããã¹ãã«ããã®ã§ããããã§äœ¿çšã§ããuidã«åãã«ãŒãã«ã課ããå¶éã«åºå·ããŠããã®ã§ã¯ãªãããšæããŸãã ããã«ã¯ããããŸãããããã«åãçµãã§ããïŒsig-nodeã®äººã ã«å°ããå¿ èŠããããŸãã
CRIã®æ¡åŒµã«é¢ããŠã¯ããããè¡ãã«ã¯ïŒsig-nodeããã®å€ãã®ãµããŒããå¿
èŠã ãšæããŸããããã«ã cri-containerd
ãcri-o
ãªã©ã®ããŸããŸãªã©ã³ã¿ã€ã ãããžã§ã¯ãããã®ç°è°ã¯ãããŸããã次ã«ããµããŒããå®è£
ããå¿
èŠããããŸãã
ä»æ¥ã¯ããŸãæéããããŸããããGKEã§å®è¡ããŠãããŠãŒã¶ãŒã®ããã«ããŠãŒã¶ãŒ[-u]ãã©ã°ã䜿çšããŠå®è¡ããããã®ã¢ãããã¯kubectlãã©ã°ã€ã³ãäœæããŸããã
https://github.com/jordanwilson230/kubectl-plugins
ã€ã³ã¹ããŒã«ã¹ã¯ãªãããå®è¡ããŠããã®ãã©ã°ã€ã³ãŸãã¯ããããã¹ãŠãèªç±ã«å€æŽ/ã³ããŒããŠãã ããã @johnjjungãä»ã®äººãã¡ããã£ãšåãçµãããšãã§ããããã«ãªããŸã§ã¯ããã ã®ã¢ãããã¯ãªè§£æ±ºçã§ãã
GCPã«åºæã§ã¯ãªã代æ¿ãœãªã¥ãŒã·ã§ã³ãçšæããŸãã ããã¯SSHããŸã£ãã䜿çšãããkubectlãæ©èœããå¿ èŠãããã ãã§ãã
kubectl-exec-userã®ãããã¯ãããã䜿çšããŠãããŠãŒã¶ãŒãã·ã§ã«ã€ã³ãèŠæ±ãããŠããã³ã³ãããŒã«ã¢ã¯ã»ã¹ã§ããããšã確èªããŸããïŒ
ããã¯ãkubernetesAPIãèš±å¯ããã¢ã¯ã»ã¹ã«ãã©ãŒã«ããã¯ããŸãã RBACãã³ã³ããã«ããŒãããã«ãŒãœã±ããã®ããŠã³ããèš±å¯ããŠããå Žåã«ã®ã¿æ©èœããŸãã
SSHãå¿ èŠãšããã«ãã³ã³ãããŒããããŒãã«ãã¬ãŒã¯ã¢ãŠãããããã®åµé çãªæ¹æ³ãç§ã®ãœãªã¥ãŒã·ã§ã³ãšèããŠãã ããã ãã¹ãŠåãã»ãã¥ãªãã£æ¡ä»¶ãèæ ®ããå¿ èŠããããŸãããå°ãªããšãkubernetesAPIãµãŒããŒã®å¶éãå°éããŸãã
90æ¥éæäœããªããšãåé¡ã¯å€ããªããŸãã
/remove-lifecycle stale
ã䜿çšããŠãåé¡ãæ°èŠãšããŠããŒã¯ããŸãã
å€ãåé¡ã¯ãããã«30æ¥ééã¢ã¯ãã£ãã«ãªããšè
æããæçµçã«ã¯éããŸãã
ãã®åé¡ãä»ãã解決ã§ããå Žåã¯ã /close
ã䜿çšããŠè§£æ±ºããŠãã ããã
sig-testingãkubernetes / test-infraã fejtaã«ãã£ãŒãããã¯ãéä¿¡ããŸãã
/ lifecycle stale
/ remove-lifecycle stale
ããã¯å€§æè¿ã§ãã ã»ãã¥ãªãã£ãæèãããã¹ãŠã®ããã»ã¹ãéã«ãŒããšããŠå®è¡ããããšã§çœ°ããããã®ã¯ã¯ãŒã«ã§ã¯ãããŸããã ïŒhttps://github.com/kubernetes/kubernetes/issues/30656#issuecomment-272055993ã®èšãæãïŒ
/sigããŒã
ãã®æ©èœã«ã¯ãªããŒã¹ãå¿ èŠãªæªå®æã®PRãããããã§ãïŒ httpsïŒ//github.com/kubernetes/kubernetes/pull/59092ã ãããæã«åã£ãŠå®æãããããšãã§ãã人ã¯ããŸããïŒ CC @louyihua
+1
ïŒ @SimenBãšåãåé¡ãçºçããŸã-ãããã°ç®çã§ã€ã³ã¹ããŒã«ãããã®ã§ããããDockerãçŽæ¥äœ¿çšããããã³ããããããšãããããŸãïŒ
ãããé©åã«ãµããŒããããã®ãåŸ
ã£ãŠããéãäžéã®è§£æ±ºçã¯ã su-exec
ïŒDockerfileãŸãã¯K8sãããã§ã¹ãã®ããããïŒã§dockerCMDãå®è¡ããããšã§ãã su-execã®ééã¯ããã20kïŒã¢ã«ãã€ã³äžïŒã§ããããã®ããã«ããŠãã¢ããªã¯kubectl execã«ã«ãŒããæã¡ãªãããç¹æš©ãªãã§å®è¡ãããŸãã
+1
ãã®ãããª-uãã©ã°ãããã ããã°å¹žãã§ãã +1ã
ãã ã®ã¢ã€ãã¢ïŒ
ããšãã°ã --conainer-type
ã®ãããªãã®ã¯ããµããŒããããŠããåŒæ°ãäžã«ããã³ã³ããã®å®è£
ã«çŽæ¥æž¡ãããšãã§ããããã«ããããã®å€§ããªãã©ã¹ã«ãªããŸãã
kubectl exec --container-type=docker -it -u 0 NAME
ããã«ãããkubectlã«ã³ã³ããã©ã³ã¿ã€ã ã®åºç€ãšãªãæ©èœã®ãµãã»ããã®ã¿ãå«ãŸããããšãåé¿ã§ããŸãã ããã«ããµããŒããããŠãããã¹ãŠã®ã³ã³ãããŒã¿ã€ãã«ã€ããŠããµããŒããããŠããåŒæ°ãkubeletã¬ã€ã€ãŒããã³ã³ãããŒã«è³ããŸã§ãããã³ã°ããã³æœè±¡åããå¿ èŠããªããããåŽåãç¯çŽã§ããŸãã
ãããã£ãŠãèŠçŽãããšã --container-type
ãã©ã°ããªããšãkubectlããæœè±¡åãããåŒæ°ã®ã¿ã䜿çšã§ããåºã«ãªãã³ã³ããã¿ã€ãã¯å®å
šã«ééçã§ãã ãã©ã°ã䜿çšãããšãã³ã³ããåºæã®åŒæ°ãæž¡ãããšãã§ããŸãã ã³ã³ããã¿ã€ãã«ãã€ã³ããããã©ããã¯ãkubectlã®ãŠãŒã¶ãŒæ¬¡ç¬¬ã§ãã
ãšããã§ïŒããŒãã«SSHã§æ¥ç¶ããDockerãçŽæ¥äœ¿çšããããã®ãã³ããæäŸããŠããã@SimenBã«æè¬ããŸãã ããã¯ç§ã®åé¡ãäžæçã«è§£æ±ºããŸããã Minikubeã䜿çšããŠãrootãšããŠãã°ã€ã³ããããã«æ¬¡ã®ããšãè¡ãããšãã§ããŸããã
minikube ssh "docker exec -it -u 0 <container-id> bash"
å€åããã¯èª°ãã®å©ãã«ãªããããããŸããã
äžå¿«ãªãã®ãèªååããåé¿çã¹ã¯ãªããã å¿ èŠãªããŒããžã®SSHã¢ã¯ã»ã¹ã
䜿çšæ³ïŒ
`` `./shell-into-pod-as-root.sh
./shell-into-pod-as-root.sh podname
./shell-into-pod-as-root.sh podname sh
Enjoy!
set -xe
POD = $ïŒkubectl describe pod "$ 1"ïŒ
NODE = $ïŒecho "$ POD" | grep -m1 Node | awk -F'/''{print $ 2}'ïŒ
CONTAINER = $ïŒecho "$ POD" | grep-m1'ã³ã³ããID'|awk -F'dockerïŒ//''{print $ 2}'ïŒ
CONTAINER_SHELL = $ {2ïŒ-bash}
+eãèšå®ããŸã
ssh -t "$ NODE" sudo docker exec --user 0 -it "$ CONTAINER" "$ CONTAINER_SHELL"
if ["$ïŒ" -gt 0]; ãããã
+xãèšå®
ããããžã®SSHã®ãšã³ãŒã«å€±æããŸããã ã$PATHã«å®è¡å¯èœãã¡ã€ã«ãèŠã€ãããŸãããã®ãããªãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããå Žåã¯ã次ã®ããšãè©ŠããŠãã ããã
ãšã³ãŒ"$0 $ 1 sh"
fi
`` `
@Nowakeråå空éãã©ã®ããã«åŠçããŸããïŒ
90æ¥éæäœããªããšãåé¡ã¯å€ããªããŸãã
/remove-lifecycle stale
ã䜿çšããŠãåé¡ãæ°èŠãšããŠããŒã¯ããŸãã
å€ãåé¡ã¯ãããã«30æ¥ééã¢ã¯ãã£ãã«ãªããšè
æããæçµçã«ã¯éããŸãã
ãã®åé¡ãä»ãã解決ã§ããå Žåã¯ã /close
ã䜿çšããŠè§£æ±ºããŠãã ããã
sig-testingãkubernetes / test-infraã fejtaã«ãã£ãŒãããã¯ãéä¿¡ããŸãã
/ lifecycle stale
/ remove-lifecycle stale
ãã®ãããª-uãã©ã°ãããã ããã°å¹žãã§ãã +1ã
ãã ã®ã¢ã€ãã¢ïŒ
ããšãã°ã
--conainer-type
ã®ãããªãã®ã¯ããµããŒããããŠããåŒæ°ãäžã«ããã³ã³ããã®å®è£ ã«çŽæ¥æž¡ãããšãã§ããããã«ããããã®å€§ããªãã©ã¹ã«ãªããŸãã
kubectl exec --container-type=docker -it -u 0 NAME
ããã«ãããkubectlã«ã³ã³ããã©ã³ã¿ã€ã ã®åºç€ãšãªãæ©èœã®ãµãã»ããã®ã¿ãå«ãŸããããšãåé¿ã§ããŸãã ããã«ããµããŒããããŠãããã¹ãŠã®ã³ã³ãããŒã¿ã€ãã«ã€ããŠããµããŒããããŠããåŒæ°ãkubeletã¬ã€ã€ãŒããã³ã³ãããŒã«è³ããŸã§ãããã³ã°ããã³æœè±¡åããå¿ èŠããªããããåŽåãç¯çŽã§ããŸãã
ãããã£ãŠãèŠçŽãããšã
--container-type
ãã©ã°ããªããšãkubectlããæœè±¡åãããåŒæ°ã®ã¿ã䜿çšã§ããåºã«ãªãã³ã³ããã¿ã€ãã¯å®å šã«ééçã§ãã ãã©ã°ã䜿çšãããšãã³ã³ããåºæã®åŒæ°ãæž¡ãããšãã§ããŸãã ã³ã³ããã¿ã€ãã«ãã€ã³ããããã©ããã¯ãkubectlã®ãŠãŒã¶ãŒæ¬¡ç¬¬ã§ãããšããã§ïŒããŒãã«SSHã§æ¥ç¶ããDockerãçŽæ¥äœ¿çšããããã®ãã³ããæäŸããŠããã@SimenBã«æè¬ããŸãã ããã¯ç§ã®åé¡ãäžæçã«è§£æ±ºããŸããã Minikubeã䜿çšããŠãrootãšããŠãã°ã€ã³ããããã«æ¬¡ã®ããšãè¡ãããšãã§ããŸããã
minikube ssh "docker exec -it -u 0 <container-id> bash"
å€åããã¯èª°ãã®å©ãã«ãªããããããŸããã
ãã-dockerexecã䜿çšããŠãããè¡ãã®ã¯ç°¡åã§ã-ããã¯äž»ã«äžè²«æ§ã«é¢ãããã®ã§ã-ãã«ããŠãŒã¶ãŒdockerã³ã³ãããŒã¯å®éã«ã¯å°ãåè«ã§ã-VMãã³ã³ãããŒã«å€æããããšããã®éºç£ã§ãã
ç§ã¯çŸåšããããgrafanaã§æ±ã£ãŠããŸã-ããã¯æéãšãšãã«çµéãããšæããŸãã
@bryanhunteslããŒããžã®æåSSHæ¥ç¶ãå¿ èŠãšããªãåé¿çã«ã€ããŠã®èª¬æããããŸãã ãã®ãã©ã°ã€ã³ãè©Šãããšãã§ããŸã-httpsïŒ//github.com/jordanwilson230/kubectl-plugins
ãŠãŒã¶ãŒãããŒãã«SSHã§æ¥ç¶ã§ããããã«ããããªãå Žåã¯ã©ããªããŸããïŒ ãŠãŒã¶ãŒã«ããŒããžã®sshã¢ã¯ã»ã¹ãèš±å¯ããããšãããã³ãŠãŒã¶ãŒã«dockerãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããšã¯ãã»ãã¥ãªãã£äžã®ãªã¹ã¯ã«ãªãå¯èœæ§ããããŸãã Dockerã¯ãåå空éãk8sæš©éã«ã€ããŠäœãç¥ããŸããã ãŠãŒã¶ãŒãdocker exec
ãå®è¡ã§ããå Žåã¯ã_any_åå空éã®ãããã«å®è¡ã§ããŸãã
SSHã¯é©åãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸãããç§èŠã
ãŠãŒã¶ãŒãããŒãã«SSHã§æ¥ç¶ã§ããããã«ããããªãå Žåã¯ã©ããªããŸããïŒ ãŠãŒã¶ãŒã«ããŒããžã®sshã¢ã¯ã»ã¹ãèš±å¯ããããšãããã³ãŠãŒã¶ãŒã«dockerãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããšã¯ãã»ãã¥ãªãã£äžã®ãªã¹ã¯ã«ãªãå¯èœæ§ããããŸãã Dockerã¯ãåå空éãk8sæš©éã«ã€ããŠäœãç¥ããŸããã ãŠãŒã¶ãŒã
docker exec
ãå®è¡ã§ããå Žåã¯ã_any_åå空éã®ãããã«å®è¡ã§ããŸããSSHã¯é©åãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸãããç§èŠã
ç§ã¯ãã®æèŠã2çªç®ã«-çŽæ¥ã¢ã¯ã»ã¹ãåŸãããã«åž¯åå€ã¡ã«ããºã ã䜿çšããããšã¯æœåšçãªæ»æé åãå¢ãããŠããŸãã
ãŠãŒã¶ãŒãããŒãã«SSHã§æ¥ç¶ã§ããããã«ããããªãå Žåã¯ã©ããªããŸããïŒ ãŠãŒã¶ãŒã«ããŒããžã®sshã¢ã¯ã»ã¹ãèš±å¯ããããšãããã³ãŠãŒã¶ãŒã«dockerãžã®ã¢ã¯ã»ã¹ãèš±å¯ããããšã¯ãã»ãã¥ãªãã£äžã®ãªã¹ã¯ã«ãªãå¯èœæ§ããããŸãã Dockerã¯ãåå空éãk8sæš©éã«ã€ããŠäœãç¥ããŸããã ãŠãŒã¶ãŒã
docker exec
ãå®è¡ã§ããå Žåã¯ã_any_åå空éã®ãããã«å®è¡ã§ããŸããSSHã¯é©åãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸãããç§èŠã
SSH@gjcarneiroãå¿ èŠãšããªããœãªã¥ãŒã·ã§ã³ããããŸãã ãŸãããŠãŒã¶ãŒã¯ãããŒãïŒGCPã®å ŽåïŒ@bryanhunteslãžã®SSHã¢ã¯ã»ã¹ãèš±å¯ããåã«ããŸããããªãã¯SSHããŒãComputeMetadataã«è¿œå ããå¿ èŠããããŸãã
@liggittãã®ãããã¯ãå§ãŸã£ãŠãã3幎ãçµã¡ãŸããããçµè«ã¯ãããŸããïŒ
ãã®è§£æ±ºçã以åã«èšåãããŠãããã©ããã¯ããããŸããããåé¿çãšããŠè¡ã£ãã®ã¯ããã¹ãŠã®ã³ã³ãããŒã«ãæ£ãããŠãŒã¶ãŒãšããŠãã°ã€ã³ããã¹ã¯ãªãããå«ããããšã§ãã ãã©ã¹motdïŒ
DockerfileïŒ
USER root
RUN echo "su -s /bin/bash www-data" >> /root/.bashrc
# this exit statement here is needed in order to exit from the new shell directly or else you need to type exit twice
RUN echo "exit" >> /root/.bashrc
# /var/www is www-data's home directory
COPY motd.sh /var/www/.bashrc
motd.shïŒ
RED='\033[0;31m'
YELLOW='\033[0;33m'
echo -e "${RED}"
echo "##################################################################"
echo "# You've been automatically logged in as www-data. #"
echo "##################################################################"
echo -e "${YELLOW} "
echo "If you want to login as root instead:"
echo -e "$(if [ "$KUBERNETES_PORT" ]; then echo 'kubectl'; else echo 'docker'; fi) exec -ti $(hostname) -- bash --noprofile -norc"
TEXT_RESET='\033[0m'
echo -e "${TEXT_RESET} "
90æ¥éæäœããªããšãåé¡ã¯å€ããªããŸãã
/remove-lifecycle stale
ã䜿çšããŠãåé¡ãæ°èŠãšããŠããŒã¯ããŸãã
å€ãåé¡ã¯ãããã«30æ¥ééã¢ã¯ãã£ãã«ãªããšè
æããæçµçã«ã¯éããŸãã
ãã®åé¡ãä»ãã解決ã§ããå Žåã¯ã /close
ã䜿çšããŠè§£æ±ºããŠãã ããã
sig-testingãkubernetes / test-infraã fejtaã«ãã£ãŒãããã¯ãéä¿¡ããŸãã
/ lifecycle stale
/ remove-lifecycle stale
[exec-as] kubectlãã©ã°ã€ã³ã䜿çšããŸãïŒ
kubectl krew install exec-as
äžã§è¿°ã¹ãããã«ãããã«ã¯æ¬åœã«KEPãšã»ãã¥ãªãã£ãžã®åœ±é¿ã«ã€ããŠã®è°è«ãå¿ èŠã§ãã å¿ ãããæªãèãã§ã¯ãããŸãããã·ã¹ãã ã«å€§ããªåœ±é¿ãäžããã ãã§ãã³ãŒãã£ã³ã°ãéå§ããåã«èšèšãå¿ èŠã§ãã
ãã®ããã®KEPã®ã¬ãã¥ãŒãšçŸé£Œããåãã§ãæäŒãããŸããã確ãã«ããã€ãã®èœãšãç©Žãããããã°ããæéããããå ŽåããããŸãã
@ miracle2k -
su -m -l u22055
ãè©ŠããŸãããïŒ-m
ã¯ãç°å¢å€æ°ãä¿æããããšã«ãªã£ãŠããŸãã
@ miracle2kãã®(trying to exec as root user)
ãè©ŠããŸãããã No passwd entry for user '0'
ãååŸããŸãã
$ su -m -l 0
No passwd entry for user '0'
ããã«ã¡ã¯ã ãã®åé¡ã解決ããããã«ãç§ã¯ãkpexecãCLIãéçºããŸããã
ãã£ãŒãããã¯ããå¯ããã ããã
ããããå®è¡ããããŒãïŒ
docker exec -u 0 -it \
`kubectl -n NAMESPACE get pod \
-l label=value \
-o jsonpath='{range .items[*].status.containerStatuses[*]}{.containerID}{"\n"}{end}' | cut -d/ -f3` \
sh
@cristichiruç§ãæäœããã»ãšãã©ã®ã¯ã©ã¹ã¿ãŒã§ã¯ãåºç€ãšãªãããŒããžã®çŽæ¥ã®ã·ã§ã«ã¢ã¯ã»ã¹ã¯ãããŸããã ä»ã®äººã«ããããªãããšãå€ãã®ã§ã¯ãªãããšæããŸãã
ãã®ãããªå Žåãããã§æ瀺ãããŠããä»ã®ãªãã·ã§ã³ïŒkubectlãã©ã°ã€ã³ãªã©ïŒãå¯äžã®æ¹æ³ã§ããå¯èœæ§ããããŸã-dockerããŒã¢ã³ã«ãã¢ã¯ã»ã¹ã§ããªããšä»®å®ããŸãã
+1
KEPãã³ãã¬ãŒãã¯ãã¡ãhttps://github.com/kubernetes/enhancements/tree/master/keps/NNNN-kep-template
ç§ã¯ãããæžãã®ã«ã©ãã ãã®äœæ¥ãå¿
èŠããç解ãããšæããŸãã...ãããç§ã¯ãããæžã人ã§ã¯ãããŸããããã³ãã¬ãŒãã¯ãã§ãã¯ãªã¹ãé
ç®1ã§ç§ã倱ããŸãã**Pick a hosting SIG.**
ããã»ã¹ã«ç²ŸéããŠãã人ã¯èª°ã§ã欲ãããã©ãããéå§ããã«ã¯ïŒ ðãã¢ã¯ãã£ããªKubernetesãŠãŒã¶ãŒãšããŠã®ææ¡ããµããŒãããå Žæã欲ããã ãã§ãã
ããã¯ã°ãããŠããããã«èããããããããŸãããããã®åé¡ã«å¯ŸããçŽ5ããŒã¹ã®é©åã«ã³ãŒãå/ã¹ã¯ãªããå/èšè¿°ãããåé¿çãããã®ã§ãç§ãããææ¡ãããæè¡ç解決çãèµ·èããã®ã«é©ããç«å Žã«ãã人ã ãããããšã¯æããã§ãã
Kubernetesãæ°ããOpenStackã«ãªãã PROCESSã®ãããã§åŠ¥åœãªæéæ ã§äœãéæã§ããªãããã«æããŸãã
ããã§ã®@VikParuchuriã®å ã®ãŠãŒã¹ã±ãŒã¹ã¯ãã³ã³ãããŒèªäœãä¿¡é Œã§ããªããŠãŒã¶ãŒãšããŠå®è¡ãããŠããå Žåã§ããã³ã³ãããŒãrootãšããŠãããã°/ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã§ããããã«ããããšã§ãã è¯ããŠãŒã¹ã±ãŒã¹ã§ãã解決ãããšãroot以å€ã®ãŠãŒã¶ãŒãšããŠã³ã³ãããŒãå®è¡ããããã«ãªããŸãã ð
docker exec
ã®KEPãæºåããåã«ã k8sãšãã§ã¡ã©ã«ãããã°ã³ã³ããããã®ãŠãŒã¹ã±ãŒã¹ã«å¯Ÿå¿ããŠããªãããšãç°¡åã«ç¢ºèªããŠãã ããã
docker exec --user
ã¯ããã®ãŠãŒã¹ã±ãŒã¹ã«å¯ŸåŠããå¯äžã®æ¹æ³ã§ããã䜿çšãããŠããDockerã©ã³ã¿ã€ã ã«äŸåããŠããŸãã k8sãcontainerd
ã«ç§»è¡ãããšã dockerd
ãšãã®åéã¯ãªãã·ã§ã³ã§ããããã€ã³ã¹ããŒã«ãããŠããªããããå°æ¥ãèŠæ®ãããªãã·ã§ã³ã§ã¯ãªãå¯èœæ§ããããŸããïŒ
ãã®ãŠãŒã¹ã±ãŒã¹ã«å¯ŸåŠãããã1ã€ã®k8sãã€ãã£ãã®æ¹æ³ã¯ããšãã§ã¡ã©ã«ãããã°ã³ã³ããã§ãã ä¿¡é Œã§ããªããŠãŒã¶ãŒãšããŠå®è¡ãããŠããã³ã³ããããããšããŸãã ãããã°ã³ã³ããã䜿çšãããšãã¿ãŒã²ããã³ã³ãããšåãããã»ã¹ã¹ããŒã¹ã§äžæã³ã³ãããéå§ã§ããŸãããrootïŒãŸãã¯èª°ã§ãïŒãšããŠå®è¡ã§ããŸãã ãã®ã¢ãããŒãã«ã¯ãexecã¢ãããŒãã«æ¯ã¹ãŠããã€ãã®éèŠãªå©ç¹ããããŸããç¹ã«ãå¿
èŠãªãããã°ããŒã«ãšãŠãŒãã£ãªãã£ããããã°ã³ã³ããã®ã€ã¡ãŒãžã«å«ããããšãã§ããŸãã ãããã£ãŠãå®è¡ããå¿
èŠãããå Žåã«åããŠãutilsãeditorsãªã©ã§ã¿ãŒã²ããã³ã³ããã€ã¡ãŒãžãè¥å€§åããã代ããã«ïŒð..ãæ眪ïŒïŒã代ããã«çŽ æµãªå€§ããªã¹ã€ã¹ã¢ãŒããŒãã€ãã®ãããã°ã³ã³ããã€ã¡ãŒãžãäœæããŠãã¢ããªã±ãŒã·ã§ã³ã€ã¡ãŒãžãã¯ãªãŒã³ã«ä¿ã€ããšãã§ããŸãã ã¿ãŒã²ããã«sh
ãããªãå Žåã¯ããããã°ã³ã³ããã§bash
ã䜿çšã§ããŸãã åäžã®ãã€ããªã³ã³ããããã£ã¹ããã¬ã¹ã³ã³ããã®ããã«ãå®è¡ããã·ã§ã«ããŸã£ãããªãã³ã³ããããããã°ããããšãã§ããŸãã
ããšãã°ã busybox
ã䜿çšããŠãã³ã³ãããã«ãŒããšããŠãããã°ããŸãã
kubectl alpha debug -it ephemeral-demo --image=busybox --target=ephemeral-demo
ããã¯ãã³ã³ãããåé¢ãããããã»ã¹ãšããŠæ±ãããããã°ã®ããã«ãã¢ã¿ãããããŠãã·ã§ã«åããããVMã®ããã«ãããšããç¹ã§ãééããªãåªããã¢ãã«ã ãšæããŸãã æ¬ ç¹ã¯ãå€éšããŠã³ããŸãã¯ã空ã®ãããŠã³ããå
±æã§ããªãéããã¿ãŒã²ããã®ãã¡ã€ã«ã·ã¹ãã ãæ€æ»ã§ããªãããšã§ãã ããã»ã¹ã®åå空éãã¿ãŒã²ãããšå
±æããããã /proc/$pid/root
ãä»ããŠã¿ãŒã²ããã³ã³ããã®ãã¡ã€ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã
ãšãã§ã¡ã©ã«ãããã°ã³ã³ããã¯ãã§ã«ããã»ã¹ãããã²ãŒãããå®è£
ãããŠããŸã:-)ã ã1.16ããã³1.18 kubectl
ã«ã¯alpha debug
ã³ãã³ããå«ãŸããŠããããããããã®ã³ã³ããã¯ã¢ã«ãã¡çã§ãã 詳现ã¯ãã¡ãïŒ
åç §ïŒ
æãããã®ããè¿ä¿¡ãããããšã@whereisaaron :)ç§ã¯ãããç©äºãéåžžã«ããŸãæããŠãããšæããŸãã
ç§ã¯ãããæžãã®ã«ã©ãã ãã®ä»äºãå¿ èŠããç解ããã ãããšæããŸãã...ãããç§ã¯ãããæžã人ã§ã¯ãããŸããããã³ãã¬ãŒãã¯ãã§ãã¯ãªã¹ãé ç®1ã§ç§ã倱ããŸãããã¹ãã£ã³ã°SIGãéžãã§ãã ããã ããã»ã¹ã«ç²ŸéããŠãã人ã¯ãã©ãããéå§ãããã§ããïŒ ðãã¢ã¯ãã£ããªKubernetesãŠãŒã¶ãŒãšããŠã®ææ¡ããµããŒãããå Žæã欲ããã ãã§ãã
KEPã¯éåžžã«å°é£ãªå ŽåããããŸãããKEPã®åšãã«å°ãã³ã³ããã¹ããæäŸããããšæããŸãã Kubernetesèªäœã¯éåžžã«å€§ããã§ãã æœåšçãªå€æŽã¯ãè²¢ç®è ããŒã¹ãšãŠãŒã¶ãŒã®äž¡æ¹ã«ãšã£ãŠéåžžã«å€§ããªç颚ååŸãæã£ãŠããŸãã æ°ããæ©èœã¯ç°¡åã«å®è£ ã§ããããã«èŠãããããããŸããããäž¡æ¹ã®ã°ã«ãŒãã«åºã圱é¿ãäžããå¯èœæ§ããããŸãã
ã³ãŒãããŒã¹ã®äžéšã®ç®¡çãSIGã«å§ä»»ããŸãã ãŸããKEPãä»ããŠã1ã€ä»¥äžã®SIGãæ©èœã«ã€ããŠã³ã³ã»ã³ãµã¹ãåŸãããšãã§ããŸãã æ©èœã®æ©èœã«å¿ããŠãAPIã¬ãã¥ãŒãçµãããã¹ã±ãŒã©ããªãã£ã®åé¡ãªã©ãè©äŸ¡ãããããå ŽåããããŸãã
ããã¯ãã¹ãŠãçç£ããããã®ãæåããå¯èœæ§ãæãé«ããSIGãåãã§ããããµããŒãããæ¹æ³ã§éçºãããããšãä¿èšŒããããšã§ãã å ã®äœè ãé¢ããå Žåããããç¶æãã責任ã¯SIGã«ãããŸãã ããšãã°ãæ©èœãå®å®çã«ããã¢ãŒããããŠããéæšå¥šã®ãã©ã°ãç«ãŠãããå Žåãéæšå¥šããªã·ãŒã«åŸã£ãŠåé€ã§ããããã«ãªããŸã§ã«ã¯ãæäœ1幎ããããŸãã
æ©èœã«å¯ŸããååãªéèŠãããå ŽåãéåžžãKEPããã»ã¹ã«ç²ŸéããŠãã誰ããããããå®è¡ãããããå®è¡ããã®ãæ¯æŽããããšãææ¡ããŸãããããã§ããããé§åãã誰ããå¿ èŠã§ãã
ãããã«ãããæ©èœãããŒãžããããšã«é¢é£ããããã»ã¹ãããçç±ã«ã€ããŠãå°ãªããšãå°ãå ãåœãŠãããšãé¡ã£ãŠããŸãã ïŒ+1ïŒãäžæãªç¹ãããããŸãããããæ°è»œã«çŽæ¥ãåãåãããã ããã
æ¬ ç¹ã¯ãå€éšããŠã³ããŸãã¯ã空ã®ãããŠã³ããå ±æã§ããªãéããã¿ãŒã²ããã®ãã¡ã€ã«ã·ã¹ãã ãæ€æ»ã§ããªãããšã§ãã
ç§ã«ãšã£ãŠããã¡ã€ã«ã·ã¹ãã ãã«ãŒããšããŠæ€æ»ãããã¡ã€ã«ã·ã¹ãã ãšã«ãŒããšããŠå¯Ÿè©±ã§ãããŠãŒãã£ãªãã£ãå®è¡ããããšããèŠæ±ãããæ©èœã®ãµããŒããååŸãããæ倧ã®çç±ã§ãã èŠããã«ããã®ææ¡ã¯ç§ã®åé¡ããŸã£ãã解決ããŸããã
æ¬ ç¹ã¯ãã¿ãŒã²ããã®ãã¡ã€ã«ã·ã¹ãã ãæ€æ»ã§ããªãããšã§ãã
æ¿å ¥ããããããã°ã³ã³ããã¯ããã»ã¹åå空éãã¿ãŒã²ããã³ã³ãããšå ±æããããããããã°ã³ã³ããããã¿ãŒã²ããã³ã³ããå ã®ä»»æã®ããã»ã¹ã®ãã¡ã€ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ã§ããŸãã ããã«ã¯ãã³ã³ãããã¡ã€ã«ã·ã¹ãã ãšãããã®ã³ã³ããã«ããŠã³ããããŠãããã¡ã€ã«ã·ã¹ãã ã®äž¡æ¹ãå«ãŸããŸãã
ã³ã³ãããã¡ã€ã«ã·ã¹ãã ã¯ã/ proc / $ pid/rootãªã³ã¯ãä»ããŠãããå ã®ä»ã®ã³ã³ããã«è¡šç€ºãããŸãã
https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/#understanding -process-namespace-sharing
90æ¥éæäœããªããšãåé¡ã¯å€ããªããŸãã
/remove-lifecycle stale
ã䜿çšããŠãåé¡ãæ°èŠãšããŠããŒã¯ããŸãã
å€ãåé¡ã¯ãããã«30æ¥ééã¢ã¯ãã£ãã«ãªããšè
æããæçµçã«ã¯éããŸãã
ãã®åé¡ãä»ãã解決ã§ããå Žåã¯ã /close
ã䜿çšããŠè§£æ±ºããŠãã ããã
sig-testingãkubernetes / test-infraã fejtaã«ãã£ãŒãããã¯ãéä¿¡ããŸãã
/ lifecycle stale
/ remove-lifecycle stale
kubectl alpha debug -it ephemeral-demo --image =busybox --target = ephemeral-demo
error: ephemeral containers are disabled for this cluster
@whereisaaronã»ãšãã©ã®ã¯ã©ãŠããããã€ããŒã¯ããããµããŒãããŠããªãããã§ãããªã³ãã¬ãã¹ã§ã¯ãããŒãã«ç§»åããŠdocker exec
ãã³ã³ãããŒã«å
¥ããããšãã§ããŸãã ç¹°ãè¿ãã«ãªããŸãããæçšæ§ã¯ããªãéãããŠããããã§ãã
ãŸãã /proc/$pid/root
ãä»ããã¢ã¯ã»ã¹ã¯ãç§ãæããã®ã§ã¯ãããŸãããããµã€ããŠã£ã³ããŠããä»ããã«çŽæ¥ã¢ã¯ã»ã¹ããããšæããŸãã ããšãã°ãã«ãŒããã¡ã€ã«ã·ã¹ãã ãæåŸ
ããå Žæã«ãªãå Žåã_continer_ã§apt/apkã®ãããªutilsãå®è¡ããã®ã¯ç°¡åã§ã¯ãããŸããã
åæ§ã®åé¡ããããŸãããå ¬åŒã®ãã«ã ãã£ãŒãïŒjenkinsïŒã«ãã£ãŠãããã€ãããå ¬åŒã®ã€ã¡ãŒãžã«ãããã€ãã®ãã£ã¬ã¯ããªããªã³ã¯ãäœæããroot以å€ã®ãŠãŒã¶ãŒã®ã¢ã¯ã»ã¹èš±å¯ãè¿œå ããå¿ èŠããããŸããã
exec-asãã©ã°ã€ã³ã䜿çšããŠè§£æ±ºããããšãã§ããŸããã
èšç»ãããDockerã®éæšå¥šãšãã®åŸã®åé€ã§ãããã¯ãã€å¯ŸåŠãããŸããïŒ ãšãã§ã¡ã©ã«ã³ã³ããã¯ãŸã ã¢ã«ãã¡çã§ãã DockerãCRIãšããŠäœ¿çšããªãå®å®ãã代æ¿æ段ã¯äœã§ããïŒ
ã¢ã«ãã¡çã§ããããšã«å ããŠããšãã§ã¡ã©ã«ã³ã³ããã¯ãåçŽãªkubectl exec --user
ãããã¯ããã«è€éã«äœ¿çšã§ããŸãã
ããã®ãã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ãã³ã³ãããŒã§ã¹ã¯ãªãããæåã§å®è¡ããããšã§ãã ããšãã°ãNextCloudã®occ
ã¡ã³ããã³ã¹ã¹ã¯ãªããã¯www-dataãšããŠå®è¡ããå¿
èŠããããŸãã ã€ã¡ãŒãžã«ã¯sudo
ãªã©ã¯ãããŸãããããã¥ã¡ã³ãã§ã¯ãDockerç°å¢ã§docker exec -u 33
ã䜿çšããããšããå§ãããŸãã
ããªãã¯å®è¡ããããšã«ãã£ãŠnextcloudã®åé¡ã解決ããããšãã§ããŸã
su -s /bin/bash www-data
ããããããã¯çæ³çã§ã¯ãããŸããã
æãåèã«ãªãã³ã¡ã³ã
è¿œå ã®ãŠãŒã¹ã±ãŒã¹-ããªãã¯ã»ãã¥ãªãã£ãæèããŠããã®ã§ãã³ã³ããå ã§å®è¡ãããŠãããã¹ãŠã®ããã»ã¹ã«ç¹æš©ããããŸããã ããããä»ã¯äºæããäœããæ©èœããŠããããrootãšããŠã¢ã¯ã»ã¹ããŠãããšãã°ãããã°ãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããã©ã€ãã·ã¹ãã ã®äœãåé¡ã«ãªã£ãŠããã®ããææ¡ããããšèããŠããŸãã