kubectl 커맨드의 기본
쿠버네티스 클러스터에게 명령을 내릴 때는 kubectl을 사용한다.
kubectl 커먼대의 기본 구조는 아래와 같이 세 부분으로 구성된다.
kubectl <1. 커맨드> <2. 리소스 타입> [이름] [3. 옵션]
- 커맨드로 동작을 지정하고
- 리소스 타입과 이름으로 대상이 되는 오브젝트를 지정한 뒤
- 옵션을 지정
1. 커맨드
get
지정한 오브젝트의 목록을 한 줄에 하나씩 출력
- kubectl get -f <매니페스트 | 디렉터리>
- kubectl get <리소스타입>
- kubectl get <리소스타입> <이름>
- kubectl get <리소스타입> <이름>
describe
get 보다 자세한 정보를 출력
- kubectl describe -f <매니페스트 | 디렉터리>
- kubectl describe <리소스타입>
- kubectl describe <리소스타입> <이름>
- kubectl describe <리소스타입> <이름>
apply
매니페스트에 기술된 오브젝트가 존재하지 않으면 생성하고, 존재하면 변경
- kubectl apply -f <매니페스트>
create
매니페스트에 기술된 오브젝트를 생성
이미 있는 경우엔 에러 반환
- kubectl create -f <파일명>
delete
매니페스트에 기술된 오브젝트를 삭제
- kubectl delete -f <파일명>
- kubectl delete <리소스타입> <이름>
config
접속 대상이 되는 콘텍스트(클러스터, 네임스페이스, 유저)의 목록을 출력하거나 선택
- kubectl config get-contexts
- kubectl config use-context <콘텍스트명>
exec
컨테이너의 대화형으로 커맨드를 실행, 파드 내에 컨테이너가 여러 개 있는 경우 [-c]로 컨테이너명을 지정
컨테이너명은 'kubectl get describe <파드명>'으로 확인 가능
- kubectl exec -it <파드명> [-c 컨테이너명] <커맨드>
run
파드를 실행
- kubectl run <이름> --image=<이미지명>
logs
컨테이너의 로그 표시
- kubectl logs <파드명> [-c 컨테이너명]
2. 리소스 타입
파드 관련 리소스 타입
pod(po) - 파드
컨테이너의 최소 기동 단위로, 기동 시 파드 네트워크상의 IP 주소를 할당받으며, 한 개 이상의 컨테이너를 내포
poddisruptionbudget(pdb) - 파드 정지 허용 수
파드의 개수가 지정한 개수 이하가 되지 않도록 디플로이먼트, 스테이트풀셋, 리플리카셋, 레플리케이션 컨트롤러의 동작을 제어
서비스 관련 리소스 타입
service(svc) - 서비스
파드를 클라이언트에 공개
endpoints(ep) - 엔드포인트
서비스를 제공하는 파드의 IP 주소와 포트를 관리
ingress(ing) - 인그레스
서비스 공개, TLS 암호, 세션 유지, URL 매핑 기능을 제공
컨트롤러 관련 리소스 타입
deployment(deploy) - 디플로이먼트
파드의 레플리카 수, 자기회복, 롤아웃, 롤백 등을 제어하는 컨트롤러
replicaset(rs) - 리플리카셋
파드의 리플레카 수를 제어하는 컨트롤러로, 디플로이먼트와 연계하여 동작
statefulset(sts) - 스테이트풀셋
퍼시스턴트 데이터를 보유하고 파드를 제어하는 컨트롤러, 퍼시스턴트 볼륨과 파드를 하나씩 쌍으로 묶어 각 이름에 동일한 일련 번호를 부여하여 관리
job - 잡
배치 처리를 수행하는 파드를 관리하는 컨트롤러
cronjob - 크론잡
정기적으로 실행되는 배치 처리를 관리하는 컨트롤러
daemonset(ds) - 데몬셋
모든 노드에 파드를 배치하는 컨트롤러
replicationcontroller(rc) - 리플리케이션 컨트롤러
파드의 레플리카 수를 제어하는 컨트롤러, 레플리카셋의 이전 버전
horizontalpodautoscaler - Horizontal Pod Autoscaler
워크로드에 따라 파드 수를 조절하는 컨트롤러
볼륨 관련 리소스 타입
persistentvolume(pv) - 퍼시스턴트 볼륨
로우 레벨 스토리지 관리
persistentvolumeclaim(pvc) - 퍼시스턴트 볼륨 클레임
스토리지 클래스와 용량을 지정해서 논리 볼륨에 프로비저닝을 요구
storageclass(sc) - 스토리지 클래스
스토리지의 종류
쿠버네티스 클러스터의 구성 관련 리소스 타입
node(no) - 노드
쿠버네티스 클러스터의 워크로드를 실행하는 서버
apiservice - API 서비스
마스터가 지원하는 API 서비스를 관리
componentstatuses(cs) - 컴포넌트 상태
scheduler, controller-manager, etcd-0에 헬스체크 결과를 보고
controllerrevision - 컨트롤러 리비전
컨트롤러의 리비전 관리
event - 이벤트
쿠버네티스 클러스터에서 발생한 이벤트를 기록하고 표시하기 위한 컨트롤러
컨피그맵과 시크릿 관련 리소스 타입
configmap(cm) - 컨피그맵
설정 파일을 저장
secret - 시크릿
패스워드 등 비밀성이 필요한 정보를 저장
네임스페이스 관련 리소스 타입
namespace(ns) - 네임스페이스
쿠버네티스 클러스터를 논리적으로 분할해서 사용
역활 기반 엑세스 제어(RBAC) 관련 리소스 타입
serviceaccount(sa) - 서비스 어카운트
파드에서 실행되는 프로세스를 위한 계정, 접근 권한을 식별하기 위해 사용
role - 롤
일련의 권한을 기술하여 롤을 정의
롤의 유효범위는 네임스페이스로 한정됨
rolebinding - 롤바인딩
서비스 어카운트와 롤을 바인딩
clusterrole - 클러스터 롤
쿠버네티스 클러스터 전체에 유요한 룰
clusterrolebinding - 클러스터 롤 바인딩
쿠버네티스 클러스터 전체에 유효한 클러스터 롤과 서비스 어카운트를 매핑
보안 관련 리소스 타입
certificatesigningrequest(csr) - 루트 인증서 서명 요구
인증 기관(cA)에 인증서 서명 요구 작성
networkpolicies(netpol) - 네트워크 폴리시
네임스페이스 사이에 네트워크 접근 제어
podsecuritypolicies(psp) - 파드 시큐리티 폴리시
파드 시큐리티 관련 항목의 기본값 설정
자원 관리 관련 리소스 타입
limitrange - limit range
네임스페이스 내 컨테이너의 CPU와 메모리 요구값과 상한값의 기본값 설정
resourcequota(quota) - resource quota
네임스페이스별 CPU와 메모리 요구량, 상한값 설정
3. 옵션
-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 형식의 템플릿 파일로 출력할 내용 지정
참고
'Docker & Kubernetes' 카테고리의 다른 글
컨테이너 다루기(1/2) (0) | 2021.11.25 |
---|---|
컨테이너의 생명 주기와 도커 커맨드 (0) | 2021.11.25 |
도커 커맨드 명령어 시트 (0) | 2021.11.24 |
컨트롤러의 기본 (0) | 2021.11.24 |
서비스의 기본 (0) | 2021.11.23 |