반응형

목차

  1. Kubectl rollout
    1. Kubectl rollout status
    2. Kubectl rollout undo
    3. Kubectl rollout history
    4. Kubectl rollout pause
    5. Kubectl rollout resume
  2. Kubectl apply

kubectl rollout

kubectl rollout 명령어는 Kubernetes 클러스터에서 롤아웃 작업을 관리하는 명령어입니다. 이 명령어를 사용하면, 디플로이먼트, 데몬셋, 상태풀셋 등의 리소스에 대한 롤아웃 작업을 수행할 수 있습니다.

  1. kubectl rollout 명령어에는 다양한 하위 명령어가 있으며, 주요 명령어들은 다음과 같습니다.
    • kubectl rollout status: 롤아웃 작업의 상태를 확인합니다.
    • kubectl rollout history: 롤아웃 작업의 이력을 확인합니다.
    • kubectl rollout undo: 롤아웃 작업을 취소하고 이전 버전으로 롤백합니다.
    • kubectl rollout restart: 롤아웃 작업을 재시작합니다.
    • kubectl rollout pause/resume: 롤링 업데이트를 일시 중지하거나 다시 시작합니다.
  2. 기본 구조
    kubectl rollout [하위 명령어] [리소스 종류]/[리소스 이름]

    예시: kubectl rollout status deployment/my-deployment
    my-deployment 디플로이먼트의 롤아웃 상태를 확인할 수 있습니다.

  3. 옵션
    • --revision: 롤아웃 작업에서 사용할 리비전 번호를 지정합니다.

      예시: kubectl rollout undo deployment/my-deployment --to-revision=2
      (my-deployment 디플로이먼트를 2번 리비전으로 롤백합니다.)

    • --dry-run: 실제로 명령어를 실행하지 않고, 실행 결과만 미리 확인합니다.

      예시: kubectl rollout restart deployment/my-deployment --dry-run
      (my-deployment 디플로이먼트를 재시작할 때, 실제로는 실행하지 않고 결과만 미리 확인합니다.)

kubectl rollout status

kubectl rollout status 명령어는 Kubernetes 클러스터에서 롤아웃 작업의 상태를 확인하는 명령어입니다. 이 명령어를 사용하면, 롤아웃 작업이 완료될 때까지 대기하거나, 롤아웃 작업이 중단되었는지 확인할 수 있습니다.

  1. 기본 구조
    kubectl rollout status [리소스 종류]/[리소스 이름]

    예시: kubectl rollout status deployment/my-deployment
    my-deployment 디플로이먼트의 롤아웃 상태를 확인할 수 있습니다.

  2. 옵션
    • --watch: 롤아웃 상태를 실시간으로 확인합니다.

      예시: kubectl rollout status deployment/my-deployment --watch
      (my-deployment 디플로이먼트의 롤아웃 상태를 실시간으로 확인합니다.)

    • --timeout: 대기 시간을 지정합니다. 이 시간을 초과하면 명령어가 종료됩니다.

      예시: kubectl rollout status deployment/my-deployment --timeout=60s 
      (my-deployment 디플로이먼트의 롤아웃이 60초 이내에 완료되지 않으면 명령어가 종료됩니다.)

kubectl rollout undo

kubectl rollout undo 명령어는 Kubernetes 배포를 이전 버전으로 롤백하는 명령어입니다. 이 명령어를 사용하면, 배포를 이전 버전으로 복원할 수 있습니다.

  1. 기본 구조
    kubectl rollout undo [리소스 종류] [리소스 이름]

    예시: kubectl rollout undo deployment/my-deployment
    my-deployment 이름의 배포를 이전 버전으로 롤백할 수 있습니다.

  2. 옵션
    • --to-revision: 롤백할 배포의 리비전 번호를 지정합니다.

      예시: kubectl rollout undo deployment/my-deployment --to-revision=2
       (my-deployment 이름의 배포를 2번 리비전으로 롤백합니다.)

    • --dry-run: 실제로 롤백하지 않고 실행 결과만 확인합니다.

      예시: kubectl rollout undo deployment/my-deployment --dry-run 
      (my-deployment 이름의 배포를 실제로 롤백하지 않고 실행 결과만 확인합니다.)

kubectl rollout history

kubectl rollout history 명령어는 Kubernetes 배포의 이전 롤아웃 기록을 확인하는 명령어입니다. 이 명령어를 사용하면, 배포의 이전 버전들과 그 버전들의 상태를 확인할 수 있습니다.

  1. 기본 구조
    kubectl rollout history [리소스 종류] [리소스 이름]

    예시: kubectl rollout history deployment/my-deployment
    명령어를 실행하여 my-deployment 이름의 배포의 이전 롤아웃 기록을 확인할 수 있습니다.

  2. 옵션
    1. --revision: 특정 리비전의 상세 정보를 확인합니다.

      예시: kubectl rollout history deployment/my-deployment --revision=2 
      (my-deployment 이름의 배포의 2번 리비전의 상세 정보를 확인합니다.)

    2. --namespace: 리소스가 포함된 네임스페이스를 지정합니다.

      예시: kubectl rollout history deployment/my-deployment --namespace my-namespace 
      (my-namespace 네임스페이스에 속한 my-deployment 이름의 배포의 이전 롤아웃 기록을 확인합니다.)

kubectl rollout restart

kubectl rollout restart 명령어는 Kubernetes 클러스터에서 디플로이먼트, 데몬셋, 상태풀셋 등의 리소스를 다시 시작하는 롤아웃 작업을 수행하는 명령어입니다. 이 명령어를 사용하면, 롤아웃 작업을 수행하지 않고도 리소스를 새로 시작할 수 있습니다.

  1. 기본 구조
    kubectl rollout restart [리소스 종류]/[리소스 이름]

    예시: kubectl rollout restart deployment/my-deployment
    my-deployment 디플로이먼트를 다시 시작할 수 있습니다.

  2. 옵션
    • --selector: 라벨 셀렉터를 사용하여 리소스를 선택합니다.

      예시: kubectl rollout restart deployment --selector=app=nginx
       (app=nginx 라벨을 가진 모든 디플로이먼트를 다시 시작합니다.)

kubectl rollout pause

kubectl rollout pause 명령어는 Kubernetes 클러스터에서 디플로이먼트, 데몬셋, 상태풀셋 등의 롤아웃 작업을 일시 중지하는 명령어입니다. 이 명령어를 사용하면, 롤아웃 작업을 일시 중지하여 문제를 진단하고 해결할 수 있습니다.

  1. 기본 구조
    kubectl rollout pause [리소스 종류]/[리소스 이름]

    예시: kubectl rollout pause deployment/my-deployment
    my-deployment 디플로이먼트의 롤아웃 작업을 일시 중지할 수 있습니다.

  2. 옵션
    • --selector: 라벨 셀렉터를 사용하여 리소스를 선택합니다.

      예시: kubectl rollout pause deployment --selector=app=nginx 
      (app=nginx 라벨을 가진 모든 디플로이먼트의 롤아웃 작업을 일시 중지합니다.)

      * 일시 중지된 롤아웃 작업은 kubectl rollout resume 명령어를 사용하여 다시 시작할 수 있습니다. 이 명령어를 사용하면, 롤아웃 작업이 이전 상태에서 재개됩니다.

kubectl rollout resume

kubectl rollout resume 명령어는 Kubernetes 클러스터에서 디플로이먼트, 데몬셋, 상태풀셋 등의 롤아웃 작업을 다시 시작하는 명령어입니다. 이 명령어를 사용하면, 일시 중지된 롤아웃 작업을 다시 시작할 수 있습니다.

  1. 기본 구조
    kubectl rollout resume [리소스 종류]/[리소스 이름]

    예시: kubectl rollout resume deployment/my-deployment
    my-deployment 디플로이먼트의 롤아웃 작업을 다시 시작할 수 있습니다.

  2. 옵션
    • --selector: 라벨 셀렉터를 사용하여 리소스를 선택합니다.

      예시: kubectl rollout resume deployment --selector=app=nginx
       (app=nginx 라벨을 가진 모든 디플로이먼트의 롤아웃 작업을 다시 시작합니다.)

kubectl apply

kubectl apply 명령어는 Kubernetes에서 YAML 또는 JSON 파일로 정의된 리소스를 클러스터에 배포하거나 업데이트할 때 사용되는 명령어입니다. 이 명령어를 사용하면 새로운 리소스를 생성하거나 기존 리소스를 수정할 수 있습니다.

  1. 기본 구조
    kubectl apply -f [파일 경로]

    예시: kubectl apply -f deployment.yaml
    deployment.yaml 파일에 정의된 디플로이먼트 리소스를 클러스터에 배포합니다.

  2. 옵션
    • -f, --filename: 배포할 YAML 또는 JSON 파일의 경로를 지정합니다. 파일 이름이나 디렉토리 이름을 지정할 수 있습니다.

      예시: kubectl apply -f deployment.yaml 
      (deployment.yaml 파일에 정의된 리소스를 배포합니다.)

    • --prune: 새로운 YAML 또는 JSON 파일에 정의되지 않은 기존 리소스를 삭제합니다.

      예시: kubectl apply --prune -f deployment.yaml 
      (deployment.yaml 파일에 정의된 리소스를 배포하면서, 새로운 파일에 정의되지 않은 기존 리소스를 삭제합니다.)

    • --selector: 리소스를 선택하는 레이블 셀렉터를 지정합니다.

      예시: kubectl apply --selector app=nginx -f deployment.yaml 
      (deployment.yaml 파일에 정의된 리소스를 배포하면서, app=nginx 레이블을 가진 기존 리소스를 선택합니다.)

    • -R, --recursive: 디렉토리 내부의 모든 YAML 또는 JSON 파일을 배포합니다.

      예시: kubectl apply -R -f ./deployments 
      (deployments 디렉토리 내부의 모든 YAML 또는 JSON 파일을 배포합니다.)

    • --validate: 배포하기 전 YAML 또는 JSON 파일을 검증합니다.

      예시: kubectl apply --validate=false -f deployment.yaml 
      (YAML 또는 JSON 파일을 검증하지 않고 배포합니다.)

    • --overwrite: 기존 리소스를 덮어쓰기 합니다. --force와 유사하지만, 롤링 업데이트 중에 리소스를 강제로 교체할 때 사용됩니다.

      예시: kubectl apply --overwrite -f nginx-deployment.yaml
      (위 명령어는 nginx-deployment.yaml 파일을 사용하여 Deployment 오브젝트를 생성하거나 수정하되, 이미 존재하는 경우 덮어쓰기(overwrite)를 하라는 옵션을 주는 것입니다.)

    • --force: 기존 리소스를 덮어쓰기 합니다.

      예시: kubectl apply --force -f deployment.yaml
       (deployment.yaml 파일에 정의된 리소스를 클러스터에 배포하면서, 기존 리소스를 덮어씁니다.)

    • --force-conflicts: 리소스 간의 충돌을 해결하기 위해 강제로 덮어쓰기 합니다.

      예시: kubectl apply --force-conflicts -f deployment.yaml
       (deployment.yaml 파일에 정의된 리소스를 클러스터에 배포하면서, 리소스 간의 충돌이 발생하면 강제로 덮어씁니다.)

    • --prune-whitelist: --prune 옵션과 함께 사용되며, 삭제하지 않을 리소스를 지정합니다.

      예시: kubectl apply --prune --prune-whitelist=configmap -f deployment.yaml 
      (deployment.yaml 파일에 정의된 리소스를 배포하면서, configmap 리소스는 삭제하지 않도록 지정합니다.)

    • --dry-run: 배포하지 않고 배포 결과만 미리 확인합니다.

      예시: kubectl apply --dry-run -f deployment.yaml
       (deployment.yaml 파일에 정의된 리소스를 배포하지 않고, 배포 결과만 미리 확인합니다.)

반응형