kubectl rolling-update
ã¯ãæ°ããã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒã段éçã«å±éããå Žåã«åœ¹ç«ã¡ãŸãã ãã ããæ¢åã®ã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒããããããã管çãããã¹ãŠã®ãããã®ããŒãªã³ã°ãªã¹ã¿ãŒããå®è¡ããå Žåã¯ãæ°ããååãšåãä»æ§ã®RCã«å¯ŸããŠno-opæŽæ°ãå®è¡ããå¿
èŠããããŸãã RCãå€æŽããããRCä»æ§ãæå®ãããããã«ããŒãªã³ã°åèµ·åãå®è¡ã§ãããšäŸ¿å©ã§ãããã®ãããkubectlã«ã¢ã¯ã»ã¹ã§ãã人ã¯èª°ã§ããä»æ§ãããŒã«ã«ã«ããããšãå¿é
ããã«ç°¡åã«åèµ·åãéå§ã§ããåãã§ããããšã確èªã§ããŸã/ææ°ãªã©ãããã¯ãããã€ãã®ç°ãªãæ¹æ³ã§æ©èœããå¯èœæ§ããããŸãã
kubectl rolling-restart
ã¯ãRCåãååŸããRCã«ãã£ãŠå¶åŸ¡ãããŠãããã¹ãŠã®ãããã段éçã«åé€ããRCãããããåäœæã§ããããã«ããŸããkubectl rolling-update
ã«ã¯ãå€ãRCã®ã¿ãæå®ã§ãããã©ã°ãããã1ãŸãã¯2ã®ããããã®ããžãã¯ã«åŸããŸããkubectl rolling-update
ã«ã¯ãå€ãRCã®ã¿ãæå®ã§ãããã©ã°ãä»ããŠãããå€ãRCã«åºã¥ããŠæ°ããRCãèªåçæãããéåžžã®ããŒãªã³ã°æŽæ°ããžãã¯ãå®è¡ãããŸããäžèšã®ãã¹ãŠã®ãªãã·ã§ã³ã«ã¯ãæè¿å°å ¥ãããMaxSurgeããã³MaxUnavailableãªãã·ã§ã³ïŒïŒ11942ãåç §ïŒãšããã¹ãŠã®ããããåæ¢ããã«åèµ·åãè¡ãããããšã確èªããããã®æºåãã§ãã¯ãå¿ èŠã§ãã
@nikhiljindal @ kubernetes / kubectl
cc @ironcladlou @ bgrant0607
ä»æ§ãå€æŽããã«ããããåèµ·åããããã®ãŠãŒã¹ã±ãŒã¹ã¯äœã§ããïŒ
åèµ·åæã«ãããã«é害ãçºçãå§ããå Žåãå€æŽãããŒã«ããã¯ããæ¹æ³ã¯ãªãããšã«æ³šæããŠãã ããã
ãµãŒãã¹ãäœããã®ããã³ç¶æ ãŸãã¯æãŸãããªãç¶æ ã«ãªããšãã¯ãã€ã§ãïŒæ¥ç¶ãæ倧ã«ãªããçŸåšã¹ããŒã«ããŠãããå éšç¶æ ãæªããªã©ïŒã ããã¯éåžžããµãŒãã¹ãæ·±å»ãªèª€åäœãèµ·ãããŠããå Žåã®æåã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°æé ã®1ã€ã§ãã
æåã®ããããåèµ·åæã«å€±æããå Žåãç¶è¡ãåæ¢ãããããããã®éå§ãåè©Šè¡ãç¶ãããšæããŸãã
ãŸããä»æ§ãå€æŽããã«ããŒãªã³ã°ãªã¹ã¿ãŒããããšããããã
éãŸãã
ãã ããã¹ã±ãžã¥ãŒã«ãå€æŽããã«ãããå®è¡ã§ããæ©èœãå¿
èŠã§ãã
ãããã ããã¯ããŒãªã³ã°ã©ãã«ã®å€æŽã§ããå¯èœæ§ããããŸãããæ°ãããã€ãããã¯ãæŸãå¯èœæ§ããããŸã
ããŒã«ã«ãã¡ã€ã«ã®ç¶æ
ãèšå®ãŸãã¯ã¯ãªã¢ããŸãã
åå12:01æ°Žã2015幎9æ2æ¥ã«ã¯ããµã Ghodsã®[email protected]ã¯æžããŸããïŒ
ãµãŒãã¹ãäœããã®ããã³ç¶æ ãŸãã¯æãŸãããªãç¶æ ã«ãªããšãã¯ãã€ã§ãïŒæ倧ã«ãªããŸãïŒ
æ¥ç¶ãåæ¢ããå éšç¶æ ãæªããªã©ïŒã ããã¯éåžžã§ã
ãµãŒãã¹ãæ·±å»ãªå Žåã®æåã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°æé ã®1ã€
äžæ£è¡çºãåèµ·åæã«æåã®ãããã«é害ãçºçããå Žåããããã¯åæ¢ãããšäºæ³ãããŸã
ããããéå§ããããã«ç¶è¡ããããåè©Šè¡ãç¶è¡ããŸããâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/kubernetes/kubernetes/issues/13488#issuecomment -136931790
ã
ã¯ã¬ã€ãã³ã³ãŒã«ãã³| OpenShiftã®ãªãŒããšã³ãžãã¢
@smarterclaytonããã¯äžèšã®ç§ã®ãªãã·ã§ã³2ã®ãããªãã®ã§ããïŒ ãªãã©ãã«ãå€æŽãããã®ã§ããããïŒ
NSã ãŠã§ããžïŒãããã©ã€ããã¹ãããŒãã®ç®çã§ãã
NSã ãªãã©ã³ã¹ïŒïŒ12140ãåç §
ããããµããŒãããå Žåã¯ãïŒ9043ã§ãŸãšããŸããåãã¡ã«ããºã ãå¿ èŠã§ãã
ããã¯ãããããåäœããŠããŠãã§ãã¯ã«å¿çããŠããããããã§ãåèµ·åããå¿ èŠãããç¶æ³ã®å Žåã«åœãŠã¯ãŸããšæããŸãã 1ã€ã®äŸã¯ãã¡ã¢ãªå ãã£ãã·ã¥ãŸãã¯å éšç¶æ ãç ŽæããŠããŠãã¯ãªã¢ããå¿ èŠããããµãŒãã¹ã§ãã
ã¢ããªã±ãŒã·ã§ã³ã®åèµ·åãèŠæ±ããããšã¯ããªãäžè¬çãªãŠãŒã¹ã±ãŒã¹ã®ããã«æããŸãããããããç§ã¯ééã£ãŠããŸãã
ç Žæã¯ãã 1ã€ã®ãããã§ãããããã¯ãã 殺ãããŠRCã«çœ®ãæããããå¯èœæ§ããããŸãã
ãªãã©ã€ã³ã§èšåããããã1ã€ã®ã±ãŒã¹ã¯ãæ§æãåèªã¿åãããããšã§ããã äœããã®çç±ã§åèµ·åãããšã³ã³ãããæ°ããæ§æãããŒããããããæé»çã«è¡ãã®ã¯å±éºã§ãã ããŒãªã³ã°ã¢ããããŒããå®è¡ããŠãæ°ããããŒãžã§ã³ã®æ§æåç §ïŒenv varãªã©ïŒããããã«ããã·ã¥ããããšããå§ãããŸãã ããã¯ãïŒ1353ã®åæ©ã«äŒŒãŠããŸãã
@ bgrant0607ãããããããªããšæ±ºããŸãããïŒ
@gmarekäœããä»ã®ãšããã ãã§ã«å€ãã®ããšãé²è¡äžã§ãã
éèŠãšæããããã®ã«post v1.1
ãã€ã«ã¹ããŒã³ïŒãŸãã¯äœãïŒãèšå®ã§ããŸãããããã«ä¿®æ£ã§ãã人ãäžè¶³ããŠããŸããïŒ
ç§ããã®æ©èœã®ãã¡ã³ã§ããããŒã«ã¢ãŠããããã€ããŒã¢ããããŒãããšã«ã¿ã°ãåãæ¿ããå¿ èŠã¯ãããŸããã
ç§ã¯ãã®æ©èœã®ãã¡ã³ã§ãã ãŠãŒã¹ã±ãŒã¹ïŒãã¹ãŠã®ããããç°¡åã«ã¢ããã°ã¬ãŒãããŠãæ°ããããã·ã¥ãããDockerã€ã¡ãŒãžïŒ imagePullPolicy: Always
ïŒã䜿çšããŸãã ç§ã¯çŸåšãå°ãããããŒãªè§£æ±ºçã䜿çšããŠããŸããç»ååã«:latest
ã¿ã°ãä»ããŠããŸãã¯ä»ããã«ããŒãªã³ã°ã¢ããããŒãããŸãã
å¥ã®ãŠãŒã¹ã±ãŒã¹ïŒã·ãŒã¯ã¬ããã®æŽæ°ã
ãã®æ©èœãæ¬åœã«èŠããã§ãã kubernetesã§ããŒãã¢ããªãå®è¡ããŠãããçŸåšãããããåèµ·åããŠã¢ããªã®ç䌌ãã£ãã·ã¥ãã¯ãªã¢ããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ããããŸãã
ãããç§ãä»ããŠããããšã§ãïŒ
kubectl get pod | grep 'pod-name' | cut -d " " -f1 - | xargs -n1 -P 10 kubectl delete pod
ããã«ãããããã10ãäžåºŠã«åé€ãããã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒã®ã»ããã¢ããã§é©åã«æ©èœããŸãã ãããã®å²ãåœãŠãæ°ãããããã®èµ·åã®å€±æãªã©ã®æžå¿µã«ã¯å¯ŸåŠããŠããŸããã å¿ èŠãªãšãã«ãã°ãã解決ã§ããŸãã
ããŒãªã³ã°ãªã¹ã¿ãŒããã§ããããã«ãªãããã§ãã
äž»ãªçç±ã¯ãConfigMapã䜿çšããŠENVå€æ°ããããã«ãã£ãŒãããæ§æãå€æŽããå Žåããã®ConfigMapã®ã³ã³ã·ã¥ãŒããŒãåèµ·åããå¿
èŠãããããã§ãã
ã¯ããå
éšãå€æŽããã«ããã/ã³ã³ãããæ¬åœã«åèµ·åãããå ŽåããããããããŸã...
èšå®ããã£ãã·ã¥ãå€éšãµãŒãã¹ãžã®åæ¥ç¶ãªã©ããã®æ©èœãéçºãããããšãæ¬åœã«æãã§ããŸãã
å°ããªåé¿çïŒãããã€ã¡ã³ãã䜿çšããŠããŠãã€ã¡ãŒãž/ããããå®éã«å€æŽããã«æ§æãå€æŽãããïŒïŒ
k8sã¯ããããã€ã®å®çŸ©ãå€æŽãããããšã確èªãããããã眮ãæããããã»ã¹ãéå§ããŸã
PSïŒ
誰ããããè¯ã解決çãæã£ãŠãããªããå
±æããŠãã ãã
ããããšã@paunin
@pauninãŸãã«ãããçŸåšå¿ èŠãªå Žåã§ã-ãµãŒãã¹ã«ãšã£ãŠéåžžã«éèŠã§ãããæ°åããæ°æé以å ã«ã³ã³ãããŒã«ããŒã«ã¢ãŠãããå¿ èŠãããConfigMapå€ãå€æŽããå¿ èŠããããŸãã ãã®éã«ãããã€ãè¡ãããªãå Žåãã³ã³ããã¯ãã¹ãŠåæã«å€±æããå°ãªããšãæ°ç§ã®éšåçãªããŠã³ã¿ã€ã ãçºçããŸã
fromïŒ kinda -relatedïŒ9043ïŒïŒ RESTART_
ã¯ç°å¢å€æ°ã§ãããISOã¿ã€ã ã¹ã¿ã³ãã«èšå®ãããŠããŸãã
kubectl patch deployment mydeployment \
-p'{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"$(date -uIseconds)"}]}]}}}}'
ïŒäœããã®çç±ã§ã _
å§ãŸãç°å¢å€æ°ãæ¶ããããã«èŠããæ°å€env value
ã¯ãšã©ãŒãåŒãèµ·ãããããæååã§ããå¿
èŠããããŸãïŒ
@paunin @rcoupæè¿ã¯éåžžã«ãã䌌ãåŠçãè¡ã£ãŠããŸãããæåéããDUMMY_VAR_FOR_NO_OP_DEPLOYMENTããšåŒã°ããenvå€æ°ããããŸãã
ããã§ã®é©åãªãœãªã¥ãŒã·ã§ã³ã«ããããããã€ã¡ã³ããåéããMinReadyCountãªã©ã®ããŒã«ã¢ãŠãã®ãããã€ã¡ã³ããã©ã¡ãŒã¿ãŒã®ã»ãšãã©ãåå©çšã§ãããšåæã«ããã¹ãŠãããã«ããŠã³ã¹ããå¿ èŠãããç·æ¥äºæ ã®äžŠååŠçãå¢ãããªã©ã®ã³ãã³ãã©ã€ã³ãªãŒããŒã©ã€ããå¯èœã«ãªããšæãããŸãã
ããã«ã€ããŠäœãé²å±ã¯ãããŸããïŒ
ãã®è¿œå ã¯ãCLIAPIã®äžå¿ èŠãªè¥å€§åã§ããããã«æããŸãã ããã¯ã@ pauninã«ãã£ãŠææ¡ãããŠããããã«ããããã€ã¡ã³ãç°å¢å€æ°ã®å€
kubectl restart deployment some-api
ãããªå±éã§ãããã確èªããããšæããŸã
Kubernetesã¯ããŸããŸãªçç±ã§ããããåèµ·åã§ããŸãããã¯ã©ã¹ã¿ãŒç®¡çè
ã¯åèµ·åã§ããŸããã
ããªãã«ããŠããåã³ãªã³ã«ããããšããé埳çãªç«å Žã¯ãæäœããã®ã«æãŸããæ¹æ³ã§ã¯ãªããããããªãããšãç解ããŠããŸã...ããããåžæãã人ã
ã«ãç¯å²ã«é Œããã«å±éãåéãããããšãåé¡ãªããšæããŸã次ã®ãããªé£æ¬²ããããããªãã¯ã®
ãããããããããç§ã¯äœãåéããŠããŸãããããã§ãã®ã©ãã«ã®ã¿ã€ããã¹ãä¿®æ£ããã ãã§ããð
ãã®æ©èœã¯ã kubectl apply
ãšçµã¿åãããŠäœ¿çšââãããšäŸ¿å©ã§ãã apply
ã¯ãã¬ããªã±ãŒã·ã§ã³ã³ã³ãããŒã©ãŒãå«ãæ§æãæŽæ°ããŸããããããã¯åèµ·åãããŸããã
ãããã£ãŠããããã®ããããéç·ã®æ¹æ³ã§åèµ·åããæ¹æ³ãå¿ èŠã§ãã
@DmitryRomanenko ReplicationControllersããDeploymentsã«åãæ¿ããã®ã¯ã©ãã§ããïŒ ããã«ãããReplicaSetsïŒReplicationControllerã®åŸç¶ïŒã®æŽæ°ãå®è¡ã§ããããã«ãªããŸãã
@kargakisããã¯äžå¯èœã§ãïŒãããã€ã¡ã³ãã¯ã¬ããªã«ã»ãããšãããã®ã¿ãæŽæ°ããŸãã
kubectl apply
ã䜿çšããŠãConfigMapsãServicesãªã©ãæŽæ°ããŸãã
@DmitryRomanenkoåé¡ããConfigMap / SecretãæŽæ°ããããšãã«ããããåèµ·åããããã®å Žåãèãããã解決çã¯ãConfigMapãšSecretsã®ããŒãžã§ã³ãçšæãããã®ããŒãžã§ã³ããããã€ã¡ã³ãä»æ§ã®äžéšã«ããããšã§ãã ãããã£ãŠã kubectl apply
ãããšãDeploymentã®ä»æ§ãå€æŽãããããããåäœæãããŸãã
ä»ã®ç¶æ³ã§ã¯ãããããåèµ·åããå¿
èŠãããçç±ãããããŸããïŒã€ãŸãããµãŒãã¹/å
¥åãªã©ã®æŽæ°ïŒã
@tyranron ãããããšãïŒ ConfigMap
ãããŒãžã§ã³ç®¡çããããã®æè¯ã®æ¹æ³ã¯äœã§ããïŒ æ°ããå±éçšã«å¥ã®ååã§æ°ããæ§æããããäœæããå¿
èŠããããŸããïŒ
@DmitryRomanenkoããªããå®éã«ã§ããããªãã§ããïŒ ãã ãããã®å Žåãå€ããã®ãåé€ããããã«æ³šæããå¿ èŠããããŸãã äžæ¹ãããŒã«ããã¯ã«ã¯åœ¹ç«ã€å ŽåããããŸãã ãã ããã»ãšãã©ã®å Žåãã©ãã«ã䜿çšããŠããŒãžã§ã³ãæå®ããã ãã§ååã§ãã
ããã§ã®æåã®è§£æ±ºçã¯ã configmap
ãªããžã§ã¯ãã«å¯Ÿããããçš®ã®ãŠã©ããã£ãŒãŸãã¯ããã·ã¥ãµã ãã§ãã«ãŒã§ããå¯èœæ§ããããšç§ã¯ä¿¡ããŠããŸãã é¢é£ãããªããžã§ã¯ã/ãããã®åèµ·åãããªã¬ãŒããå¿
èŠããããŸãïŒãã¹ãŠããã®configmap
ã secret
ïŒã k8s
ã¢ãŒããã¯ãã£ã§ã¢ã¯ã»ã¹ã§ãããã®ãã©ããã¯ããããŸããã...
ãŸããå€æŽæã«åèµ·åãããªã¬ãŒããã«ã¯ã configmap|secret
ãªããžã§ã¯ãããå¶åŸ¡ããæ¹ããããšæããŸãã
@tyranron ã
ãã®ãããkubectlãé©çšãããšãDeploymentã®ä»æ§ãå€æŽãããããããåäœæãããŸãã
説æããŠããããŸããïŒ æŽæ°ããããããã€ã¡ã³ãã§kubectl apply -f new_config.yml
ã䜿çšããã ãã§ããããã®ãããã€ã¡ã³ãã¯ããŒãªã³ã°ãªã¹ã¿ãŒããããŸããïŒ
@DmitryRomanenkoãããæ£ç¢ºã«ã
@DmitryRomanenkoã¯ã Deploymentã
ããã©ã«ãã§ã¯ãåèµ·åæŠç¥ã¯RollingUpdate
ã§ãããå¥ã®æŠç¥ãæ瀺çã«æå®ããããšãã§ããŸãã
90æ¥éæäœããªããšãåé¡ã¯å€ããªããŸãã
/remove-lifecycle stale
ããŠãåé¡ãæ°èŠãšããŠããŒã¯ããŸãã
å€ãåé¡ã¯ãããã«30æ¥éæäœããªããšè
æããæçµçã«ã¯éããŸãã
/lifecycle frozen
ã³ã¡ã³ãã䜿çšããŠãåé¡ãèªåçµäºããªãããã«ããŸãã
ãã®åé¡ãä»ãã解決ã§ããå Žåã¯ã /close
ã
sig-testingãkubernetes / test-infraãããã³/ãŸãã¯@fejta
ãã£ãŒãããã¯ãéä¿¡ããŸãã
/ lifecycle stale
@rcoupã®ãœãªã¥ãŒã·ã§ã³ãžã®å°ããªå€æŽïŒ date
ãã·ã§ã«å
ã§è©äŸ¡ãããŠããããšã確èªããŠãã ããïŒ
kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'
/ remove-lifecyclestale
/ã©ã€ããµã€ã¯ã«åçµ
Kubernetesãããæè»æ§ãäœããšèããããSwarmã¢ãŒãããã°ãã䜿çšããŠããã®ã§ã docker service update --force <service-name>
ããã«åŒ·å¶æŽæ°ïŒä»æ§ãå€æŽããã«ïŒãå®è¡ããã ãã§ããµãŒãã¹ã¿ã¹ã¯ïŒèªã¿åãïŒãããã€ã¡ã³ããããïŒãåéã§ããŸãã
configmapsãšsecretsã«é¢ããŠã¯ãswarmã§ã¯ããããç·šéã§ããŸããã代ããã«ããããããŒããŒã·ã§ã³ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãæ°ããconfigmaps / secretsãäœæããæ°ãããã®ã䜿çšããããã«ãµãŒãã¹ã¹ããã¯ãæŽæ°ããŠãããå€ããã®ãåé€ããŸãã ããã¯éåžžãconfigmaps / secertsãããŒãžã§ã³ç®¡çãããããã䜿çšãããããã€ã¡ã³ããæŽæ°ããããšã«ãããäžèšã§æšå¥šãããŠãããã®ã ãšæããŸãã æ£çŽãªãšããããã®å転ã®æ¯ãèãã¯ãç§ã矀ããæ®ããäž»ãªçç±ã®1ã€ã§ãã ããŒã«ã«ã³ããŒãäœæããæŽæ°ããŠããæ°ãããªãœãŒã¹ãäœæããæåŸã«äŸåãªãœãŒã¹ãæŽæ°ããã®ã¯éåžžã«äžäŸ¿ã§ãã ããã«å ããŠãswarmã®ã·ãŒã¯ã¬ããã¯APIããèªã¿åãããšãã§ããŸãããããããä»»æã®ã³ã³ãããŒå
ã«ããŠã³ããïŒãŸãã¯ãããã䜿çšããã³ã³ãããŒå
ã®execïŒã次ã«ãã¡ã€ã«ãcat
ããŠã³ãããå¿
èŠããããŸãã
é¢é£ããã¡ã¢ãšããŠãç§ã¯ãã°ããã®éopenshiftã䜿çšããŸããããenv / configmap / secret changeã§ããããèªååèµ·åãããšæããŸããïŒ ããããç§ã¯æ£çŽã«ç«ã£ãŠããŸãã
configmap / secretã§ãã§ãã¯ãµã ã䜿çšããŠããã®æ¹æ³ã§åŒ·å¶çã«åèµ·åã§ããããã«ããã¡ã€ã«ã·ã¹ãã ã®å€æŽãç£èŠããã®ã¯ã¢ããªã®è²¬ä»»ã§ããå¿ èŠããããŸã
ãã ããæ§æããŸã£ããå€æŽãããä»»æã®äžæåæ¢ã§ããŒãªã³ã°ãªã¹ã¿ãŒããå®è¡ããå Žåã¯ãåçŽãªãã€ãã©ã€ã³ããã®åœ¹å²ãæãããŸãïŒããã¯çµäºãããããéã§30ç§éã¹ãªãŒãããŸãïŒ
kubectl get po -l release=my-app -o name | cut -d"/" -f2 | while read p;do kubectl delete po $p;sleep 30;done
ctrl + cãæŒããšãäžæãããšããããåéããã®ã¯ç°¡åã§ã¯ãªãããšã«æ³šæããŠãã ãã
@ so0k ã代æ¿ã³ãã³ãïŒ
kubectl get pods|grep somename|awk '{print $1}' | xargs -i sh -c 'kubectl delete pod -o name {} && sleep 4'
2幎åçµã£ãä»ã§ãããããŒã®envå€æ°ãdumyã©ãã«ãConfigMapãšSecretãŠã©ããã£ãŒã®ãµã€ãã«ãŒã䜿çšããŠæ°ããåé¿çãäœæãããŒãã«ã¹ã±ãŒãªã³ã°ããããŒãªã³ã°æŽæ°ã·ã§ã«ã¹ã¯ãªããããŸã£ããã«ããŠãããŒãªã³ã°æŽæ°ãããªã¬ãŒããæ©èœãã·ãã¥ã¬ãŒãããŠããŸãã ããã¯ãŸã ãããªãã¯ãªãã§ã¯ã©ã¹ã¿ãŒç®¡çè ãæ£çŽã«è¡ãããšãèš±å¯ãããã¹ãã§ã¯ãªãããšã§ããïŒ
https://stackoverflow.com/questions/41735829/update-a-deployment-image-in-kubernetes
kubectl scale --replicas=0 deployment application
kubectl scale --replicas=1 deployment application
https://stackoverflow.com/questions/40366192/kubernetes-how-to-make-deployment-to-update-image
ãã1ã€ã®ããªãã¯ã¯ãæåã«å®è¡ããããšã§ãã
kubectl set image deployment/my-deployment mycontainer=myimage:latest
ãã®åŸïŒ
kubectl set image deployment/my-deployment mycontainer=myimage
å®éã«ã¯ããŒãªã³ã°ã¢ããããŒããããªã¬ãŒãããŸãããimagePullPolicyïŒ "Always"ãèšå®ãããŠããããšã確èªããŠãã ããã
ç»ååãå€æŽããå¿ èŠããªããç§ãèŠã€ãããã1ã€ã®ããªãã¯ã¯ãterminationGracePeriodSecondsã®ããã«ãããŒãªã³ã°æŽæ°ãããªã¬ãŒãããã£ãŒã«ãã®å€ãå€æŽããããšã§ãã ããã¯ãkubectl edit Deploymentyour_deploymentãŸãã¯kubectlapply -f your_deployment.yamlã䜿çšãããã次ã®ãããªãããã䜿çšããŠå®è¡ã§ããŸãã
kubectl patch deployment your_deployment -p \ '{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
http://rancher.com/docs/rancher/v1.4/en/cattle/upgrading/
# Force an upgrade even though the docker-compose.yml for the services didn't change
$ rancher-compose up --force-upgrade
@ so0k @KIVagantããããåé€ãããšãè€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŠããå Žåã§ãããŠã³ã¿ã€ã ãçºçããŸãã 誰ããstrategy.rollingUpdate.maxUnavailable = 0
åäžã®ããããå®è¡ãããšãéåžžã®å±éã§ã¯ãæ¢åã®ããããçµäºããåã«ãæåã«æ°ããããããäœæãããŸãã kubectl patch deployment
ããªãã¯ã¯ãã®åäœãããªã¬ãŒããŸãããããããåé€ããŠãããªã¬ãŒãããŸããã ãã®åäœããªã³ããã³ãã§ããªã¬ãŒããããã®ããããã³ã°ã®ãªãæ¹æ³ãæ¬åœã«å¿
èŠã§ãã
ããšãã°ãhub.docker.comããã€ã¡ãŒãžãå®è¡ããå Žåãã»ãã¥ãªãã£æŽæ°ã®ããã«åãã¿ã°ã«ããããé©çšã§ããŸãã æ¬åœã«ãææ°ã®ç»åããã«ãããŠãå€ãç»åã®ããŒãªã³ã°ã¢ããããŒããå®è¡ããããšæããŸãã
ConfigMap / Secretã¢ããããŒãã®ããŒã«ã¢ãŠãã¯ïŒ22368ã§ã
æ°ããç»åã®ããç°¡åãªå±éã¯ïŒ1697ã§ã
ã€ã³ãã¬ãŒã¹ããŒãªã³ã°ã¢ããããŒãã¯ïŒ9043ã§ã
ã€ã¡ãŒãžãã«ãã§åèµ·åããŸãïŒ https ïŒ
ãã³ãã¬ãŒãåãããã¢ãããŒã·ã§ã³ã䜿çšããŠãããã€ã®ããŒã«ã¢ãŠããããªã¬ãŒããããªãã¯ã®ãã«ã ãµããããã¬ãŒã³ããŒã·ã§ã³ïŒ https ïŒ
@ bgrant0607ä»ã®ãã±ããã§ã«ããŒãããŠããªãéèŠãªãŠãŒã¹ã±ãŒã¹ã¯ããã ãšæããŸãïŒ https ïŒ
@ghodssã¯æžããïŒ
ããã¯ãããããåäœããŠããŠãã§ãã¯ã«å¿çããŠããããããã§ãåèµ·åããå¿ èŠãããç¶æ³ã®å Žåã«åœãŠã¯ãŸããšæããŸãã 1ã€ã®äŸã¯ãã¡ã¢ãªå ãã£ãã·ã¥ãŸãã¯å éšç¶æ ãç ŽæããŠããŠãã¯ãªã¢ããå¿ èŠããããµãŒãã¹ã§ããã¢ããªã±ãŒã·ã§ã³ã®åèµ·åãèŠæ±ããããšã¯ããªãäžè¬çãªãŠãŒã¹ã±ãŒã¹ã®ããã«æããŸãããããããç§ã¯ééã£ãŠããŸãã
ããŒãªã³ã°ãªã¹ã¿ãŒãã匷å¶ããŠãæåã®ããªãã¯ãªãã§ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãã¯ãªã¢ããããšæããŸãã
@rcoupãš@pauninã説æããã¢ãããŒãã«åºã¥ããåæ§ã®ã¯ã³ã©ã€ããŒããããŸãããããäžè¬çãªã±ãŒã¹ã§ã¯æ©èœããã¯ãã§ãã JSONåºåã«äŸåãã解æã«jqã䜿çšããŸãã ãããé¢æ°ãšããŠbashrcã«ããŒãããŠããã®ã§ãã©ãããã§ãåŒã³åºãããšãã§ããŸã
kubectl-restart() {
kubectl get deploy $1 -o json | jq \
'del(
.spec.template.spec.containers[0].env[]
| select(.name == "RESTART_"))
| .spec.template.spec.containers[0].env += [{name: "RESTART_", value: now|tostring}]' | kubectl apply -f -
}
ããã«ããã kubectl-restart my-deployment-name
ãšã ãèšãããšãã§ããæåã®ã³ã³ããã®RESTART_
envå€æ°ãçŸåšã®ã¿ã€ã ã¹ã¿ã³ãã«ãæŽæ°ããããŸãã ç§ã¯jqã®å°é家ããé ãé¢ããŠããã®ã§ããã£ãšè¯ãæ¹æ³ããããããããŸããããåºæ¬çã«ã¯å€ãRESTART_
env varãåºåããåé€ãïŒååšããå ŽåïŒãããã«è¿œå ããŸããçŸåšã®æå»ã
ãããããããè¡ãããã®ãã€ãã£ããªæ¹æ³ããªãããšã¯ç§ã«ã¯éåžžã«å¥åŠã«æããŸã...確ãã«ãšã³ãžãã¢ã§ãã£ã±ãã®éšå±ã¯ãããããªãã«ããŠããåã³ãªã³ã«ãããæ©èœãç§ãã¡ãæãã§ãããã®ã§ããããšã«åæããã§ãããã
ããã¯ãã°ãããããã¯ã§ããã倧ããªæ¬ ç¹ããããŸãã 次åkubectl apply -f
ã䜿çšããŠãããã€ãããšããRESTART_xxx env varãããã°ãä»ã«äœãå€æŽãããŠããªããŠãããã®ã³ã³ããŒãã³ãã¯åèµ·åãããŸãã ã€ãŸããæåŸã®å±éãšãã®å±éã®éã«åèµ·åããããšãããå Žåã¯ã次ã®å±éã§èª€ã£ãåèµ·åãçºçããŸãã çæ³çã§ã¯ãããŸãã...
ãã®ãããããŒãªã³ã°ãªã¹ã¿ãŒãæ©èœã¯ãäžã«æ§ç¯ããã®ã§ã¯ãªããDeploymentã³ã³ãããŒã©ãŒã«çµã¿èŸŒãå¿ èŠããããŸãã
äžèšã®ã³ã¡ã³ãã§åŒçšãããŠããã terminationGracePeriodSeconds
ãããå±éãæŠç¥@whereisaaronãå®çŸããããã«bashé¢æ°ãäœæããŸããïŒãœãŒã¹ïŒhttpsïŒ
# $1 is a valid namespace
function refresh-all-pods() {
echo
DEPLOYMENT_LIST=$(kubectl -n $1 get deployment -o json|jq -r .items[].metadata.name)
echo "Refreshing pods in all Deployments"
for deployment_name in $DEPLOYMENT_LIST ; do
TERMINATION_GRACE_PERIOD_SECONDS=$(kubectl -n $1 get deployment "$deployment_name" -o json|jq .spec.template.spec.terminationGracePeriodSeconds)
if [ "$TERMINATION_GRACE_PERIOD_SECONDS" -eq 30 ]; then
TERMINATION_GRACE_PERIOD_SECONDS='31'
else
TERMINATION_GRACE_PERIOD_SECONDS='30'
fi
patch_string="{\"spec\":{\"template\":{\"spec\":{\"terminationGracePeriodSeconds\":$TERMINATION_GRACE_PERIOD_SECONDS}}}}"
kubectl -n $1 patch deployment $deployment_name -p $patch_string
done
echo
}
ããã®ãã ããã ãããå¿ èŠã§ãªããã°ãã£ãšè¯ãã ãããšããä»ã®äººã®ã³ã¡ã³ãããšã³ãŒãââãŸãã
ããå ·äœçã«ã¯kubeé¢é£ã®æ£åœåãšããŠãåèµ·åã«ããinit-containerã®åå®è¡ãå¯èœã«ãªããŸããããã¯ãããŒã®ããŒã«ãæ§æã®æŽæ°ããŸãã¯initã³ã³ãããŒã®äœ¿çšã«äœ¿çšã§ããŸãã
@ kubernetes / sig-apps-feature-requests @ kow3ns @janetkuo
@gjcarneiroé©çšããæ§æã«RESTART_xxxenv varããããŸãããïŒ ããã§ãªãå Žåã¯ãã©ã€ãç¶æ ã§äœåãªenvå€æ°ãç¡èŠããããã«é©çšããããšãæåŸ ããŸãã
cc @apelisse
@gjcarneiroããã @ mattdodgeã¹ã¯ãªããã®åé¡ã¯ã
ãã®æ©èœã欲ããã§ãã ããã¯éåžžã«åºæ¬çã§å¿ èŠãªããã§ãã
ããã§ãïŒ22368ã§ãé²å±ã¯ãããŸãããle sigh :-(
ããŠã³ããããConfigMapãæŽæ°ãããåŸïŒååã¯åãã§ãïŒãDaemonSetãåèµ·åããããã®è¿ éã§æ±ã解決çã誰ããæšå¥šã§ããŸããïŒ
@alcohol ãããã確èªããŠãã ããhttps://github.com/kubernetes/kubernetes/issues/13488#issuecomment -356892053
ãã³ããããããšã:-)
Openshiftã«ã¯ãã€ã¡ãŒãžã®å€æŽãWebhookããŸãã¯èšå®ã®å€æŽæã«ããŒã«ã¢ãŠããããªã¬ãŒãããããã€ã¡ã³ãããªã¬ãŒã®æŠå¿µããããŸãã Kubernetesã«ãããšéåžžã«è¯ãæ©èœã«ãªããŸãã ãã¡ãããæåã§ã®å±éãåæ§ã§ãã
ããã«ãDockerãªããžããªã«ã¯å±¥æŽããããããããŒã«ããã¯ãæ©èœããªãã£ãçç±ã¯ãããŸããã .spec.template
ããçæããããããã¯ãã³ã³ãããŒã®ã€ã¡ãŒãžããã«ãããšãã«image-tag:@digest
圢åŒã䜿çšã§ããŸãã ããŒã«ããã¯ã¯ãåã®ããŒã«ã¢ãŠãã®ãã€ãžã§ã¹ãIDã䜿çšããŸãã
ç§ãæ£ããç解ããŠãããã©ããããããªãã ããã誰ããå©ããå Žåã«åããŠã
ããã>ãã³ãã¬ãŒã>ã¡ã¿ããŒã¿ã®äžã®ã©ãã«ã®å€ãæŽæ°ãããšã kubectl apply -f file.yaml
åŸã«ããŒãªã³ã°æŽæ°ãè¡ãããããã§ã
ãããã£ãŠããã€ã§ãããŒãžã§ã³ã®ã©ãã«ãä»ããããšãã§ããããŒãªã³ã°ã¢ããããŒããå¿ èŠãªãšãã¯ãã€ã§ããããŒãžã§ã³ãå€æŽããŠãã¡ã€ã«ãé©çšã§ããŸãã
確ãã«ãæ¬ ç¹ã¯ã次ã«ãããã€ãå®è¡ãããšãã«ã kubectl apply -f some.yaml
ãå®è¡ããããšã§ãã éåžžã some.yaml
äœãå€æŽãããªãå Žåãäœãåèµ·åãããŸãããããã¯ãKubernetesã®æãåªããç¹ã®1ã€ã§ãã
ãã ããã©ãã«ãå€æŽããŠãããã€ã¡ã³ããåéããåŸã«äœãèµ·ãããæ³åããŠã¿ãŠãã ããã 次ã®éåžžã®ãœãããŠã§ã¢ãããã€ã¡ã³ãã§ã¯ãéåžžã©ããkubectl apply -f some.yaml
ãå®è¡ããŸãããyamlãã¡ã€ã«ã«åãã©ãã«ãå«ãŸããŠããªãããããããã€ã¡ã³ããäžå¿
èŠã«åèµ·åãããŸãã
@gjcarneiroå€æŽãå ãããšãã«apply
å€æŽããªããšã kubectl.kubernetes.io/last-applied-configuration
ã¢ãããŒã·ã§ã³ã¯æŽæ°ãããªãããã次ã®apply
ã«ãã£ãŠå床åèµ·åããããšã¯ãããŸããã
ç§ã¯kubectlã«ããŒãªã³ã°ãªã¹ã¿ãŒãã³ãã³ããè¿œå ããããšã«åŒ·ãè³æã§ããããããŸã§ã®éãç§ã¯ä»¥äžã䜿çšããŠããŸãïŒäžèšã®ãœãªã¥ãŒã·ã§ã³ã«åºã¥ãïŒïŒ
kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"RESTART_","value":"'$(date +%s)'"}]}]}}}}'
ããããã©ã¡ãŒã¿åããŠã.bashrcã®é¢æ°ãšããŠè¿œå ãããšãé©åãªæ«å®ãœãªã¥ãŒã·ã§ã³ã«ãªããŸãã
ããããã£ããããç¥ããªãã£ããããããšãïŒ
bashãšã€ãªã¢ã¹ã¯å¿ èŠãããŸãããç§ã®äŒç€Ÿã§ã¯ãPython + aiohttpã䜿çšããŠKubernetesã管çããããã®ç¬èªã®Webã€ã³ã¿ãŒãã§ã€ã¹ãäœæãããã§ã«ãããã䜿çšããŠããŸãã ç§ã¯ããããªãŒãã³ãœãŒã·ã³ã°ããããšãèããŸããããã æ æ°ã§ãã...
人ã ã¯ãã®ã¹ã¬ããã§åãåé¿çãç¹°ãè¿ããŠããããã§ã-ããã«æçš¿ããåã«ã¹ã¬ããå šäœãèªãã§ãã ãã
@joelittlejohnãã¯ããå®è¡ãããšããããã®åèµ·åãDIDã§ããªã¬ãŒãããŸãããããã¹ãŠåæã«åèµ·åããŸããã ããã§ããŒãªã³ã°ãªããŒããããªã¬ãŒããããšæããŸãããã
@Macmeeãããã€ã¡ã³ãã®æ§æã«ãã£ãŠç°ãªããŸãã äžèšã®ã³ãã³ãã¯ããããã€ã¡ã³ããå€æŽããã ãã§ãã 次ã«ãå±éã§å®çŸ©ãããããŒã«ã¢ãŠãstrategy
ã«åŸã£ãŠãããããæŽæ°ãããŸãã ããã¯ããããã€ã¡ã³ãã«å¯Ÿããä»ã®å€æŽãšãŸã£ããåãã§ãã
ããããã¹ãŠã®ããããåæã«çœ®ãæããå¯äžã®æ¹æ³ã¯ã .spec.strategy.rollingUpdate.maxUnavailable
èš±å¯ãããŠããå Žåã§ãã
ãã®æ©èœãå¿ èŠã§ãã ç§ãã¡ã®åŽã§ã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ãspring-bootã¢ããªã«scmã§ããã¯ã¢ãããããspring-cloud-config-serverã䜿çšããããšã§ãã æ§æããããã£ãå€æŽããå Žåãæ°ããæ§æå€æŽããã§ããã§ããããã«ããã«ã¯ãspring-bootã¢ããªãåèµ·åããå¿ èŠããããããåãããã€ãè¡ããã«ãã®çš®ã®æ£åžžãªåèµ·åããªã¬ãŒãå¿ èŠã§ãã
@japzio Helmãææ¡ããŠããããã«ãã¢ãããŒã·ã§ã³å ã®configmapã®ãã§ãã¯ãµã ã¯ããã®å ŽåãåŠçããããã®è¯ãæ¹æ³ã§ãã
ããã«é¢ããæŽæ°ã¯ãããŸãããïŒ ãã®æ©èœãæ€èšããŠããŸãã @ bgrant0607 @nikhiljindal
@ bholagabbar-mtããªãã®ãŠãŒã¹ã±ãŒã¹ã¯äœã§ããïŒ
cc @ kow3ns @janetkuo
@ bgrant0607 @ kow3nsåœç€Ÿã®ã·ã¹ãã ã®ããã®ãŠãŒã¹ã±ãŒã¹@janetkuoã¯å€çš®å€æ§ã§ãã
ç§å¯ã®æŽæ°-ç§ã®ããã«ãkubernetesãä»ããŠç¬èªã®æœè±¡åãæ§ç¯ããŠããäŒæ¥ãããããããããšããåç¥ã ãšæããŸãã kubernetesäžã§èª¿æŽãããç¬èªã®ã³ã³ãã管çã·ã¹ãã ããããŸãã ãããã£ãŠãèµåãã®ç§å¯ã®ææ¡ã³ã¡ã³ããªã©ã¯é©çšãããŸããã éçºã¯ã©ã¹ã¿ãŒã®ConfigMapããã·ãŒã¯ã¬ãããåããŒãããã«ã¯ããããã匷å¶çã«åŒ·å¶çµäºããå¿ èŠãããããã®çµæãæ°ç§ã®ããŠã³ã¿ã€ã ãçºçããŸãã ããã¯åœãŠã¯ãŸããªãã¯ãã§ãã ããã¯ãããŒãªã³ã°ã¢ããããŒãã®å®éã®ãŠãŒã¹ã±ãŒã¹ã§ãã
ããã¯å°ãè€éã§ããã誰ãã瀺åããããã«ãå šäœçãªç¯å²ã¯ç°åžžãªåäœãä¿®æ£ããããšã§ãã Playãã¬ãŒã ã¯ãŒã¯ã§å®è¡ãããŠãã4ã5åã®éãJavaã¢ããªããããŸãã Javaãããã®ã¡ã¢ãªæ¶è²»éãçŽç·çã«å¢å ããã¡ã¢ãªå¶éã«éãããšããããåèµ·åãããšããç¶æ³ãçºçããŠããŸãã ããã¯ããšã®ææžåãããJavaã®åé¡ã§ãstackoverflowã®åé¡ãšKubernetesåé¡ãããã«é¢é£ããŸãã 3ã4æé以å ã«ãã¹ãŠã®ããããããŒãªã³ã°åèµ·åãããšãã¡ã¢ãªæ¶è²»éããªã»ãããããã¢ããªãã¹ãã€ã¯ãªãã§ã¹ã ãŒãºã«æ©èœã§ããããã«ãªããŸãã
ããŸãããã°ãããã¯ååã«èª¬åŸåãããããã®æ©èœã¯éçºã®ããã«èª°ããå©çšããããšãã§ããŸããïŒ
@ bholagabbar-mtã¯ç°å¢å€æ°ãå€æŽããã ãã§ãããŒãªã³ã°ãããã€ãããªã¬ãŒãããŸãã
kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"mycontainer","env":[{"name":"LAST_MANUAL_RESTART","value":"'$(date +%s)'"}]}]}}}}'
@montanaflynnããã¯å®ç§ã§ãã ãã®å€æŽãä»æ¥ã®ã·ã¹ãã èªäœã«çµ±åããŸããããæ£åžžã«åäœããŸãã ãã³ããããšãïŒ
cc @huzhengchuan
ããã®å¥ã®ãŠãŒã¹ã±ãŒã¹ïŒcontainerdã®ã»ãã¥ãªãã£åé¡ã®ããããã¹ãŠã®ããããåèµ·åããããšæããŸãã https://seclists.org/oss-sec/2019/q1/119ã¯ã©ã¹ã¿ãŒãå®å šã«ããŠã³ããããããŒãªã³ã°ãªã¹ã¿ãŒããå®è¡ããŸãã åèµ·åã³ãã³ãããããšã倧ããªéããçããŸãã
æŽæ°ãåé¿çïŒ
kubectl set env --all deployment --env="LAST_MANUAL_RESTART=$(date +%s)" --namespace=...
kubectl set env --all daemonset --env="LAST_MANUAL_RESTART=$(date +%s)" --namespace=...
@realfreshããªãããã¹ããã©ã¯ãã£ã¹ã§ãã ç§å Žäž»ã«annotation:{creatTime: 12312312}
ãè¿œå ããŠãã ããïŒ
kubectl set env deployment mydeployment --env="LAST_RESTART=$(date)" --namespace ...
1ã€ã®å±éã§æ©èœããæå°éã®ã³ãã³ãã®ããã§ãã ããã¯ãåœä»€åæ§æã®äœ¿çšäŸã§ãã
cc @monopole @apelisse
ã2ã 3幎åçµã£ãä»ã§ãããããŒã®envå€æ°ããããŒã®ã©ãã«ããããŒã®ã¢ãããŒã·ã§ã³ãConfigMapãšSecretãŠã©ããã£ãŒã®ãµã€ãã«ãŒããŒããžã®ã¹ã±ãŒãªã³ã°ãèœåãã·ãã¥ã¬ãŒãããããã®ããŒãªã³ã°æŽæ°ã·ã§ã«ã¹ã¯ãªãããªã©ãæ°ããåé¿çã
ããŒãªã³ã°ã¢ããããŒãã¯ãæããã«ãŠãŒã¹ã±ãŒã¹ããªããã®ã«å¯ŸããŠã¯ãŸã ããªã人æ°ã®ããã¢ã¯ãã£ããã£ã§ãð
é·æçãªåé¡ïŒèªå·±ã¡ã¢ïŒ
lastRestartedAt = TIMESTAMPã¢ãããŒã·ã§ã³ãè¿œå ãããªã©ã®å®£èšåã¢ãããŒãã¯ãç§ã«ã¯ããã¯ã®ããã«ã¯æããŸããã
ããã¯ããã¯ã§ã¯ãããŸãããç°¡åãªã³ãã³ãã©ã€ã³ãå¿ èŠã§ãã
誰ããããããéä¿¡ããkrewãã©ã°ã€ã³ãäœæããå¯èœæ§ããããŸãã kubectl restart-deployment <deployment_name>
ïŒ
kubectl rollout restart
ã¯ããããã€ã¡ã³ã/ããŒã¢ã³ã»ãã/ã¹ããŒããã«ã»ããã«ããããé©çšããŠãæ°ãããããŒã«ã¢ãŠãããããªã¬ãŒããŸããïŒ
ããã¯@ kow3nsã®ã¢ãããŒãïŒ3ïŒãškubectl rollout
ã³ãã³ãã§éå§ããããŒã«ã¢ãŠããç£èŠ/äžæåæ¢/åéã§ãããããããçšåºŠæå³ããããŸãã
@whereisaaronãã®ããããéä¿¡ã§ãããã©ããã確èªããŸãïŒãããã¯æå³ãããŠããŸããïŒ
æ°ããã·ãŒã¯ã¬ãããšæ§æããããå±éããå Žåã§ããç§ã®æšå¥šäºé
ã¯ïŒ22368ã§ããæ°ããã·ãŒã¯ã¬ãããäœæããŸãã ããã¯ãããŒã«ã¢ãŠãã®å¶åŸ¡ãšããŒã«ããã¯ã®äž¡æ¹ã®æ段ãæäŸããŸãã å€ããªããžã§ã¯ãã®GCãçµäºããå¿
èŠããããŸãã
https://github.com/kubernetes/community/pull/1163
https://github.com/kubernetes/community/pull/2287
ãã ããæ¢åã®APIã䜿çšããŠããŒãªã³ã°ãªã¹ã¿ãŒããå®è¡ããããã®æšå¥šãããæ¹æ³ãææžåããã³/ãŸãã¯ãµããŒãïŒkustomizeãkubectlããŸãã¯kubectlãã©ã°ã€ã³ïŒããããšã¯åççã§ãã
cc @monopole
æ°ããç»åã«ã€ããŠã¯ãCI / CDãŸãã¯ã¿ã°ã解決ããŠãã€ãžã§ã¹ãããã³ã³ãããŒã©ãŒïŒïŒ1697ã
äžå¹žãªãããã®ç§»åã¯ãdeschedulerïŒhttps://github.com/kubernetes-incubator/deschedulerïŒãªã©ã«ãã£ãŠå®è¡ãããããšãç®çãšããŠãããã³ã³ãããŒã®ã¹ããŒã¿ã¹ãã³ã¢ã¡ããªãã¯ãããã«ã¯ã«ã¹ã¿ã ã¡ããªãã¯ãæ¶è²»ããå¯èœæ§ããããŸãã
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/rescheduler.md
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/rescheduling.md
ãŸããã·ãŒã¯ã¬ãããšconfigmapã®åŠçæ¹æ³ã«é¢ããå ¬åŒããã¥ã¡ã³ãïŒ https ïŒ//kubectl.docs.kubernetes.io/pages/app_management/secrets_and_configmaps.html
ããŒãªã³ã°ãªã¹ã¿ãŒãã¯éåžžã«å¿ èŠã§ãã 1ã€ã®äŸã¯ãAWSã®SSMãããã¹ãŠã®ã·ãŒã¯ã¬ãããååŸããããšã§ãã SSMããã·ãŒã¯ã¬ãããå€æŽããå Žåã¯ãããããèµ·åæã«ææ°ã®ãã®ãååŸããããã«ãããŒãªã³ã°ãªã¹ã¿ãŒããå®è¡ããŸãã ãŸããå®éã®ä¿®æ£ãæ¬çªç°å¢ã«å°éãããŸã§ãããŒãªã³ã°åèµ·åãå¿ èŠãªã¢ããªã±ãŒã·ã§ã³ã®åé¡ãçºçããå ŽåããããŸãã
OKã kubectl rollout restart
ãããŒãžãããŸããïŒ
ã»ãŒ4幎åŸã«èããŠããããã§ããããããšãïŒ
ããŒãžãããPRã¯ãããã€ã¡ã³ãã®ã¿ããµããŒããããšæããŸãããããã¯æ£ããã§ããïŒ
ãã®åé¡ã®äžéšã®äººã ã¯ãããŒã¢ã³ã»ãããšã¹ããŒããã«ã»ãããåèµ·åããå¿ èŠããããšè¡šæããŠããŸãã
@apelisseã¯ãSDKãŸãã¯åã«kubectlãä»ããŠãããè¡ãæ¹æ³ããããŸããïŒ
@ e-nikolov SDKãšã¯äœã§ããïŒ
Goããã°ã©ã ããkubernetesãšéä¿¡ããããã«äœ¿çšã§ããGoã¯ã©ã€ã¢ã³ããæå³ããŸããã
ããããkubectlã«å®è£ ãããŠããïŒéåžžã«åçŽãªïŒããžãã¯ãåå®è£ ããå¿ èŠããããŸãã
OKãkubectlããŒã«ã¢ãŠãã®åèµ·åãããŒãžãããŸããïŒ
ã©ã®kubectl
ããŒãžã§ã³ã«ããããããŸããïŒ
ã©ã®kubectlããŒãžã§ã³ã«ããããããŸããïŒ
Kubernetes 1.15
ãé«éããªãªãŒã¹ãã£ãã«äžã®GKEã¯ã©ã¹ã¿ãŒãKubernetes1.16ã«ã¢ããã°ã¬ãŒãããã kubectl rollout restart
ãæ©èœããªããªããŸããã
kubectlããŒã«ã¢ãŠãåèµ·åãããã€ã¡ã³ãmyapp
ãšã©ãŒïŒäžæãªã³ãã³ããrestartdeploymentmyappã
@nikhiljindalã¯ãä»æ§ãå€æŽããã«ãããã€ã¡ã³ããæŽæ°ããããã®ãŠãŒã¹ã±ãŒã¹ã«ã€ããŠå°ãåã«è³ªåããŸããã æé©ã§ã¯ãªãæ¹æ³ã§è¡ã£ãŠããå¯èœæ§ããããŸãããããã§ã¯ãäºåã«ãã¬ãŒãã³ã°ãããMLã¢ãã«ãGoogle CloudStorageããã¡ã¢ãªã«èªã¿èŸŒãŸããŸãã ã¢ãã«ãã¡ã€ã«ãGCSã§æŽæ°ãããããGCSããã¢ãã«ããã«ããK8Sãããã€ã¡ã³ããããŒã«ã¢ãŠãããŠåèµ·åããŸãã
以åã®ã¢ãã«ãã¡ã€ã«ã§ãããã€ãç°¡åã«ããŒã«ããã¯ã§ããªãããšãæè¬ããŸãããããã¯ãã¢ãã«ãã¢ããªã«ã§ããã ãè¿ã¥ããŠãããã¯ãŒã¯åŒã³åºããåé¿ããããã«æ¡çšãããã¬ãŒããªãã§ãïŒäžéšã®äººã瀺åããŠããããã«ïŒã
ãã@dimileeh
çŸåšäœ¿çšããŠããkubectlã®ããŒãžã§ã³ãç¥ã£ãŠããŸããïŒ ä»¥åã«äœ¿çšããããŒãžã§ã³ã¯äœã§ããïŒ ãªã°ã¬ãã·ã§ã³ããã£ããã©ããç¥ãããã®ã§ãããåæã«æ©èœãå®å šã«æ¶ããŠããŸã£ããé©ããŸãã
GCSã®ããšã«é¢ããŠã¯ããŠãŒã¹ã±ãŒã¹ã«ã€ããŠã»ãšãã©ç¥ããªãã®ã§ãæå³ããªãå Žåã¯ç³ãèš³ãããŸãããgcsã¢ãã«ã¯ãå€æŽããããã³ã«ç°ãªãååïŒããããããã·ã¥ã®æ¥å°ŸèŸïŒãååŸããããšããå§ãããŸããååã¯ãããã€ã¡ã³ãã«å«ãŸããŸãã æ°ãããã¡ã€ã«ã䜿çšããããã«ãããã€ã¡ã³ããæŽæ°ãããšãããŒã«ã¢ãŠããèªåçã«ããªã¬ãŒãããŸãã ããã«ããã以åã®ãããã€ã¡ã³ã/ã¢ãã«ã«ããŒã«ããã¯ããããã¢ãã«ã«çºçããå€æŽãããããç解ãããããããšãã§ããŸãã
ããã«ã¡ã¯@apelisse ããåçããããšãããããŸãïŒ
Google Cloud Terminalããkubectl version
ãå®è¡ãããšã次ã®ããã«ãªããŸãã
Client Version: version.Info{Major:"1", Minor:"13+", GitVersion:"v1.13.11-dispatcher", GitCommit:"2e298c7e992f83f47af60cf4830b11c7370f6668", GitTreeState:"clean", BuildDate:"2019-09-19T22:20:12Z", GoVersion:"go1.11.13", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.0-gke.20", GitCommit:"d324c1db214acfc1ff3d543767f33feab3f4dcaa", GitTreeState:"clean", BuildDate:"2019-11-26T20:51:21Z", GoVersion:"go1.12.11b4", Compiler:"gc", Platform:"linux/amd64"}
gcloud components update
ãä»ããŠkubectlãã¢ããã°ã¬ãŒãããããšãããšããã§ã«ãã¹ãŠã®è£œåã®ææ°ããŒãžã§ã³ã䜿çšããŠãããšè¡šç€ºãããŸããã ãããã£ãŠãK8Sã¯ã©ã¹ã¿ãŒã1.15ãã1.16ã«ã¢ããã°ã¬ãŒããããŠããéãç§ã®kubectlããŒãžã§ã³ã¯åããŸãŸã ã£ããšæããŸãã
Kubenetesã®ããã¥ã¡ã³ã1.17ã1.16ãããã³1.15ã«ã¯ã kubectl rollout restart
æ©èœã«ã€ããŠã¯äœããããŸããã ããã§ãããªãã®è²Žéãªè²¢ç®ã1.16ããæ¶ããã®ã§ã¯ãªãããšæããŸããïŒ
ã¢ãã«ã®ããŒãžã§ã³ç®¡çã«ã€ããŠãææ¡ããã ãããããšãããããŸããããã¯çã«ããªã£ãŠããŸãã ããã«ã€ããŠèããŸããããæ¯æ¥ã¢ãã«ãåãã¬ãŒãã³ã°ããŠããã®ã§ãããŸãã«ãå€ãã®ã¢ãã«ãèç©ãå§ãããšæããŸããïŒãããŠãããã¯ããªãéãã§ãïŒã ãã¡ãããã¹ã¯ãªããã䜿çšããŠãã°ããããŠããå€ãããŒãžã§ã³ãã¯ãªãŒã³ã¢ããããããšãã§ããŸããããããŸã§ã®ãšãããã¢ãã«ã®ããŒãžã§ã³ç®¡çãæ°ã«ããã kubectl rollout restart
äŸåããŠåçŽã«ããããšã«ããŸãã:)
ç§ã¯ããã§ããã¥ã¡ã³ããèŠãããšãã§ããŸãïŒ
https://v1-16.docs.kubernetes.io/docs/reference/generated/kubectl/kubectl-commands# -em-restart-em-
ãããããããšããç§ã¯ãããèŠãŠããŸããïŒ
https://v1-16.docs.kubernetes.io/docs/reference/kubectl/cheatsheet/
ãã®ãªã³ã¯ãããããšãããããŸãããç§ã¯ãããæŽæ°ãããããšã確èªããŸãïŒ
12:40ããããªLihhatsovã®æšã2019幎12æ19æ¥ã«ã¯[email protected]
æžããŸããïŒ
ãããããããšããç§ã¯ãããèŠãŠããŸããïŒ
https://v1-16.docs.kubernetes.io/docs/reference/kubectl/cheatsheet/â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/kubernetes/kubernetes/issues/13488?email_source=notifications&email_token=AAOXDLCDSTPYK6EGBQWSRADQZPL5BA5CNFSM4BOYZ5Z2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKT
ãŸãã¯è³Œèªã解é€ãã
https://github.com/notifications/unsubscribe-auth/AAOXDLHWCU4T6NCSHOYZIELQZPL5BANCNFSM4BOYZ5ZQ
ã
@dimileeh PTAL https://github.com/kubernetes/website/pull/18224 ïŒãããããŒãžãããããé¢é£ãããã©ã³ããéžæããŸãïŒã
@dimileehç§ã¯ããªãã®kubectlããŒãžã§ã³ã®äœãåé¡ãªã®ãç解ãããšæããŸããç§ãã¡ã¯ããã«åãçµãã§ãããŸãã
ã¯ããconfigmapãæŽæ°ããåŸãã³ãŒããå€æŽããã«ããããåèµ·åãããŠãŒã¹ã±ãŒã¹ããããŸãã ããã¯ããµãŒãã¹ãåãããã€ããã«MLã¢ãã«ãæŽæ°ããããã§ãã
å®è¡ã§ããææ°ããŒãžã§ã³ã®@anuragtr
kubectl rollout restart deploy NAME
ç§ã¯ãã®ããã«ã«ã¹ã¿ã ã³ãã³ãã䜿çšããŠããŸãã[1]ããããæšæºã®kubectlã«å«ãŸããŠããããšãããããæããŸãïŒ ããããšã
å®è¡ã§ããææ°ããŒãžã§ã³ã®@anuragtr
kubectl rollout restart deploy NAME
@countrogue
æãåèã«ãªãã³ã¡ã³ã
OKã
kubectl rollout restart
ãããŒãžãããŸããïŒ