Docker 데몬 재 시작하는 경우 시스템에 영향?

작성자 박형춘 수정일 2022-09-20 12:16

들어가며

  • 정기적인 시스템 재 구동 또는 에러 대응을 위해 docker 데몬을 재 구동 해야 하는 경우가 있습니다.
  • 다음은 docker 데몬 재 시작 할 때에 시스템 영향도에 대한 내용입니다.



내용

  • docker 데몬을 재 구동 하는 것은 docker 데몬에 의해 관리되는 컨테이너들이 재 시작 됨을 의미합니다.

  • docker 역시 server-client 구조이므로 docker 명령어를 사용 할 수 없습니다.
docker 명령 프로세스


  • docker 위에 k8s가 동작하고 있다면 해당 클러스터를 구성하는 파드들도 결국 컨테이너의 모임이기 때문에
    docker가 재 시작 할 때에 해당 노드의 컨테이너(파드)가 모두 재 시작 되게 됩니다.

  • 즉 마스터 노드에서 docker 데몬이 재 시작 되면  kube-apiserver 파드가 정상 상태로 구동되기 까지 kubectl 명령을 사용하지 못합니다.

  • 또한 워커노드에서 docker 데몬이 재 시작 되면 사용중인 분석엔진, 모델서비스 파드가 정상 상태가 되기 까지 서비스가 불가능 상태가 됩니다.

  • 쿠버네티스 운영 현황 예시
    - 현재 default , ingress-nginx , kube-system 네임스페이스에 등록된 파드들이 운영중인 모습을 볼 수 있습니다.
    $ kubectl get pod -A

    —master kubectl get po -A NAMESPACE efault efault ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx u e—sys em kube—system kube—system kube—system kube—system kube—system kube—system kube—s stem NAME ngi nx—pod node ort—test -75db4b4c6-9h2vz anw a—— ep oy— i ngress—ngi nginx-7c45b84548-j56r6 ngi nginx—p1us—7fb68ccf7d—m2fq4 ngi nx1—6cb8ddbb6d—4ppcx nodeport—test—7f45fcc86c—f4cbc nodeport—test—http—7d5574649—8qw7x post—test—deploy—575bbccd78—cpp5m core ns— c coredns—5c98db65d4—mxn26 etcd—spsd—master kube—api kube—controller—manager—spsd pd5 kube—proxy—x9ks2 kube—scheduler—s sd—master —master READY 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 STATUS Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng RESTARTS 2 2 22 36 589 7 5 576 AGE l@ld 116d 41d 12d 165d 165d 165d 165d 41d 13d 19d 165d 165d 2@1d 2@1d 2@1d 15@d 157d 2@1d

    - 현재 실행중인 컨테이너 리스트

    $ docker ps -a 

    [root@spsd—master CONTAINER ID ES flea8dd86578 docker ps IMAGE 7b4d4985877a COMMAND b38@377f83e5 CREATED 3 hours cd 589 3 hours 12 days 12 days 13 days 13 days STATUS PORTS _kube—contr011er—manager_kube—contr011er—manager—spsd—master_kube—system_b7837ba4ce6@657e79295973@962f 2268add36f12 a8444dcfdcef 196d53938faa b38@377f83e5 "kube—scheduler ——bi2' _ 576 "python server. py" _ ngress—ngi nx_336cbfd8—fab2—43e8—9452—1c@@9879b582_@ k8s. gcr. io/pause:3.1 [pause" _ ngress—ngi nx_336cbfd8—fab2—43e8—9452—1c@@9879b582_@ 3 hours 3 hours 12 days 12 days 13 days 13 days 84d127166b9f 713aa142e44f 891fd2dc7d23 c88767513716 3@e186c6d2d4 45b33aee885f _ _ ngress—ngi k8s. gcr. io/pause:3.1 _ POD _ ngress—ngi b38@377f83e5 _ _ ngress—ngi k8s. gcr. io/pause:3.1 _ POD _ ngress—ngi -e5@8 soap—test—i eb516548c18@ _coredns_coredns—5c98db65d4—mxn26_kube—system_ae66dcb@ 36fbb@1965fd eb516548c18@ "python post _ server / pause" "python server. py" —47c4—9ebe—ef3e973d62cc @ [pause" -ef3e973d62cc @ /bin/bash" "/coredns —conf /etc2' "/coredns —conf /etc2' _coredns_coredns—5c98db65d4—ghfr5_kube—system_e@c798bc 2ebc6bec@cb3 c81971987f@4 -32a6-4a45-98c@-aef7d41d6caa 2 "kube—apiserver 36 "etcd ——advertise acL" 2 2 4 5 5 5 5 weeks weeks weeks weeks weeks weeks weeks ago ago ago ago ago ago ago ago ago ago ago ago ago Up Up Up Up Up Up Up Up Up Up Up kube—api server _kube—api _kube—system_ 5b6bc41@bd67 2c4adeb21b4f 2 2 4 5 5 5 5 weeks weeks weeks weeks weeks weeks weeks  

    --중략--

    - docker 데몬 재 구동
    k8s 정책에 의해 docer 데몬을 내리기 전에 kubelet 데몬을 내리는 것을 권장합니다. 
    $ systemctl stop kubelet.service && systemctl stop docker.service && systemctl start docker.service && systemctl start kubelet.service 
    
    데몬이 내려가면 컨테이너들이 모두 down 상태가 되며 컨테이너 리스트와 파드 목록이 없어지는 모습을 볼 수 있습니다. 
    $ watch -n1 docker ps  

    Every 2.@s: docker ps Cannot connect to the Docker daemon at unix:///var/run/docker .sock. Is the docker daemon running?  
    이후 docker 데몬이 정상적으로 재 시작되고 docker-server와 kubernetes-api-server 컨테이너가 정상화 되며
    리스트가 출력되고 컨테이너/파드가 재 시작 되었음을 확인할 수 있습니다.

    Every 2.@s: docker CONTAINER ID 46@14d762dd2 f579782af1c3 f2@3a738b441 ee5889c@3db3 @e129aab67bd 4b3cc1@7642f 59e@d13e95ac b531feb4e9f7 e9bc584fb65@ ps IMAGE NAMES k8s. gcr. io/pause:3.1 COMMAND [pause" k8s_POD_nginx1—6cb8ddbb6d—4ppcx_ingress—nginx_123eab55—435a—45ff—a845—571eaf5@ea 9 6 7b4d4985877a k8s_kube—contr011er—manager_kube—contr011er—manager—spsd—master_kube—system_b783 CREATED 1 second ago 5 seconds ago STATUS Up Less than a seco d Up 4 seconds 590 196d53938faa "kube—scheduler ——bi2' k8s_kube—schedu1er_kube—schedu1er—spsd—master_kube—system_37bbbfb82a966a388adac3 c81971987f@4 k8s_kube—api 2c4adeb21b4f "kube—apiserver ——acL" "etcd ——advertise—cL" k8s_etcd_etcd—spsd—master_kube—system_714be7c5bfcac1ab426bf58e14@df6da_23 k8s. gcr. io/pause:3.1 / pause" k8s_POD_kube—contr011er—manager—spsd—master_kube—system_b7837ba4ce6@657e79295973 5 seconds ago 8f32b758f 577 6 seconds ago c6282@ab5 37 6 seconds ago 7 seconds ago 962f2cd 22 k8s. gcr. io/pause:3.1 / pause" k8s_POD_kube—schedu1er—spsd—master_kube—system_37bbbfb82a966a388adac318f32b758f k8s. gcr. io/pause:3.1 k8s. gcr. io/pause:3.1 / pause" / pause" 7 2 7 2 7 4 seconds ago seconds ago seconds ago months ago Up Up Up Up Up Up 5 5 5 5 5 6 6 seconds seconds seconds seconds seconds seconds seconds k8s_POD_etcd—spsd—master_kube—system_714be7c5bfcac1ab426bf58e14@df6da_22 repo. sparkli ngsoda. i o : ngsoda/ nexus3 : 3.29.2 / opt/ sonatype/ stare" 29 seconds

    NAMESPACE default default default -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx -1 ngress—ngn nx kube—system kube—system kube—system kube—system kube—system kube—system kube—system kube—system NAME nfs—pod—59695f85cc—mpfmt ngi nx—pod nodeport—test—75db4b4c6—9h2vz hanwha——dep10y—57df679dfd—w22ph i ngress—ngi nx—control nginx-7c45b84548-j56r6 ngi nginx—p1us—7fb68ccf7d—m2fq4 ngi nx1—6cb8ddbb6d—4ppcx nodeport—test—7f45fcc86c—f4cbc nodeport—test—http—7d5574649—8qw7x post—test—deploy—575bbccd78—cpp5m soap—test—deploy—64cc975c6b—fq711 coredns—5c98db65d4—ghfr5 coredns—5c98db65d4—mxn26 etcd—spsd—master kube—api kube—controller—manager—spsd pd5 kube—proxy—x9ks2 kube—scheduler—spsd—master —master READY 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 STATUS Completed Completed Completed Runni ng Runni ng Completed Completed Completed Completed Completed Completed Runni ng Runni ng Completed Runni ng Runni ng Runni ng Runni ng Completed Runni ng Runni ng

    NAMESPACE default default default -1 ngress—ngn nx -1 ngress—ng-l nx -1 ngress—ng-l nx -1 ngress—ng-l nx -1 ngress—ng-l nx -1 ngress—ng-l nx -1 ngress—ng-l nx -1 ngress—ng-l nx -1 ngress—ng-l nx -1 ngress—ng-l nx kube—system kube—system kube—system kube—system kube—system kube—system kube—system kube—system NAME nfs—pod—59695f85cc—mpfmt ngi nx—pod nodeport—test—75db4b4c6—9h2vz hanwha——dep10y—57df679dfd—w22ph i ngress—ngi nginx-7c45b84548-j56r6 ngi nginx—p1us—7fb68ccf7d—m2fq4 ngi nx1—6cb8ddbb6d—4ppcx nodeport—test—7f45fcc86c—f4cbc nodeport—test—http—7d5574649—8qw7x post—test—deploy—575bbccd78—cpp5m soap—test—deploy—64cc975c6b—fq711 coredns—5c98db65d4—ghfr5 coredns—5c98db65d4—mxn26 etcd—spsd—master kube—api kube—controller—manager—spsd pd5 kube—proxy—x9ks2 kube—scheduler—spsd—master —master READY 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 1/1 STATUS Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng Runni ng



마무리


아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300