[K8s] Kubernetes Pod를 다시 시작하는 방법

이 문서는 Kubernetes v1.15 이상에 적용됩니다.

Kubernetes K8s라고도 하는 는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 시스템입니다.

애플리케이션을 구성하는 컨테이너를 논리 단위로 그룹화하여 쉽게 관리하고 검색할 수 있습니다. 하지만 컨테이너에 문제가 발생하면 어떻게 될까요? 이 경우 빠르고 쉽게 다시 시작할 수 있는 방법이 필요할 수 있습니다.

Kubernetes Pods 일반적으로 이를 대체할 새 배포가 있을 때까지 실행됩니다. 따라서 단일 포드를 다시 시작하는 간단한 방법이 없습니다.

하나의 컨테이너가 실패하면 다시 시작하는 대신 교체됩니다.

포드 옵션 다시 시작



이 문서에서 다룰 몇 가지 사용 가능한 옵션이 있습니다.
  • ReplicaSet에서 유지해야 하는 포드 수를 나타내는 복제본 수를 축소하여 효과적으로 포드를 제거한 다음 다시 확장
    다운타임 발생
  • 단일 포드를 삭제하여 K8s에서 강제로 다시 생성
    가동 중지 시간이 발생할 수 있습니다.
  • 롤아웃 시작(롤링 재시작 방식)
    다운타임 없음

  • 따라서 각 옵션을 약간 자세히 살펴보고 필요에 따라 각 옵션이 적합할 수 있음을 명심하십시오. 몇 가지 질문: 라이브 환경입니까? 새로운 설정인가? 앱을 감당하고 중단할 수 있습니까?

    1. 복제본 변경



    Pod를 다시 시작하는 옵션은 먼저 배포 복제본의 수를 0으로 조정하여 효과적으로 "종료"하는 것입니다.

    kubectl scale deployment <name> --replicas=0
    


    이 경우 K8s는 더 이상 필요하지 않은 모든 복제본을 제거합니다.

    그런 다음 원하는 숫자로 다시 크기를 조정합니다.

    kubectl scale deployment <name> --replicas=<desired_number>
    


    그러면 모든 현재 포드가 중지 및 종료되고 해당 위치에 새 포드가 예약됩니다.

    포드를 "종료"하기 때문에 이 옵션을 사용하면 사용 가능한 컨테이너가 없으므로 가동 중지 시간이 발생합니다. 따라서 프로덕션 시스템에서 실행 중인 경우 롤링 다시 시작 방법이 더 나은 접근 방식입니다.

    새로 예약된 포드의 이름은 이전 포드의 이름과 다릅니다.

    다음 명령을 실행하여 팟(Pod)의 새 이름을 가져오십시오.

    kubectl get pods -n <namespace>
    


    2. 포드 삭제



    먼저 다음 명령을 실행하여 네임스페이스의 모든 포드를 가져옵니다.

    kubectl get pods -n <namespace>
    


    그런 다음 다음 명령을 실행하여 단일 포드를 삭제합니다.

    kubectl delete pod <pod_name> -n <namespace>
    


    K8은 변경 사항과 상태 차이를 기록하고 원하는 상태가 달성될 때까지 새 포드를 예약합니다.

    3. 롤링 리스타트



    버전 1.15 K8s부터 이제 배포의 롤링 재시작을 실행할 수 있습니다.
    참고: kubectl 버전을 업데이트해야 할 뿐만 아니라 클러스터도 이 버전에서 실행되고 있는지 확인해야 합니다.

    롤링 다시 시작은 다음 명령을 실행하여 배포에서 순서대로 모든 포드를 다시 시작하는 데 사용됩니다.

    kubectl rollout restart deployment -n <yournamespace>
    


    이 명령을 실행한 후 K8s는 배포의 각 포드를 하나씩 종료하고 다시 시작합니다.

    이 작업은 순차적으로 수행되기 때문에 항상 일부 팟(Pod)이 실행 중이므로 애플리케이션 자체를 계속 사용할 수 있으므로 가동 중지 시간이 효과적으로 발생하지 않습니다.

    읽어주셔서 감사하고 이것이 누군가에게 도움이 되기를 바랍니다!

    좋은 웹페이지 즐겨찾기