반응형

목차

  1. 수정 관련 명령어
    1. kubectl scale
    2. kubectl patch
    3. kubectl edit
    4. kubectl label 
    5. kubectl annotate
  2. 컨테이너에서 명령어 실행
    • kubectl exec
  3. 대기 명령어
    • kubectl wait

수정 관련 명령어

kubectl scale

kubectl scale 명령어는 Kubernetes에서 디플로이먼트, 레플리카셋 등의 리소스의 replica 수를 조정할 때 사용하는 명령어입니다. replica 수를 늘리거나 줄이면서 시스템의 부하를 조절할 수 있습니다.

  1. 기본 구조
    kubectl scale deployment [디플로이먼트 이름] --replicas=[수정할 replica 수]

    예시: kubectl scale deployment my-deployment --replicas=3
    (my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정합니다.)

  2. 옵션
    • --current-replicas: 현재 replica 수를 지정합니다. 이 값을 지정하면 --replicas 옵션으로 지정한 값과 함께 replica 수를 변경합니다.

      예시: kubectl scale deployment my-deployment --current-replicas=1 --replicas=3 
      (현재 1개의 replica가 있는 my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정합니다.)

    • --resource-version: 리소스 버전을 지정합니다.

      예시: kubectl scale deployment my-deployment --replicas=3 --resource-version=4 
      (my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, 리소스 버전을 4로 지정합니다.)

    • -n, --namespace: 리소스가 위치한 네임스페이스를 지정합니다.

      예시: kubectl scale deployment my-deployment --replicas=3 -n my-namespace
       (my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, my-namespace 네임스페이스에 위치한 리소스를 조정합니다.)

    • --timeout: replica 수를 조정할 때, 타임아웃을 설정합니다.

      예시: kubectl scale deployment my-deployment --replicas=3 --timeout=60s 
      (my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, 타임아웃을 60초로 설정합니다.)

    • --wait: replica 수를 조정한 후 변경이 완료될 때까지 대기합니다.
      예시: kubectl scale deployment my-deployment --replicas=3 --wait
      (my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, 변경이 완료될 때까지 대기합니다.)

kubectl patch

kubectl patch 명령어는 Kubernetes 리소스의 일부를 수정하는 명령어입니다. 이 명령어를 사용하면, 리소스의 일부 값을 변경하거나 추가할 수 있습니다.

  1. 기본 구조
    kubectl patch [리소스 종류] [리소스 이름] [수정할 필드]=[새 값]

    예시: kubectl patch deployment my-deployment -p '{"spec":{"replicas":3}}'
    ( my-deployment 이름의 배포의 레플리카 수를 3으로 변경할 수 있습니다.)

  2. 옵션
    • -p, --patch: JSON 포맷으로 수정 내용을 지정합니다.

      예시: kubectl patch deployment my-deployment -p '{"spec":{"replicas":3}}' 
      (my-deployment 이름의 배포의 레플리카 수를 3으로 변경합니다.)

    • --type: 수정 내용의 포맷을 지정합니다. json, merge, strategic 중 하나를 지정할 수 있습니다. 기본값은 strategic입니다.

      예시: kubectl patch deployment my-deployment --type=json -p '[{"op":"replace","path":"/spec/replicas","value":3}]'
      (my-deployment 이름의 배포의 레플리카 수를 3으로 변경합니다. --type=json 옵션을 사용하여 JSON 포맷으로 수정 내용을 지정합니다.)

kubectl edit

kubectl edit 명령어는 Kubernetes 리소스의 구성을 수정하는 명령어입니다. 이 명령어를 사용하면, 기존 리소스의 YAML 구성 파일을 열어 직접 수정할 수 있습니다.

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

    예시: kubectl edit deployment my-deployment
    (my-deployment 이름의 디플로이먼트 리소스의 YAML 구성 파일을 열고 직접 수정할 수 있습니다.)

    * 수정한 후에는 파일을 저장하고 종료하면, Kubernetes API 서버에 변경 내용이 자동으로 적용됩니다.

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

      예시: kubectl edit deployment my-deployment --namespace my-namespace
       (my-namespace 네임스페이스에 속한 my-deployment 이름의 디플로이먼트 리소스의 YAML 구성 파일을 열고 직접 수정할 수 있습니다.)

    • --filename: 파일에서 YAML 구성을 읽어옵니다.

      예시: kubectl edit --filename=my-deployment.yaml
       (my-deployment.yaml 파일에서 디플로이먼트 리소스의 YAML 구성을 읽어와 수정할 수 있습니다.)

    • --output: 출력 형식을 지정합니다.

      예시: kubectl edit deployment my-deployment --output=yaml
       (my-deployment 이름의 디플로이먼트 리소스의 YAML 구성을 편집한 후, YAML 형식으로 출력합니다.)

 


kubectl label 

kubectl label 명령어는 Kubernetes 리소스에 레이블을 추가, 수정 또는 제거하는 명령어입니다. 이 명령어를 사용하면, 리소스를 논리적으로 그룹화하거나 검색할 때 유용한 정보를 리소스에 추가할 수 있습니다.

  1. 기본 구조
    kubectl label [리소스 종류] [리소스 이름] [레이블 이름]=[레이블 값]

    예시: kubectl label pods my-pod app=my-app
    (my-pod 이름의 파드에 app=my-app 레이블을 추가할 수 있습니다.)

  2. 옵션
    • --overwrite: 이미 존재하는 레이블 값을 덮어쓰기 합니다.

      예시: kubectl label pods my-pod app=my-new-app --overwrite
       (my-pod 이름의 파드에 이미 존재하는 app 레이블 값을 my-new-app으로 덮어씁니다.)

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

      예시: kubectl label pods my-pod app=my-app --namespace my-namespace
       (my-namespace 네임스페이스에 속한 my-pod 이름의 파드에 app=my-app 레이블을 추가합니다.)

    • --selector: 레이블을 추가할 리소스를 선택합니다.

      예시: kubectl label pods --selector app=my-app release=beta 
      (app=my-app 레이블을 가진 모든 파드에 release=beta 레이블을 추가합니다.)

kubectl annotate

kubectl annotate 명령어는 Kubernetes 리소스에 주석을 추가, 수정 또는 제거하는 명령어입니다. 이 명령어를 사용하면, 리소스에 부가적인 정보를 추가하거나 메타데이터를 관리할 수 있습니다.

  1. 기본 구조
    kubectl annotate [리소스 종류] [리소스 이름] [주석 이름]=[주석 값]

    예시: kubectl annotate pods my-pod description="This is my pod"
    (my-pod 이름의 파드에 description="This is my pod" 주석을 추가할 수 있습니다.)

  2. 옵션
    • --overwrite: 이미 존재하는 주석 값을 덮어쓰기 합니다.

      예시: kubectl annotate pods my-pod description="This is my new pod" --overwrite
       (my-pod 이름의 파드에 이미 존재하는 description 주석 값을 This is my new pod으로 덮어씁니다.)

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

      예시: kubectl annotate pods my-pod description="This is my pod" --namespace my-namespace 
      (my-namespace 네임스페이스에 속한 my-pod 이름의 파드에 description="This is my pod" 주석을 추가합니다.)


kubectl exec

kubectl exec 명령어는 Kubernetes 파드 내부에서 실행 중인 컨테이너에 명령어를 실행하는 명령어입니다. 이 명령어를 사용하면, 파드 내부에서 작업을 수행하거나 디버깅을 위해 컨테이너 내부로 들어갈 수 있습니다.

  1. 기본 구조
    kubectl exec [옵션] [파드 이름] -- [컨테이너 이름] [명령어]

    예시: kubectl exec my-pod -- ls /app
    (my-pod 이름의 파드 내부에서 /app 디렉토리를 조회할 수 있습니다.)

  2. 옵션
    • --namespace: 파드가 포함된 네임스페이스를 지정합니다.

      예시: kubectl exec my-pod --namespace my-namespace -- ls /app 
      (my-namespace 네임스페이스에 속한 my-pod 이름의 파드 내부에서 /app 디렉토리를 조회할 수 있습니다.)

    • --stdin, -i: 컨테이너의 표준 입력을 연결합니다.

      예시: kubectl exec my-pod -i -- ls /app
       (my-pod 이름의 파드 내부에서 /app 디렉토리를 조회하면서 컨테이너의 표준 입력을 연결합니다.)

    • --tty, -t: TTY 모드를 사용합니다.

      예시: kubectl exec my-pod -t -- bash 
      (my-pod 이름의 파드 내부에서 Bash 셸을 실행하면서 TTY 모드를 사용합니다.)


kubectl wait

kubectl wait 명령어는 특정 리소스가 특정 조건을 만족할 때까지 대기하는 명령어입니다. 이 명령어를 사용하면, 리소스의 상태를 주기적으로 체크하여 지정된 조건이 충족될 때까지 기다릴 수 있습니다.

  1. 기본적인 사용 방법은 다음과 같습니다.
    kubectl wait [리소스 종류] [리소스 이름] --for=[조건] [조건 값]

    예시: kubectl wait pod my-pod --for=condition=Ready
    (my-pod 파드가 Ready 상태가 될 때까지 대기할 수 있습니다.)

  2. 옵션
    • --for: 대기할 조건을 지정합니다.

      예시: kubectl wait pod my-pod --for=condition=Ready 
      (Ready 조건이 충족될 때까지 대기합니다.)

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

      예시: kubectl wait pod my-pod --for=condition=Ready --timeout=60s 
      (Ready 조건이 충족될 때까지 60초 동안 대기합니다.)

    • --namespace: 네임스페이스를 지정합니다.

      예시: kubectl wait pod my-pod --for=condition=Ready --namespace=my-namespace
       (my-namespace 네임스페이스에 있는 my-pod 파드가 Ready 상태가 될 때까지 대기합니다.)

항상 그렇듯 여기 있는 명령어 옵션이 전부가 아니며 --help를 통해 더 다양한 명령어를 찾아보실 수 있습니다.

반응형