본문 바로가기
Kubernetes(쿠버네티스)

[Kubernetes] Ch1. API 리소스와 Kubectl (2)

by 잭피 2022. 11. 19.

매니페스트 파일 설계

1개의 매니페스트 파일에 여러 리소스를 정의하거나 여러 매니페스트 파일을 동시에 적용할 수 있다

실행 순서를 정확하게 지켜야 하거나 리소스 간 결합도를 높이고 싶다면 1개의 매니페스트를 사용하는 것이 좋다

하지만 공통으로 사용하는 설정 파일이나 패스워드 등은 여러 리소스에서 사용되는 경우 별도 매니페스트로 분리하는 것이 좋다

어노테이션과 레이블

어노테이션

시스템 구성 요소가 사용하는 메타데이터

metadata.annotations로 설정

쉽게 설명하면, 리소스에 대한 메모 같은 것이다

3가지 용도로 사용된다

  1. 시스템 구성 요소를 위한 데이터 저장
  2. 모든 환경에서 사용할 수 없는 설정
  3. 정식으로 통합되기 전의 기능을 설정

레이블

리소스 관리에 사용하는 메타데이터

metadata.labels에 설정할 수 있는 메타데이터

쉽게 설명하면, 리소스를 구분하기 위한 정보

2가지 용도로 사용

  1. 개발자가 사용하는 레이블
  2. 개발자가 많은 리소스를 효율적으로 관리하는 데 유용하게 사용한다 (필터링)
  3. 시스템이 사용하는 레이블(프로젝트, 애플리케이션 종류, 애플리케이션 버전, 환경)
  4. 처음부터 레이블 지정할 정책을 정하고, 몇 가지 레이블을 지정해두는 것이 좋다
# 레이블 부여
kubectl label pods sample-pod label3=val3

# 레이블이 app=payment인 파드 표시 (-L은 해당 레이블 표시)
kubectl get pods -l app=payment -L app

# 모든 레이블 표시하고 파드 목록 출력
kubectl get pods --show-labels

Prune을 사용한 삭제: —prune 옵션

kubectl apply 명령어 실행 시, 매니페스트에서 삭제된 리소스를 감지하여 자동으로 삭제하는 기능을 구현할 수 있다

edit

kubectl edit 명령어를 사용하면 편집기상에서 변경 작업을 할 수 있음

리소스 일부 정보 업데이트: set

kubectl set 명령어를 사용하여 간단한 동작 상태를 변경할 수 있다

(env, image, resources, selector, serviceaccount, subject)

kubectl set image pod sample-pod nginx-container=nginx:1.16

비교 출력 : diff

로컬 매니페스트와 쿠버네티스 등록 정보 비교 출력을 할 수 있다

kubectl diff -f pod.yaml

사용 가능한 리소스 종류의 목록 가져오기: api-resources

kubectl api-resources

리소스 정보 가져오기: get

# 파드 목록 표시
kubectl get pods
# 특정 파드 정보 표시
kubectl get pods sample-pod
# 파드 목록 표시 (상세히)
kubectl get pods -o wide
# yaml 형식으로 파드 상세 정보 목록 표시
kubectl get pods -o yaml 
# yaml 형식으로 특정 파드의 상세 정보 출력
kubectl get pods -o yaml pod

# 노드 목록 표시
kubectl get nodes
# 모든 종류 리소스 표시
kubectl get all

# --watch 옵션으로 리소스 상태의 변화가 있을 때 결과를 출력
kubectl get pods --watch

리소스 상세 정보 : describe

kubectl describe pod sample-pod
kubectl describe node <node-name>

실제 리소스 사용량 확인: top

kubectl top node
#파드별 리소스 사용량 확인
kubectl -n kube-system top pod

컨테이너 명령어 실행 : exec

kubectl exec -it sample-pod -- /bin/bash

컨테이너 로그 확인 : logs

# 파드 내 컨테이너 로그 출력
kubectl logs sample-pod
# 실시간 로그 출력
kubectl logs -f sample-pod

댓글