K8s & Docker

[K8s] kubectl 커맨드

SongMinu 2024. 10. 1. 22:50
728x90

kubectl 커맨드의 기본

kubectl 커맨드의 기본 구조는 다음과 같이 세 부분으로 구성된다.

  1. 커맨드로 동작을 지정
  2. 리소스 타입과 이름으로 대상이 되는 오브젝트를 지정
  3. 옵션

kubectl <command> <resource type> [name] [option]

커맨드

커맨드 사용 예 개요

get kubectl get -f <매니페스트|디렉터리> get은 지정한 오브젝트의 목록을 한 줄에 하나씩 출력
kubectl get <리소스 타입>
kubectl get <리소스 타입> <이름>
kubectl get <리소스 타입> <이름> <옵션>
describe kubectl discribe -f <매니페스트|디렉터리> get보다 더 자세한 정보를 출력
kubectl discribe <리소스 타입>
kubectl discribe <리소스 타입> <이름>
kubectl discribe <리소스 타입> <이름> <옵션>
apply kubectl apply -f <매니페스트> 매니페스트에 기술된 오브젝트가 존재하지 않으면 생성하고, 존재하면 변경
create kubectl create -f <파일명> 매니페스트에 기술된 오브젝트를 생성, 이미 있는 경우에는 에러를 반환
delete kubectl delete -f <파일명> 매니페스트에 기술된 오브젝트를 삭제
kubectl delete <리소스타입> <이름>
config kubectl config get-contexts 접속 대상이되는 콘텍스트(K8s 클러스터, 네임스페이스, 유저)의 목록을 출력하거나 선택
kubectl config use-context <콘텍스트명>
exec kubectl exec -it <파드명> [-c 컨테이너명] <커맨드> 컨테이너에 대화형으로 커맨드를 실행.
파드 내에 컨테이너가 여러 개 있는 경우 [-c]로 컨테이너명을 지정.
컨테이너명은 kubectl get describe <파드명>으로 확인 가능.
run kubectl run <이름> —image=<이미지명> 파드 실행
logs kubectl logs <파드명> [-c 컨테이너명] 컨테이너의 로그 표시

리소스 타입

파드 관련 리소스 타입

리로스 타입(생략형) 이름 오브젝트 개요

pod(po) 파드 컨테이너의 최소 기동 단위로, 기동 시 파드 네트워크상의 IP주소를 할당받으며, 한 개 이상의 컨테이너를 내포
poddisruptionbudget(pdb) 파드 정지 허용 수 파드의 개수가 지정한 개수 이하가 되지 않도록 디플로이먼트, 스테이트풀셋, 레플리카셋, 레플리케이션 컨트롤러의 동작을 제어

서비스 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

service(svc) 서비스 파드를 클라이언트에 공개
endpoint(ep) 엔드포인트 서비스를 제공하는 파드의 IP주소와 포트를 관리
ingress(ing) 인그레스 서비스 공개, TLS 암호, 세션 유지, URL 매핑 기능을 제공

컨트롤러 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

deployment(deploy) 디플로이먼트 파드의 레플리카 수, 자기 회복, 롤아웃, 롤백 등을 제어하는 컨트롤러
replicaset(rs) 리플리카셋 파드의 레플리카 수를 제어하는 컨트롤러로, 디플로이먼트와 연계하여 동작
statefulset(sts) 스테이트풀셋 퍼시스턴트 데이터를 보유하는 파드를 제어하는 컨트롤러, 퍼시스턴트 볼륨과 파드를 하나씩 쌍으로 묶어 각 이름에 동일한 일련 번호를 부여하여 관리
job 배치 처리를 수행하는 파드를 관리하는 컨트롤러
cronjob 크론잡 장시적으로 실행되는 배치 처리를 관리하는 컨트롤러
daemonset(ds) 데몬셋 모든 노드에 파드를 배치하는 컨트롤러
replicationcontroller(rc) 레플리케이션 컨트롤러 레플리카셋의 이전 버전
horizontalpodautoscaler(hpa) Horizontal Pod Autoscaler 워크로드에 따라 파드 수를 조절하는 컨트롤러

볼륨 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

persistentvolume(pv) 퍼시스턴트 볼륨 로우 레벨 스토리지 관리
persistentvolumeclaim(pvc) 퍼시스턴트 볼륨 클레임 스토리지 클래스와 용량을 지정해 논리 볼륨의 프로비저닝을 요구
storageclass(sc) 스토리지 클래스 스토리지의 종류

K8s 클러스터의 구성 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

node(no) 노드 K8s 클러스터의 쿼크로드를 실행하는 서버
apiservice API 서비스 마스터가 지원하는 API 서비스를 관리
componentstatues(cs) 컴포넌트 상태 scheduler, controller-manager, etcd-0에 헬스 체크 결과를 보고
controllerrevision 컨트롤러 리비전 컨트롤러의 리비전 관리
event 이벤트 K8s 클러스터에서 발생한 이벤트를 기록하고 표기하기 위한 컨트롤러

컨피그맵과 시크릿 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

configmap(cm) 컨피그맵 설정 파일을 저장
secret 시크릿 패스워드 등 비밀성이 필요한 정보를 저장

네임스페이스 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

namespace(ns) 네임스페이스 K8s 클러스터를 논리적으로 분할해서 사용

역할 기반 액세스 제어(RBAC) 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

serviceaccount(sa) 서비스 어카운트 서비스 어카운트는 파드에서 실행되는 프로세스를 위한 어카운트, 접근 권한을 식별하기 위해 사용
role 일련의 권한을 기술하여 롤을 정의, 롤의 유효 범위는 네임스페이스로 한정됨
rolebinding 롤바인딩 서비스 어카운트와 롤을 바인딩
clusterrole 클러스터 롤 K8s 클러스터 전체에 유효한 룰
clusterrolebinding 클로스터 롤 바인딩 K8s 클러스터 전체에 유효한 클러스터 롤과 서비스 어카운트를 매핑

보안 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

certificatesigningrequest(csr) 루트 인증서 서명 요구 인증 기관(CA)에 인증서 서명 요구 작성
networkpolicies(netpol) 네트워크 폴리시 네임스페이스 사이의 네트워크 접근 제어
podsecuritypoliceies(psp) 파드 시큐리티 폴리시 파드 시큐리티 관련 항목의 기본값 설정

자원 관리 관련 리소스 타입

리소스 타입(생략형) 이름 오브젝트 개요

limitrange(limits) limit range 네임스페이스 내 컨테이너의 CPU와 메모리 요구값과 상한 값의 기본값 설정
resourcequota(quota) resource quota 네임스페이스별 CPU와 메모리 요구량, 상한값 설정

옵션

옵션 개요

-n 네임스페이스명 조작 대상을 지정된 네임스페이스로 한정
—all-namespaces -A(v1.14부터) 모든 네임스페이스의 오브젝트를 대상으로 함
-o=yaml YAML 포맷으로 API 오브젝트를 표시
-o=wide 추가 정보 표시(파드의 IP주소, 배치된 노드 이름 등)
-o=json JSON 형식으로 API 오브젝트를 표시
-o=custom-columns=<spec> 항목을 지정해서 목록 표시
-o=custom-columns-file=<file> 템플릿 파일로 출력할 컬럼 지정
-o=jsonpath=<template> jsonpath에 일치하는 목록 표시
-o=jsonpath-file=<filename> jsonpath 형식의 템플릿 파일로 출력할 내용 지정
반응형

'K8s & Docker' 카테고리의 다른 글

[Docker] docker 커맨드  (5) 2024.10.01