Cloud Native/K8s

k8s 실전: 리소스 업데이터 및 기본 조작 명령어

lys4321 2026. 2. 23. 23:58

kubectl set

  • 애플리케이션 리소스 수정을 위한 전용 명령어
  • 주로 Pod 을 자동 생성하는 리소스에 사용

    kubectl set env [옵션]

  • Pod Template의 환경변수 수정 시 사용하는 명령어
  • 주로 사용되는 옵션
    • -f
      • 파일명 지정 시
    • --selector
      • 셀렉터 태그 지정 시
    • --all
    • --containers
      • 특정 컨테이너 지정 시
    • --env
      • 추가/변경할 환경변수
    • --from
      • configmap, secret 등을 수정 시

        kubectl set image <리소스 명> [옵션]

  • Pod template의 이미지 수정 시 사용하는 명령어
  • 주로 사용되는 명령어
    • f
    • --selector
    • --all
    • --containers
    • --dry-run

      kubectl set subject <리소스 명> [옵션]

  • 권한 관리(RBAC) 대상(Subject)을 추가하거나 변경할 때 사용
  • 주로 사용되는 옵션
    • -user
      • 사용자 이름을 추가 시
    • --group
      • 사용자 그룹을 추가 시
    • -z
      • 특정 서비스 어카운트를 추가 시

        kubectl set resources <리소스 명> [옵션]

  • 자원 할당량 조절은 제한(Limits)과 요청(Requests) 두 가지 축으로 나뉩니다.
  • 주로 사용되는 명령어
    • --limits
      • 컨테이너가 사용할 수 있는 최대 자원량 제한 시
    • --requests
      • 컨테이너가 실행되기 위해 최소로 필요한 자원량 설정 시
    • -c
      • 특정 컨테이너의 리소스만 변경 시

kubectl apply

  • 파일에 적어둔 리소스 설정을 클러스터에 적용하는 명령어
  • 리소스가 없다면 생성, 있다면 수정
  • 파일을 지정해 사용 시: kubectl apply -f <yaml 파일명>
  • 디렉토리를 지정해 사용 시: kubectl apply -k <kustomization.yaml파일이 있는 경로>
  • 주로 사용되는 옵션
    • --dry-run=client
      • 실제로 반영하지 않고 오류가 없는지만 미리 확인
    • --server-side
      • 클라이언트가 아닌 서버에만 변경 사항을 적용
    • -R (--recursive)
      • 폴더 안의 하위 폴더에 있는 모든 YAML까지 일괄 적용
    • -o (--output)
      • 결과를 yaml이나 json 형태로 출력해서 상세 설정을 확인합니다.
    • --prune
      • 파일에서 삭제된 리소스를 실제 클러스터에서도 자동으로 삭제
    • --wait
      • 리소스가 완전히 생성되거나 Ready 상태가 될 때까지 터미널을 종료하지 않고 기다림

kubectl patch

  • k8s 리소스의 일부 필드만 수정하는 명령어
  • 파일을 지정해 사용 시: kubectl patch -f <yaml 파일명>
  • 타입명과 리소스 이름 지정 시: kubectl patch <리소스 종류> <리소스 명>
  • 패치의 종류
    • strategic merge patch
      • 리스트(List) 구조에서 기존 데이터를 지우지 않고 새 데이터를 추가할 때 사용
    • merge patch
      • 일반 JSON 병합이며, 동일한 필드가 있으면 덮어쓰기
    • JSON patch
      • 특정 필드 삭제나 정교한 작업이 필요할 때 사용

kubectl replace -f <yaml 파일명> [옵션]

  • 리소스를 전체 교체하는 명령어, 전체라는 의미는 일부 값만 넣는게 아닌 전체 YAML파일로 넣어야한다는 의미
  • 주로 사용되는 옵션
    • --force: (매우 중요) 리소스를 즉시 삭제하고 새로 생성합니다. 일반적인 방식(PATCH)으로 수정이 안 되는 필드를 강제로 고칠 때 씁니다. Tistory
    • --cascade
      • 리소스를 삭제하고 다시 만들 시, 하위 리소스 처리법을 결정
        • background, foreground, orphan
    • --dry-run=client
      • 실제로 적용하지 않고 문법이나 교체 가능 여부를 확인
    • -R (--recursive)
      • 디렉토리 내의 모든 하위 폴더에 있는 파일을 교체
    • -o (--output)
      • 교체된 결과 리소스를 yaml이나 json 형식으로 출력
    • --grace-period
      • 리소스를 종료 시, 기다려주는 초 지정

kubectl diff -f <yaml파일 명> [옵션]

  • 현재 클러스터에 적용되어 있는 리소스의 실제 상태와 JSON/YAML 파일의 상태를 비교하는 명령어
  • 비교를 위한 것이기 때문에 실제 적용은 하지 않는다.(CI/CD용 사전 검증 확인용)
  • 변경상태는 코드로 구분
    • 0(변경 없)
    • 1(변경 유)
  • 주로 사용되는 옵션
    • --concurrency
      • 여러 리소스 병렬로 diff 시, 병렬할 개수
    • --field-manager
      • SSA(Server-Side Apply)에서 소유권 기록 시, 사용하는 매니저 이름
    • --force-conflicts
      • true 지정 시, 서버사이드 적용 시 충돌이나도 강제로 diff
      • 실제 적용은 아님
    • --recursive
    • --show-managed-field
      • k8s managedFields를 diff에 포함할지

'Cloud Native > K8s' 카테고리의 다른 글

k8s 실전: 트러블슈팅 실전  (0) 2026.02.24
k8s 실전: 앱 배포 및 스케일링 실전  (0) 2026.02.24
k8s 실전: 리소스 관련 명령어  (0) 2026.02.23
k8s 이론: 스케줄링  (0) 2026.02.23
k8s 이론: 보안  (0) 2026.02.23